//Volumetric fog CS 1. Dusk in chapter 1 lake.
//
// Generated by Microsoft (R) HLSL Shader Compiler 10.1
//
//   using 3Dmigoto v0.6.163 on Mon Oct 13 11:25:55 2025
//
//
// Buffer Definitions:
//
// cbuffer cb_post_sky
// {
//
//   float3 incomingLight_g;            // Index:    0.xyz            Components:     3
//   float3 scatteringR_g;              // Index:    1.xyz            Components:     3
//   float3 scatteringM_g;              // Index:    2.xyz            Components:     3
//   float3 extinctionR_g;              // Index:    3.xyz            Components:     3
//   float3 extinctionM_g;              // Index:    4.xyz            Components:     3
//   float3 densityScaleHeight_g;       // Index:    5.xyz            Components:     3
//   float skyHorizonBottomLimit_g;     // Index:    5.w              Components:     1 [unused]
//   float3 sunDirection_g;             // Index:    6.xyz            Components:     3
//   float skyHorizonTopLimit_g;        // Index:    6.w              Components:     1 [unused]
//   float mieG_g;                      // Index:    7.x              Components:     1
//   float distanceScale_g;             // Index:    7.y              Components:     1
//   float planetRadius_g;              // Index:    7.z              Components:     1
//   float atmosphereHeight_g;          // Index:    7.w              Components:     1
//   float sunIntensity_g;              // Index:    8.x              Components:     1 [unused]
//   float skyLutNearOverFarClip_g;     // Index:    8.y              Components:     1 [unused]
//   float skyLutCameraFarClip_g;       // Index:    8.z              Components:     1 [unused]
//   float skyBrightness_g;             // Index:    8.w              Components:     1 [unused]
//
// }
//
// cbuffer cb_post_sky2
// {
//
//   float4x4 skyViewProjInv_g;         // Index:    0 1 2 3          Components:    16
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// samParticleDensityLUT             sampler      NA          NA    0        1
// particleDensityLUT                texture  float2          2d    2        1
// inscatterLUT                          UAV  float4          3d    0        1
// extinctionLUT                         UAV  float4          3d    1        1
// cb_post_sky2                      cbuffer      NA          NA    3        1
// cb_post_sky                       cbuffer      NA          NA    6        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// no Input
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// no Output
cs_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer CB6[8], immediateIndexed
dcl_constantbuffer CB3[4], immediateIndexed
dcl_sampler s0, mode_default
dcl_resource_texture2d (float,float,float,float) t2
dcl_uav_typed_texture3d (float,float,float,float) u0
dcl_uav_typed_texture3d (float,float,float,float) u1
dcl_input vThreadID.xyz
dcl_temps 35
dcl_resource_texture2d (float,float,float,float) t125
dcl_thread_group 8, 8, 1
ld_indexable(texture2d)(float,float,float,float) r25.xyzw, l(0, 0, 0, 0), t125.xyzw
resinfo_indexable(texture3d)(float,float,float,float) r0.xyz, l(0), u0.xyzw
utof r1.xy, vThreadID.xyxx
add r0.xy, r0.xyxx, l(-1.000000, -1.000000, 0.000000, 0.000000)
div r0.xy, r1.xyxx, r0.xyxx
mad r1.xy, r0.xyxx, l(2.000000, -2.000000, 0.000000, 0.000000), l(-1.000000, 1.000000, 0.000000, 0.000000)
mov r1.zw, l(0,0,1.000000,1.000000)

dp3 r0.x, r1.xywx, cb3[3].xywx
mad r26.x, r25.y, r0.x, l(-1.0)
mad r1.x, r25.x, r26.x, r1.x

dp3 r2.x, r1.xywx, cb3[0].xywx
dp3 r2.y, r1.xywx, cb3[1].xywx
dp3 r2.z, r1.xywx, cb3[2].xywx
dp3 r0.x, r1.xywx, cb3[3].xywx
div r0.xyw, r2.xyxz, r0.xxxx
dp4 r2.x, r1.xyww, cb3[0].xyzw
dp4 r2.y, r1.xyww, cb3[1].xyzw
dp4 r2.z, r1.xyww, cb3[2].xyzw
dp4 r1.x, r1.xyzw, cb3[3].xyzw
div r1.xyz, r2.xyzx, r1.xxxx
add r0.xyw, r0.xyxw, -r1.xyxz
dp3 r1.w, r0.xywx, r0.xywx
sqrt r1.w, r1.w
div r0.xyw, r0.xyxw, r1.wwww
ftou r0.z, r0.z
iadd r2.x, r0.z, l(-1)
utof r2.x, r2.x
div r1.w, r1.w, r2.x
mul r2.xyz, r0.xywx, r1.wwww
dp3 r1.w, r2.xyzx, r2.xyzx
sqrt r1.w, r1.w
mul r1.w, r1.w, cb6[7].y
dp3 r0.x, r0.xywx, -cb6[6].xyzx
mad r0.y, r0.x, r0.x, l(1.000000)
mad r2.w, -cb6[7].x, cb6[7].x, l(1.000000)
mul r2.w, r2.w, l(3.000000)
mad r3.xy, cb6[7].xxxx, cb6[7].xxxx, l(2.000000, 1.000000, 0.000000, 0.000000)
add r3.x, r3.x, r3.x
div r2.w, r2.w, r3.x
mul r2.w, r2.w, l(0.0795774683)
dp2 r0.x, r0.xxxx, cb6[7].xxxx
add r0.x, -r0.x, r3.y
log r0.x, r0.x
mul r0.xw, r0.xxxy, l(1.500000, 0.000000, 0.000000, 0.0596831031)
exp r0.x, r0.x
div r0.x, r0.y, r0.x
mul r0.x, r0.x, r2.w
mov r3.xz, l(-0.000000,0,-0.000000,0)
mov r3.y, cb6[7].z
add r4.xyz, r1.xyzx, r3.zyzz
dp3 r0.y, r4.xyzx, r4.xyzx
sqrt r2.w, r0.y
add r2.w, r2.w, -cb6[7].z
div r5.xy, -r2.wwww, cb6[5].xyxx
mul r5.xy, r5.xyxx, l(1.442695, 1.442695, 0.000000, 0.000000)
exp r5.xy, r5.xyxx
rsq r0.y, r0.y
mul r4.xyz, r0.yyyy, r4.xyzx
dp3 r0.y, r4.xyzx, -cb6[6].xyzx
mad r4.x, r0.y, l(0.500000), l(0.500000)
div r4.y, r2.w, cb6[7].w
sample_l_indexable(texture2d)(float,float,float,float) r4.xy, r4.xyxx, t2.xyzw, s0, l(0.000000)
mul r4.yzw, r4.yyyy, cb6[4].xxyz
mad r4.xyz, r4.xxxx, cb6[3].xyzx, r4.yzwy
mul r4.xyz, r4.xyzx, l(-1.442695, -1.442695, -1.442695, 0.000000)
exp r4.xyz, r4.xyzx
mul r6.xyz, r4.xyzx, r5.xxxx
mul r4.xyz, r4.xyzx, r5.yyyy
store_uav_typed u0.xyzw, vThreadID.xyzz, l(0,0,0,1.000000)
store_uav_typed u1.xyzw, vThreadID.xyzz, l(1.000000,1.000000,1.000000,1.000000)
mul r0.y, r1.w, l(0.500000)
mov r7.xy, vThreadID.xyxx
mov r8.w, l(1.000000)
mov r9.w, l(1.000000)
mov r10.xyz, l(0,0,0,0)
mov r11.xyz, l(0,0,0,0)
mov r12.xyz, r6.xyzx
mov r13.xyz, r4.xyzx
mov r5.zw, l(0,0,0,0)
mov r14.xy, r5.xyxx
mov r1.w, l(1)
loop
  uge r2.w, r1.w, r0.z
  breakc_nz r2.w
  utof r2.w, r1.w
  mad r15.xyz, r2.xyzx, r2.wwww, r1.xyzx
  add r15.xyz, r3.xyzx, r15.xyzx
  dp3 r2.w, r15.xyzx, r15.xyzx
  sqrt r3.w, r2.w
  add r3.w, r3.w, -cb6[7].z
  div r14.zw, -r3.wwww, cb6[5].xxxy
  mul r14.zw, r14.zzzw, l(0.000000, 0.000000, 1.442695, 1.442695)
  exp r14.zw, r14.zzzw
  rsq r2.w, r2.w
  mul r15.xyz, r2.wwww, r15.xyzx
  dp3 r2.w, r15.xyzx, -cb6[6].xyzx
  mad r15.x, r2.w, l(0.500000), l(0.500000)
  div r15.y, r3.w, cb6[7].w
  sample_l_indexable(texture2d)(float,float,float,float) r15.xy, r15.xyxx, t2.xyzw, s0, l(0.000000)
  add r15.zw, r14.xxxy, r14.zzzw
  mad r5.zw, r15.zzzw, r0.yyyy, r5.zzzw
  add r15.xy, r15.xyxx, r5.zwzz
  mul r15.yzw, r15.yyyy, cb6[4].xxyz
  mad r15.xyz, r15.xxxx, cb6[3].xyzx, r15.yzwy
  mul r15.xyz, r15.xyzx, l(-1.442695, -1.442695, -1.442695, 0.000000)
  exp r15.xyz, r15.xyzx
  mul r16.xyz, r14.zzzz, r15.xyzx
  mul r17.xyz, r14.wwww, r15.xyzx
  mad r18.xyz, r14.zzzz, r15.xyzx, r12.xyzx
  mad r10.xyz, r18.xyzx, r0.yyyy, r10.xyzx
  mad r15.xyz, r14.wwww, r15.xyzx, r13.xyzx
  mad r11.xyz, r15.xyzx, r0.yyyy, r11.xyzx
  mul r15.xyz, r0.wwww, r10.xyzx
  mul r18.xyz, r0.xxxx, r11.xyzx
  mul r18.xyz, r18.xyzx, cb6[2].xyzx
  mad r15.xyz, r15.xyzx, cb6[1].xyzx, r18.xyzx
  mul r8.xyz, r15.xyzx, cb6[0].xyzx
  mul r15.xyz, r5.wwww, cb6[4].xyzx
  mad r15.xyz, r5.zzzz, cb6[3].xyzx, r15.xyzx
  mul r15.xyz, r15.xyzx, l(-1.442695, -1.442695, -1.442695, 0.000000)
  exp r9.xyz, r15.xyzx
  mov r7.zw, r1.wwww
  store_uav_typed u0.xyzw, r7.xyww, r8.xyzw
  store_uav_typed u1.xyzw, r7.xyzw, r9.xyzw
  iadd r1.w, r1.w, l(1)
  mov r12.xyz, r16.xyzx
  mov r13.xyz, r17.xyzx
  mov r14.xy, r14.zwzz
endloop
ret
// Approximately 126 instruction slots used

///////////////////////////////// HLSL Code /////////////////////////////////
// // ---- Created with 3Dmigoto v0.6.163 on Mon Oct 13 11:25:55 2025
//
// cbuffer cb_post_sky : register(b6)
// {
//   float3 incomingLight_g : packoffset(c0);
//   float3 scatteringR_g : packoffset(c1);
//   float3 scatteringM_g : packoffset(c2);
//   float3 extinctionR_g : packoffset(c3);
//   float3 extinctionM_g : packoffset(c4);
//   float3 densityScaleHeight_g : packoffset(c5);
//   float skyHorizonBottomLimit_g : packoffset(c5.w);
//   float3 sunDirection_g : packoffset(c6);
//   float skyHorizonTopLimit_g : packoffset(c6.w);
//   float mieG_g : packoffset(c7);
//   float distanceScale_g : packoffset(c7.y);
//   float planetRadius_g : packoffset(c7.z);
//   float atmosphereHeight_g : packoffset(c7.w);
//   float sunIntensity_g : packoffset(c8);
//   float skyLutNearOverFarClip_g : packoffset(c8.y);
//   float skyLutCameraFarClip_g : packoffset(c8.z);
//   float skyBrightness_g : packoffset(c8.w);
// }
//
// cbuffer cb_post_sky2 : register(b3)
// {
//   float4x4 skyViewProjInv_g : packoffset(c0);
// }
//
// SamplerState samParticleDensityLUT_s : register(s0);
// Texture2D<float2> particleDensityLUT : register(t2);
// RWTexture3D<float4> inscatterLUT : register(u0);
// RWTexture3D<float4> extinctionLUT : register(u1);
//
//
// // 3Dmigoto declarations
// #define cmp -
// Texture1D<float4> IniParams : register(t120);
// Texture2D<float4> StereoParams : register(t125);
//
//
// void main)
// {
// // Needs manual fix for instruction:
// // unknown dcl_: dcl_uav_typed_texture3d (float,float,float,float) u0
// // Needs manual fix for instruction:
// // unknown dcl_: dcl_uav_typed_texture3d (float,float,float,float) u1
//   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;
//
// // Needs manual fix for instruction:
// // unknown dcl_: dcl_thread_group 8, 8, 1
//   r0.xyz = fDest.xyz;
// // Unknown use of GetDimensions for resinfo_ from missing reflection info, need manual fix.
// // resinfo_indexable(texture3d)(float,float,float,float) r0.xyz, l(0), u0.xyzw
// // Example for texture2d type, uint return:
// tx.GetDimensions(0, uiDest.x, uiDest.y, uiDest.z);
// rx = uiDest;
//  state=0, constZero.eType=4, returnType=0, texture.eType=7, afImmediates[0]=0.000000
//   r1.xy = (uint2)vThreadID.xy;
//   r0.xy = float2(-1,-1) + r0.xy;
//   r0.xy = r1.xy / r0.xy;
//   r1.xy = r0.xy * float2(2,-2) + float2(-1,1);
//   r1.zw = float2(1,1);
//   r2.x = dot(r1.xyw, skyViewProjInv_g._m00_m10_m30);
//   r2.y = dot(r1.xyw, skyViewProjInv_g._m01_m11_m31);
//   r2.z = dot(r1.xyw, skyViewProjInv_g._m02_m12_m32);
//   r0.x = dot(r1.xyw, skyViewProjInv_g._m03_m13_m33);
//   r0.xyw = r2.xyz / r0.xxx;
//   r2.x = dot(r1.xyww, skyViewProjInv_g._m00_m10_m20_m30);
//   r2.y = dot(r1.xyww, skyViewProjInv_g._m01_m11_m21_m31);
//   r2.z = dot(r1.xyww, skyViewProjInv_g._m02_m12_m22_m32);
//   r1.x = dot(r1.xyzw, skyViewProjInv_g._m03_m13_m23_m33);
//   r1.xyz = r2.xyz / r1.xxx;
//   r0.xyw = -r1.xyz + r0.xyw;
//   r1.w = dot(r0.xyw, r0.xyw);
//   r1.w = sqrt(r1.w);
//   r0.xyw = r0.xyw / r1.www;
//   r0.z = (uint)r0.z;
//   r2.x = (int)r0.z + -1;
//   r2.x = (uint)r2.x;
//   r1.w = r1.w / r2.x;
//   r2.xyz = r1.www * r0.xyw;
//   r1.w = dot(r2.xyz, r2.xyz);
//   r1.w = sqrt(r1.w);
//   r1.w = distanceScale_g * r1.w;
//   r0.x = dot(r0.xyw, -sunDirection_g.xyz);
//   r0.y = r0.x * r0.x + 1;
//   r2.w = -mieG_g * mieG_g + 1;
//   r2.w = 3 * r2.w;
//   r3.xy = mieG_g * mieG_g + float2(2,1);
//   r3.x = r3.x + r3.x;
//   r2.w = r2.w / r3.x;
//   r2.w = 0.0795774683 * r2.w;
//   r0.x = dot(r0.xx, mieG_g);
//   r0.x = r3.y + -r0.x;
//   r0.x = log2(r0.x);
//   r0.xw = float2(1.5,0.0596831031) * r0.xy;
//   r0.x = exp2(r0.x);
//   r0.x = r0.y / r0.x;
//   r0.x = r2.w * r0.x;
//   r3.xz = float2(-0,-0);
//   r3.y = planetRadius_g;
//   r4.xyz = r3.zyz + r1.xyz;
//   r0.y = dot(r4.xyz, r4.xyz);
//   r2.w = sqrt(r0.y);
//   r2.w = -planetRadius_g + r2.w;
//   r5.xy = -r2.ww / densityScaleHeight_g.xy;
//   r5.xy = float2(1.44269502,1.44269502) * r5.xy;
//   r5.xy = exp2(r5.xy);
//   r0.y = rsqrt(r0.y);
//   r4.xyz = r4.xyz * r0.yyy;
//   r0.y = dot(r4.xyz, -sunDirection_g.xyz);
//   r4.x = r0.y * 0.5 + 0.5;
//   r4.y = r2.w / atmosphereHeight_g;
//   r4.xy = particleDensityLUT.SampleLevel(samParticleDensityLUT_s, r4.xy, 0).xy;
//   r4.yzw = extinctionM_g.xyz * r4.yyy;
//   r4.xyz = r4.xxx * extinctionR_g.xyz + r4.yzw;
//   r4.xyz = float3(-1.44269502,-1.44269502,-1.44269502) * r4.xyz;
//   r4.xyz = exp2(r4.xyz);
//   r6.xyz = r5.xxx * r4.xyz;
//   r4.xyz = r5.yyy * r4.xyz;
// // No code for instruction (needs manual fix):
// store_uav_typed u0.xyzw, vThreadID.xyzz, l(0,0,0,1.000000)
// // No code for instruction (needs manual fix):
// store_uav_typed u1.xyzw, vThreadID.xyzz, l(1.000000,1.000000,1.000000,1.000000)
//   r0.y = 0.5 * r1.w;
//   r7.xy = vThreadID.xy;
//   r8.w = 1;
//   r9.w = 1;
//   r10.xyz = float3(0,0,0);
//   r11.xyz = float3(0,0,0);
//   r12.xyz = r6.xyz;
//   r13.xyz = r4.xyz;
//   r5.zw = float2(0,0);
//   r14.xy = r5.xy;
//   r1.w = 1;
//   while (true) {
//     r2.w = cmp((uint)r1.w >= (uint)r0.z);
//     if (r2.w != 0) break;
//     r2.w = (uint)r1.w;
//     r15.xyz = r2.xyz * r2.www + r1.xyz;
//     r15.xyz = r15.xyz + r3.xyz;
//     r2.w = dot(r15.xyz, r15.xyz);
//     r3.w = sqrt(r2.w);
//     r3.w = -planetRadius_g + r3.w;
//     r14.zw = -r3.ww / densityScaleHeight_g.xy;
//     r14.zw = float2(1.44269502,1.44269502) * r14.zw;
//     r14.zw = exp2(r14.zw);
//     r2.w = rsqrt(r2.w);
//     r15.xyz = r15.xyz * r2.www;
//     r2.w = dot(r15.xyz, -sunDirection_g.xyz);
//     r15.x = r2.w * 0.5 + 0.5;
//     r15.y = r3.w / atmosphereHeight_g;
//     r15.xy = particleDensityLUT.SampleLevel(samParticleDensityLUT_s, r15.xy, 0).xy;
//     r15.zw = r14.zw + r14.xy;
//     r5.zw = r15.zw * r0.yy + r5.zw;
//     r15.xy = r5.zw + r15.xy;
//     r15.yzw = extinctionM_g.xyz * r15.yyy;
//     r15.xyz = r15.xxx * extinctionR_g.xyz + r15.yzw;
//     r15.xyz = float3(-1.44269502,-1.44269502,-1.44269502) * r15.xyz;
//     r15.xyz = exp2(r15.xyz);
//     r16.xyz = r15.xyz * r14.zzz;
//     r17.xyz = r15.xyz * r14.www;
//     r18.xyz = r14.zzz * r15.xyz + r12.xyz;
//     r10.xyz = r18.xyz * r0.yyy + r10.xyz;
//     r15.xyz = r14.www * r15.xyz + r13.xyz;
//     r11.xyz = r15.xyz * r0.yyy + r11.xyz;
//     r15.xyz = r10.xyz * r0.www;
//     r18.xyz = r11.xyz * r0.xxx;
//     r18.xyz = scatteringM_g.xyz * r18.xyz;
//     r15.xyz = r15.xyz * scatteringR_g.xyz + r18.xyz;
//     r8.xyz = incomingLight_g.xyz * r15.xyz;
//     r15.xyz = extinctionM_g.xyz * r5.www;
//     r15.xyz = r5.zzz * extinctionR_g.xyz + r15.xyz;
//     r15.xyz = float3(-1.44269502,-1.44269502,-1.44269502) * r15.xyz;
//     r9.xyz = exp2(r15.xyz);
//     r7.zw = r1.ww;
//   // No code for instruction (needs manual fix):
//     store_uav_typed u0.xyzw, r7.xyww, r8.xyzw
//   // No code for instruction (needs manual fix):
//     store_uav_typed u1.xyzw, r7.xyzw, r9.xyzw
//     r1.w = (int)r1.w + 1;
//     r12.xyz = r16.xyz;
//     r13.xyz = r17.xyz;
//     r14.xy = r14.zw;
//   }
//   return;
// }
//////////////////////////////// HLSL Errors ////////////////////////////////
// H:\Juegos\Trails in the Sky 1st Chapter\ShaderFixes\5cbe5f174b93453d-cs_replace.txt(41,10): error X3000: syntax error: unexpected token ')'
/////////////////////////////////////////////////////////////////////////////
