Skip to content

Instantly share code, notes, and snippets.

@QuackCola
Last active August 15, 2023 01:53
Show Gist options
  • Save QuackCola/e1e1035bf98836d45a692cbbbf894323 to your computer and use it in GitHub Desktop.
Save QuackCola/e1e1035bf98836d45a692cbbbf894323 to your computer and use it in GitHub Desktop.
vrf decompiled output of l4d2_infected_pcgl .vcs files ( DOES NOT COMPILE )
//=================================================================================================
// Reconstructed with VRF - https://vrf.steamdb.info/
//=================================================================================================
HEADER
{
Description = "Simple shader to use as a starting point for writing new shaders";
DevShader = false;
Version = 0;
}
MODES
{
Depth(S_MODE_DEPTH);
ProjectionDepth(S_MODE_PROJ_DEPTH);
Forward();
PrepassGBuffer(S_MODE_PREPASS_GBUFFER);
FullDeferredGBuffer(S_MODE_FULL_DEFERRED_GBUFFER);
ToolsWireframe(S_MODE_TOOLS_WIREFRAME);
}
FEATURES
{
Feature( F_MORPH_SUPPORTED, 0..1, "Morph" );
Feature( F_SPECULAR, 0..1, "Specular" );
Feature( F_DETAIL_TEXTURE, 0..1, "Detail" );
}
COMMON
{
#include "system.fxc"
cbuffer PerViewConstantBuffer_t;
cbuffer WoundData_t
{
float4 g_vWoundUvScales;
float4 g_vWoundUvBiases;
float3 g_vEllipsoidCenter0;
float3 g_vEllipsoidLookAt0;
float3 g_vEllipsoidUp0;
float3 g_vEllipsoidSide0;
float3 g_vEllipsoidCenter1;
float3 g_vEllipsoidLookAt1;
float3 g_vEllipsoidUp1;
float3 g_vEllipsoidSide1;
float g_flCullType;
float4 g_vWoundUVScaleBias0;
float4 g_vWoundUVScaleBias1;
};
cbuffer PerLayerConstantBuffer_t
{
float4 g_vWireframeColor;
};
struct VS_INPUT
{
float4 vBlendIndices : BLENDINDICES0 < Semantic( BlendIndices ); >; // D_BLEND_WEIGHT_COUNT=1, D_BLEND_WEIGHT_COUNT=2, D_BLEND_WEIGHT_COUNT=3, D_BLEND_WEIGHT_COUNT=4
float4 vBlendWeight : BLENDWEIGHT0 < Semantic( BlendWeight ); >; // D_BLEND_WEIGHT_COUNT=2, D_BLEND_WEIGHT_COUNT=3, D_BLEND_WEIGHT_COUNT=4
float4 vTangentUOs_flTangentVSign : TANGENT0 < Semantic( TangentU_SignV ); >;
float4 vNormalOs : NORMAL0 < Semantic( OptionallyCompressedTangentFrame ); >;
float3 vPositionOs : POSITION0 < Semantic( PosXyz ); >;
uint4 nVertexIndex : TEXCOORD14 < Semantic( MorphIndex ); >; // D_MORPH_LOOKUP_TYPE=1
float2 vTexCoord : TEXCOORD0 < Semantic( LowPrecisionUv ); >;
float2 vTransformTextureUV : TEXCOORD13 < Semantic( InstanceTransformUv ); >;
};
}
VS
{
StaticCombo( S_MODE_PREPASS_GBUFFER, 0..1 );
StaticCombo( S_MODE_TOOLS_WIREFRAME, 0..1 );
StaticCombo( S_MODE_DEPTH, 0..1 );
StaticCombo( S_MODE_PROJ_DEPTH, 0..1 );
StaticCombo( S_DETAIL_TEXTURE, F_DETAIL_TEXTURE );
StaticCombo( S_MORPH_SUPPORTED, F_MORPH_SUPPORTED );
StaticComboRule( Allow1( S_MODE_PREPASS_GBUFFER, S_MODE_TOOLS_WIREFRAME, S_MODE_DEPTH, S_MODE_PROJ_DEPTH ) );
StaticComboRule( Allow1( S_MODE_TOOLS_WIREFRAME, S_MODE_DEPTH, S_MODE_PROJ_DEPTH, S_DETAIL_TEXTURE ) );
DynamicCombo( D_BLEND_WEIGHT_COUNT, 0..4 );
DynamicCombo( D_COMPRESSED_NORMALS_AND_TANGENTS, 0..1 );
DynamicCombo( D_MORPH, 0..1 );
DynamicCombo( D_MORPH_LOOKUP_TYPE, 0..1 );
DynamicCombo( D_MORPH_ENCODING_TYPE, 0..1 );
DynamicCombo( D_ENABLE_WOUNDS, 0..1 );
DynamicComboRule( Requires1( D_MORPH, S_MORPH_SUPPORTED ) );
DynamicComboRule( Requires1( D_MORPH_LOOKUP_TYPE, D_MORPH ) );
DynamicComboRule( Requires1( D_MORPH_ENCODING_TYPE, D_MORPH ) );
// Wounds
float g_flCutOutDecalMappingScale < Default(7); Range(0, 10); UiType(Slider); UiGroup("Wounds"); >;
// Detail
float g_flDetailScale < Default(1); Range(0, 50); UiType(Slider); UiGroup("Detail"); >;
// --------- GLSL source begin ---------
//ATTRIBMAP-00-30-50-5D-xx
#version 330 core
// LunarGOO output
#extension GL_ARB_separate_shader_objects : enable
#extension GL_ARB_shading_language_420pack : enable
#extension GL_ARB_texture_cube_map_array : enable
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_viewport_array : enable
layout(std140, binding = 12 ) uniform PerViewConstantBuffer_t {
layout(row_major) mat4 g_matWorldToProjection;
layout(row_major) mat4 g_matProjectionToWorld;
layout(row_major) mat4 g_matWorldToView;
layout(row_major) mat4 g_matViewToProjection;
vec4 g_vInvProjRow3;
vec4 g_vClipPlane0;
float g_flToneMapScalarLinear;
float g_flLightMapScalar;
float g_flEnvMapScalar;
float g_flToneMapScalarGamma;
vec3 g_vCameraPositionWs;
float g_flViewportMinZ;
vec3 g_vCameraDirWs;
float g_flViewportMaxZ;
vec3 g_vCameraUpDirWs;
float g_flTime;
vec3 g_vDepthPsToVsConversion;
float g_flNearPlane;
float g_flFarPlane;
float g_flLightBinnerFarPlane;
vec2 g_vInvViewportSize;
vec2 g_vViewportToGBufferRatio;
vec2 g_vMorphTextureAtlasSize;
vec4 g_vInvGBufferSize;
vec2 g_vViewportOffset;
vec2 g_vViewportSize;
vec2 g_vRenderTargetSize;
vec3 g_vFogColor;
float g_flNegFogStartOverFogRange;
float g_flInvFogRange;
float g_flFogMaxDensity;
float g_flFogExponent;
float g_flMod2xIdentity;
vec2 g_bRoughnessParams;
float g_bStereoEnabled;
float g_flStereoCameraIndex;
vec3 g_vMiddleEyePositionWs;
layout(row_major) mat4 g_matWorldToProjectionMultiview[2];
vec4 g_vCameraPositionWsMultiview[2];
} ;
layout(std140) uniform _Globals_ {
vec4 g_vInvSizeTransformBuffer;
float g_flInstanceIDIndex;
vec4 g_vInvCMTDims;
float g_flDetailScale;
float g_flCutOutDecalMappingScale;
} ;
layout( binding = 18 ) uniform sampler2D g_tTransformTexture;
layout(std140) uniform WoundData_t {
vec4 g_vWoundUvScales;
vec4 g_vWoundUvBiases;
vec3 g_vEllipsoidCenter0;
vec3 g_vEllipsoidLookAt0;
vec3 g_vEllipsoidUp0;
vec3 g_vEllipsoidSide0;
vec3 g_vEllipsoidCenter1;
vec3 g_vEllipsoidLookAt1;
vec3 g_vEllipsoidUp1;
vec3 g_vEllipsoidSide1;
float g_flCullType;
vec4 g_vWoundUVScaleBias0;
vec4 g_vWoundUVScaleBias1;
} ;
layout(std140) uniform PerViewLightingConstantBuffer_t {
vec4 g_vInvLightTextureDims;
vec4 g_vLightBinCounts;
vec2 g_vLowResDeferredLightingTextureDim;
vec2 g_vLowResDeferredLightingTextureInvDim;
vec3 g_vToolsAmbientLighting;
float g_flSSAOEnabled;
vec3 g_vIrradAtlasInvSize;
float g_flIrradGlobalLightingFactor;
vec4 g_vGlobalLightingSHRed;
vec4 g_vGlobalLightingSHGreen;
vec4 g_vGlobalLightingSHBlue;
vec3 g_vRayleighScatteringCoeff;
float g_flMieScatteringEccentricity;
vec3 g_vMieScatteringCoeff;
float g_flMieForwardScatteringRatio;
vec3 g_vLpvBoxMinCascade0;
vec3 g_vLpvInvBoxDimCascade0;
vec2 g_vLpvInvCoeffTextureDim;
float g_flLpvBrightnessScale;
vec4 g_vLightCookieSheetSequenceAndSizes;
} ;
layout(std140) uniform PerLayerConstantBuffer_t {
vec4 g_vWireframeColor;
} ;
uniform sampler2D g_tCompositeMorphTextureAtlas;
layout(location=0) in vec3 VS_INPUT_gl_vPositionOs;
layout(location=1) in vec4 VS_INPUT_gl_vNormalOs;
layout(location=2) in vec2 VS_INPUT_gl_vTexCoord;
layout(location=3) in vec2 VS_INPUT_gl_vTransformTextureUV;
out gl_PerVertex {
vec4 gl_Position;
float gl_ClipDistance[1];
} ;
layout(location=0) out vec4 PS_INPUT_gl_vNormalWs_flCullDist;
layout(location=1) out vec2 PS_INPUT_gl_vTextureCoords;
layout(location=2) out vec4 PS_INPUT_gl_vPositionCs;
layout(location=3) out vec3 PS_INPUT_gl_vPositionWs;
flat layout(location=4) out vec4 PS_INPUT_gl_vVertexColor;
layout(location=5) out vec4 PS_INPUT_gl_vWoundUvs;
const float C_0d0 = 0.0;
const ivec2 C_ivec2p3ca0p = ivec2(3, 0);
const ivec2 C_ivec2p1ca0p = ivec2(1, 0);
const ivec2 C_ivec2p2ca0p = ivec2(2, 0);
const float C_1d0 = 1.0;
const vec4 C_vec4p0d0p = vec4(0.0);
const float C_2d0 = 2.0;
void main()
{
gl_ClipDistance[0] = C_0d0;
vec4 vRet = textureLodOffset(g_tTransformTexture, VS_INPUT_gl_vTransformTextureUV, C_0d0, C_ivec2p3ca0p);
vec4 matObjectToWorld = textureLod(g_tTransformTexture, VS_INPUT_gl_vTransformTextureUV, C_0d0);
vec4 matObjectToWorld1 = textureLodOffset(g_tTransformTexture, VS_INPUT_gl_vTransformTextureUV, C_0d0, C_ivec2p1ca0p);
vec4 matObjectToWorld2 = textureLodOffset(g_tTransformTexture, VS_INPUT_gl_vTransformTextureUV, C_0d0, C_ivec2p2ca0p);
vec4 H_xf03ot = vec4(VS_INPUT_gl_vNormalOs.x, VS_INPUT_gl_vNormalOs.y, VS_INPUT_gl_vNormalOs.z, C_0d0);
float dotres = dot(H_xf03ot, matObjectToWorld);
float dotres1 = dot(H_xf03ot, matObjectToWorld1);
float dotres2 = dot(H_xf03ot, matObjectToWorld2);
vec3 H_3cij4j1 = vec3(dotres, dotres1, dotres2);
vec3 vNormalWs = normalize(H_3cij4j1);
vec4 H_ol7vfn1 = vec4(VS_INPUT_gl_vPositionOs.x, VS_INPUT_gl_vPositionOs.y, VS_INPUT_gl_vPositionOs.z, C_1d0);
float dotres3 = dot(H_ol7vfn1, matObjectToWorld);
float dotres4 = dot(H_ol7vfn1, matObjectToWorld1);
float dotres5 = dot(H_ol7vfn1, matObjectToWorld2);
vec3 H_25kyhb = vec3(dotres3, dotres4, dotres5);
vec4 H_ywfxcw = vec4(dotres3, dotres4, dotres5, C_1d0);
float dotres6 = dot(H_ywfxcw, g_matWorldToProjection[0]);
float dotres7 = dot(H_ywfxcw, g_matWorldToProjection[1]);
float dotres8 = dot(H_ywfxcw, g_matWorldToProjection[2]);
float dotres9 = dot(H_ywfxcw, g_matWorldToProjection[3]);
float H_yzs5al1 = dot(H_ywfxcw, g_vClipPlane0);
vec3 vCameraToWorldWs = H_25kyhb - g_vCameraPositionWs;
float flCameraProjection = dot(vCameraToWorldWs, g_vCameraDirWs);
float H_ax4m05 = flCameraProjection - g_flNearPlane;
float H_ri734y = g_flLightBinnerFarPlane - g_flNearPlane;
float flZPos = H_ax4m05 / H_ri734y;
vec4 H_78mxr7 = vec4(dotres6, dotres7, flZPos, dotres9);
vec4 H_i8jodt1 = vec4(vNormalWs.x, vNormalWs.y, vNormalWs.z, C_0d0);
PS_INPUT_gl_vNormalWs_flCullDist = H_i8jodt1;
PS_INPUT_gl_vTextureCoords = VS_INPUT_gl_vTexCoord;
PS_INPUT_gl_vPositionCs = H_78mxr7;
PS_INPUT_gl_vPositionWs = H_25kyhb;
PS_INPUT_gl_vVertexColor = vRet;
PS_INPUT_gl_vWoundUvs = C_vec4p0d0p;
float H_q212zt1 = C_0d0 - dotres7;
float H_4por451 = dotres8 * C_2d0;
float H_w5661h1 = H_4por451 - dotres9;
vec4 H_8ajvmr1 = vec4(dotres6, H_q212zt1, H_w5661h1, dotres9);
gl_Position = H_8ajvmr1;
gl_ClipDistance[0] = H_yzs5al1;
}
// --------- GLSL source end ---------
}
PS
{
StaticCombo( S_TOOLS_ENABLED, 0..1 );
StaticCombo( S_MODE_PREPASS_GBUFFER, 0..1 );
StaticCombo( S_MODE_FULL_DEFERRED_GBUFFER, 0..1 );
StaticCombo( S_MODE_TOOLS_WIREFRAME, 0..1 );
StaticCombo( S_MODE_DEPTH, 0..1 );
StaticCombo( S_MODE_PROJ_DEPTH, 0..1 );
StaticCombo( S_SPECULAR, F_SPECULAR );
StaticCombo( S_DETAIL_TEXTURE, F_DETAIL_TEXTURE );
StaticComboRule( Allow1( S_MODE_PREPASS_GBUFFER, S_MODE_FULL_DEFERRED_GBUFFER, S_MODE_TOOLS_WIREFRAME, S_MODE_DEPTH, S_MODE_PROJ_DEPTH ) );
StaticComboRule( Allow1( S_MODE_TOOLS_WIREFRAME, S_MODE_DEPTH, S_MODE_PROJ_DEPTH, S_MODE_PREPASS_GBUFFER, S_SPECULAR ) );
StaticComboRule( Allow1( S_MODE_TOOLS_WIREFRAME, S_MODE_DEPTH, S_MODE_PROJ_DEPTH, S_DETAIL_TEXTURE ) );
StaticComboRule( Allow1( S_MODE_TOOLS_WIREFRAME, S_MODE_DEPTH, S_MODE_PROJ_DEPTH, S_MODE_PREPASS_GBUFFER, S_TOOLS_ENABLED ) );
DynamicCombo( D_SFM_LIGHTING, 0..1 );
DynamicCombo( D_ENABLE_WOUNDS, 0..1 );
DynamicCombo( D_SUN_SHADOW_CASCADE_SIZE, 0..4 );
DynamicComboRule( Requires1( D_SFM_LIGHTING, S_TOOLS_ENABLED ) );
DynamicComboRule( Allow1( S_MODE_PREPASS_GBUFFER, S_MODE_FULL_DEFERRED_GBUFFER, S_MODE_TOOLS_WIREFRAME, S_MODE_DEPTH, S_MODE_PROJ_DEPTH, D_SUN_SHADOW_CASCADE_SIZE ) );
DynamicComboRule( Allow1( S_MODE_TOOLS_WIREFRAME, S_MODE_DEPTH, S_MODE_PROJ_DEPTH, S_MODE_PREPASS_GBUFFER, D_SFM_LIGHTING ) );
RenderState(SlopeScaleDepthBias, SlopeScaleDepthBias);
RenderState(StencilRef, 1);
CreateTexture2DWithoutSampler(g_tChannels) < Channel(R, Box(TextureDetailBlendAndSpecMask), Linear); Channel(G, Box(TextureBloodAndEyeMask), Linear); Channel(B, Box(TextureSkinAndColorTint), Linear); Channel(A, Box(TextureLuminosity), Linear); OutputFormat(DXT5); SrgbRead(false); >;
CreateTexture2DWithoutSampler(g_tCutOutDecal) < Channel(G, Box(TextureCutOutDecal), Linear); OutputFormat(DXT1); SrgbRead(false); >;
CreateTexture2DWithoutSampler(g_tDetail) < Channel(RGB, Box(TextureDetailColor), Linear); Channel(A, Box(TextureDetailSpecMask), Linear); OutputFormat(DXT5); SrgbRead(false); >;
CreateTexture2DWithoutSampler(g_tGradients) < Channel(RGB, None(TextureGradient), Srgb); OutputFormat(RGBA8888); SrgbRead(true); >;
// Masks
CreateInputTexture2D(TextureBloodAndEyeMask, Linear, 8, "", "_blood_eye", "Masks", Default4(1, 1, 1, 0));
CreateInputTexture2D(TextureDetailBlendAndSpecMask, Linear, 8, "", "_detail_spec", "Masks", Default4(1, 1, 1, 0));
CreateInputTexture2D(TextureLuminosity, Linear, 8, "", "_lum", "Masks", Default4(1, 1, 1, 0));
CreateInputTexture2D(TextureSkinAndColorTint, Linear, 8, "", "_skintint", "Masks", Default4(1, 1, 1, 0));
// Wounds
CreateInputTexture2D(TextureCutOutDecal, Linear, 8, "", "_mask", "Wounds", Default4(0, 0, 0, 0));
float g_flCutoutTextureBias < UiType(Slider); UiGroup("Wounds"); >;
// Detail
CreateInputTexture2D(TextureDetailColor, Linear, 8, "", "_mod2x", "Detail", Default4(0.5, 0.5, 0.5, 0));
CreateInputTexture2D(TextureDetailSpecMask, Linear, 8, "", "_specmask", "Detail", Default4(1, 1, 1, 0));
// Color
CreateInputTexture2D(TextureGradient, Srgb, 8, "", "_color", "Color", Default4(1, 1, 1, 0));
// Blood
float g_flBloodMaskRangeMax < Default(1); UiType(Slider); UiGroup("Blood"); >;
float g_flBloodMaskRangeMin < UiType(Slider); UiGroup("Blood"); >;
float g_flBloodSpecularBoost < Default(1); Range(0, 10); UiType(Slider); UiGroup("Blood"); >;
float g_flBloodSpecularExponent < Default(32); Range(1, 1000); UiType(Slider); UiGroup("Blood"); >;
float3 g_vBloodColor < Default3(1, 1, 1); UiType(Color); UiGroup("Blood"); >;
// Specular
float g_flDetailSpecularExponent < Default(32); Range(1, 1000); UiType(Slider); UiGroup("Specular"); >;
float g_flGenericSpecularExponent < Default(32); Range(1, 1000); UiType(Slider); UiGroup("Specular"); >;
float g_flSkinSpecularExponent < Default(32); Range(1, 1000); UiType(Slider); UiGroup("Specular"); >;
float g_flSpecularCoefficient < Default(1); Range(0, 20); UiType(Slider); UiGroup("Specular"); >;
float3 g_vSpecularTint < Default3(1, 1, 1); UiType(Color); UiGroup("Specular"); >;
// Normal Map
float g_flIndirectContrastBoost < UiType(Slider); UiGroup("Normal Map"); >;
// Ambient Occlusion
float g_flSunLightAmbientOcclusionFactor < Default(1); UiType(Slider); UiGroup("Ambient Occlusion"); >;
// --------- GLSL source begin ---------
#version 330 core
// LunarGOO output
#extension GL_ARB_separate_shader_objects : enable
#extension GL_ARB_shading_language_420pack : enable
#extension GL_ARB_texture_cube_map_array : enable
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_viewport_array : enable
struct ForwardLighting_t {
vec3 member0;
vec3 member1;
vec3 member2;
vec3 member3;
};
struct ShadowFilterTapDescriptor_t {
vec4 member0;
vec4 member1;
float member2;
vec4 member3;
vec4 member4;
float member5;
};
layout(std140, binding = 0 ) uniform PerViewConstantBuffer_t {
layout(row_major) mat4 g_matWorldToProjection;
layout(row_major) mat4 g_matProjectionToWorld;
layout(row_major) mat4 g_matWorldToView;
layout(row_major) mat4 g_matViewToProjection;
vec4 g_vInvProjRow3;
vec4 g_vClipPlane0;
float g_flToneMapScalarLinear;
float g_flLightMapScalar;
float g_flEnvMapScalar;
float g_flToneMapScalarGamma;
vec3 g_vCameraPositionWs;
float g_flViewportMinZ;
vec3 g_vCameraDirWs;
float g_flViewportMaxZ;
vec3 g_vCameraUpDirWs;
float g_flTime;
vec3 g_vDepthPsToVsConversion;
float g_flNearPlane;
float g_flFarPlane;
float g_flLightBinnerFarPlane;
vec2 g_vInvViewportSize;
vec2 g_vViewportToGBufferRatio;
vec2 g_vMorphTextureAtlasSize;
vec4 g_vInvGBufferSize;
vec2 g_vViewportOffset;
vec2 g_vViewportSize;
vec2 g_vRenderTargetSize;
vec3 g_vFogColor;
float g_flNegFogStartOverFogRange;
float g_flInvFogRange;
float g_flFogMaxDensity;
float g_flFogExponent;
float g_flMod2xIdentity;
vec2 g_bRoughnessParams;
float g_bStereoEnabled;
float g_flStereoCameraIndex;
vec3 g_vMiddleEyePositionWs;
layout(row_major) mat4 g_matWorldToProjectionMultiview[2];
vec4 g_vCameraPositionWsMultiview[2];
} ;
layout(std140, binding = 1 ) uniform _Globals_ {
float g_flBumpStrength;
float g_flIndirectContrastBoost;
vec2 g_vInvPagedTextureCoeffDim;
vec3 g_vTransmissiveColorTint;
float g_flTransmissiveColorBoost;
float g_flTransmissiveSoftness;
float g_flIndirectFresnelReflectance;
float g_flIndirectFresnelExponent;
float g_flGradSelectSkin;
float g_flGradSelectTint;
float g_flTileIndex;
vec3 g_vBloodColor;
float g_flBloodSpecularExponent;
float g_flBloodSpecularBoost;
float g_flBloodMaskRangeMin;
float g_flBloodMaskRangeMax;
float g_flSpecularCoefficient;
float g_flDetailSpecularExponent;
float g_flSkinSpecularExponent;
float g_flGenericSpecularExponent;
vec3 g_vSpecularTint;
float g_flSunLightAmbientOcclusionFactor;
float g_flCutoutTextureBias;
} ;
uniform sampler2D g_tIrradianceProbes;
uniform sampler2D g_tIrradianceSampleParams;
layout(std140) uniform IrradTextureActiveRectCB {
vec4 g_vInvIrradTexDim;
} ;
uniform sampler2D g_tPagedRadianceCoeffs;
uniform sampler2D g_tUnwrappedRadianceCoeffsR;
uniform sampler2D g_tUnwrappedRadianceCoeffsG;
uniform sampler2D g_tUnwrappedRadianceCoeffsB;
uniform sampler2D g_tUnwrappedRadianceCoeffsR1;
uniform sampler2D g_tUnwrappedRadianceCoeffsG1;
uniform sampler2D g_tUnwrappedRadianceCoeffsB1;
uniform sampler2D g_tUnwrappedRadianceCoeffsR2;
uniform sampler2D g_tUnwrappedRadianceCoeffsG2;
uniform sampler2D g_tUnwrappedRadianceCoeffsB2;
uniform sampler2D g_tUnwrappedBlockerCoeffs;
layout(std140, binding = 2 ) uniform PerViewLightingConstantBuffer_t {
vec4 g_vInvLightTextureDims;
vec4 g_vLightBinCounts;
vec2 g_vLowResDeferredLightingTextureDim;
vec2 g_vLowResDeferredLightingTextureInvDim;
vec3 g_vToolsAmbientLighting;
float g_flSSAOEnabled;
vec3 g_vIrradAtlasInvSize;
float g_flIrradGlobalLightingFactor;
vec4 g_vGlobalLightingSHRed;
vec4 g_vGlobalLightingSHGreen;
vec4 g_vGlobalLightingSHBlue;
vec3 g_vRayleighScatteringCoeff;
float g_flMieScatteringEccentricity;
vec3 g_vMieScatteringCoeff;
float g_flMieForwardScatteringRatio;
vec3 g_vLpvBoxMinCascade0;
vec3 g_vLpvInvBoxDimCascade0;
vec2 g_vLpvInvCoeffTextureDim;
float g_flLpvBrightnessScale;
vec4 g_vLightCookieSheetSequenceAndSizes;
} ;
layout( binding = 8 ) uniform sampler3D g_tIrradTexture;
layout( binding = 3 ) uniform sampler2D g_tTotalLightBuffer;
layout( binding = 4 ) uniform sampler2D g_tSheetTexture;
layout( binding = 5 ) uniform sampler2D g_tLightCookieTexture;
layout( binding = 7 ) uniform samplerCubeArray g_tIrradBoundaryTexture;
layout(std140, binding = 3 ) uniform SunLightShaderParamsCB {
vec4 g_vSunLightColor;
vec3 g_vSunLightDir;
float g_flSunNormalizedRadius;
vec4 g_vSunTexParams;
vec4 g_vSunTexParams2;
vec4 g_vSunTexParams3;
layout(row_major) mat4 g_matWorldToShadowTexMatrices[4];
vec4 g_vCascadeAtlasUVOffsets[4];
vec4 g_flCascadeViewShadowBiasScales[4];
} ;
layout( binding = 6 ) uniform sampler2D g_tLightDepthBuffer;
layout( binding = 0 ) uniform sampler2D g_tChannels;
layout( binding = 1 ) uniform sampler2D g_tGradients;
layout( binding = 2 ) uniform sampler2D g_tSSAOOcclusionFactor;
layout(std140) uniform WoundData_t {
vec4 g_vWoundUvScales;
vec4 g_vWoundUvBiases;
vec3 g_vEllipsoidCenter0;
vec3 g_vEllipsoidLookAt0;
vec3 g_vEllipsoidUp0;
vec3 g_vEllipsoidSide0;
vec3 g_vEllipsoidCenter1;
vec3 g_vEllipsoidLookAt1;
vec3 g_vEllipsoidUp1;
vec3 g_vEllipsoidSide1;
float g_flCullType;
vec4 g_vWoundUVScaleBias0;
vec4 g_vWoundUVScaleBias1;
} ;
layout(std140) uniform PerLayerConstantBuffer_t {
vec4 g_vWireframeColor;
} ;
uniform sampler2D g_tDetail;
uniform sampler2D g_tCutOutDecal;
uniform sampler2D g_tLightBuffer;
uniform sampler2D g_tSpecBuffer;
layout(location=0) in vec4 PS_INPUT_gl_vNormalWs_flCullDist;
layout(location=1) in vec2 PS_INPUT_gl_vTextureCoords;
layout(location=2) in vec4 PS_INPUT_gl_vPositionCs;
layout(location=3) in vec3 PS_INPUT_gl_vPositionWs;
flat layout(location=4) in vec4 PS_INPUT_gl_vVertexColor;
layout(location=5) in vec4 PS_INPUT_gl_vWoundUvs;
layout(location=0) out vec4 PS_OUTPUT_gl_vColor;
ForwardLighting_t gla_globalAgg;
ForwardLighting_t gla_globalAgg1;
const float C_1d52588ea05 = 1.52588e-05;
const int C_1 = 1;
const vec2 C_vec2p0d5p = vec2(0.5);
const vec3 C_vec3p2d0p = vec3(2.0);
const vec3 C_vec3pa1d0p = vec3(-1.0);
const float C_0d0 = 0.0;
const float C_1d0 = 1.0;
const int C_0 = 0;
const float C_0d5 = 0.5;
const float C_8d0 = 8.0;
const vec3 C_vec3p1d0p = vec3(1.0);
const vec3 C_vec3p0d5p = vec3(0.5);
const vec3 C_vec3p0d0p = vec3(0.0);
const vec3 C_olc43m1 = vec3(0.6, 0.4, 1.0);
const vec3 C_fz9l9i = vec3(0.6, 0.4, 0.2);
const float C_0d125 = 0.125;
const float C_3d0 = 3.0;
const float C_0d1 = 0.1;
const vec2 C_a1z03r = vec2(0.0, 0.0);
const vec4 C_saeofs1 = vec4(65535.0);
const int C_255 = 255;
const float C_2d0 = 2.0;
const float C_1d49 = 1.49;
const ivec2 C_ivec2p0ca1p = ivec2(0, 1);
const ivec2 C_ivec2p0ca2p = ivec2(0, 2);
const vec4 C_nbttmd1 = vec4(65536.0);
const vec4 C_vec4p2d0p = vec4(2.0);
const vec4 C_vec4pa1d0p = vec4(-1.0);
const vec4 C_iigfsx = vec4(16000.0, 16000.0, 16000.0, 1.0);
const vec3 C_s2237k = vec3(500000.0);
const float C_65535d0 = 65535.0;
const float C_256d0 = 256.0;
const float C_0d00390625 = 0.00390625;
const vec2 C_nkogse1 = vec2(0.00392157);
const int C_8 = 8;
const vec4 C_xx1m2m1 = vec4(0.0, 0.0, 0.0, 1.0);
const float C_a2d0 = -2.0;
const ivec2 C_ivec2p1ca0p = ivec2(1, 0);
const ivec2 C_ivec2p1p = ivec2(1);
const float C_0d01 = 0.01;
const float C_0d001 = 0.001;
const vec3 C_imhxe9 = vec3(0.0, 0.0, 1.0);
const vec3 C_sc72c91 = vec3(0.0, 1.0, 0.0);
const vec4 C_obaw8x1 = vec4(0.0, 0.0, 0.0, 0.0);
const vec4 C_we0rji1 = vec4(0.0, 0.0, -1.0, 0.0);
const vec2 C_z3wm3 = vec2(0.5, -0.5);
const float C_32d0 = 32.0;
const ivec2 C_ivec2p1ca2p = ivec2(1, 2);
const ShadowFilterTapDescriptor_t C_aoycct[9] = ShadowFilterTapDescriptor_t[9](ShadowFilterTapDescriptor_t(vec4(0.0), vec4(0.0), 1.0, vec4(0.0), vec4(0.0), 1.0), ShadowFilterTapDescriptor_t(vec4(0.0), vec4(0.0), 1.0, vec4(0.0, 0.0, 0.0, 1.0), vec4(1.0, 1.0, 2.0, 2.0), 0.0), ShadowFilterTapDescriptor_t(vec4(0.0), vec4(0.0), 1.0, vec4(1.0, 0.0, 0.0, 0.0), vec4(2.0, 2.0, 1.0, 1.0), 0.0), ShadowFilterTapDescriptor_t(vec4(1.0, 0.0, 0.0, 0.0), vec4(2.0, 1.0, 1.0, 2.0), 0.0, vec4(0.0), vec4(0.0), 1.0), ShadowFilterTapDescriptor_t(vec4(0.0, 0.0, 1.0, 0.0), vec4(1.0, 2.0, 2.0, 1.0), 0.0, vec4(0.0), vec4(0.0), 1.0), ShadowFilterTapDescriptor_t(vec4(1.0, 0.0, 0.0, 0.0), vec4(2.0, 1.0, 1.0, 2.0), 0.0, vec4(0.0, 0.0, 0.0, 1.0), vec4(1.0, 1.0, 2.0, 2.0), 0.0), ShadowFilterTapDescriptor_t(vec4(0.0, 0.0, 1.0, 0.0), vec4(1.0, 2.0, 2.0, 1.0), 0.0, vec4(0.0, 0.0, 0.0, 1.0), vec4(1.0, 1.0, 2.0, 2.0), 0.0), ShadowFilterTapDescriptor_t(vec4(1.0, 0.0, 0.0, 0.0), vec4(2.0, 1.0, 1.0, 2.0), 0.0, vec4(1.0, 0.0, 0.0, 0.0), vec4(2.0, 2.0, 1.0, 1.0), 0.0), ShadowFilterTapDescriptor_t(vec4(0.0, 0.0, 1.0, 0.0), vec4(1.0, 2.0, 2.0, 1.0), 0.0, vec4(1.0, 0.0, 0.0, 0.0), vec4(2.0, 2.0, 1.0, 1.0), 0.0));
const float C_a0d0005 = -0.0005;
const vec2 C_1dcjhj = vec2(4096.0);
const vec2 C_8h509d = vec2(0.000244141);
const ivec2 C_ivec2p0p = ivec2(0);
const ivec2 C_uturfy1 = ivec2(0, -2);
const ivec2 C_k21d0v1 = ivec2(-2, 0);
const ivec2 C_ivec2p2ca0p = ivec2(2, 0);
const ivec2 C_ivec2pa2p = ivec2(-2);
const ivec2 C_cbwr2q = ivec2(2, -2);
const vec4 C_vec4p0d0p = vec4(0.0);
const vec4 C_vec4pa1d4p = vec4(-1.4);
const vec4 C_vec4pa35d0p = vec4(-35.0);
const vec4 C_vec4p1d0p = vec4(1.0);
const float C_4d0 = 4.0;
const vec3 C_mhpmaf = vec3(0.0, 1.0, 2.0);
const vec3 C_puy8vs1 = vec3(3.0, 4.0, 5.0);
const float C_0d166667 = 0.166667;
const vec4 C_vec4p256d0p = vec4(256.0);
const vec4 C_pfdto3 = vec4(-127.0);
const ivec2 C_ivec2p2ca1p = ivec2(2, 1);
const ivec2 C_ivec2p2p = ivec2(2);
const ivec2 C_ivec2p3ca1p = ivec2(3, 1);
const ivec2 C_ivec2p3ca2p = ivec2(3, 2);
const vec3 C_bwf7sr = vec3(65535.0);
const vec3 C_5x6ds81 = vec3(1.0, 1.0, 0.166667);
const vec3 C_vec3pa0d5p = vec3(-0.5);
vec3 Lg_8;
float Lg_9;
const float C_0d3 = 0.3;
const float C_0d4 = 0.4;
const float C_0d0596831 = 0.0596831;
const float C_1d5 = 1.5;
const float C_0d0795775 = 0.0795775;
void main()
{
vec3 param;
vec3 param1;
float p;
vec3 param2;
vec3 param3;
float s;
vec3 param4;
vec3 param5;
float ss;
int i;
vec4 vecSumWeights;
float flShadow;
float ss1;
vec2 vLightUv;
vec3 vDiffuse;
float flTotalWeight;
vec3 vDiffuse1;
float flTotalWeight1;
vec3 vDiffuse2;
float flTotalWeight2;
vec4 Lg_1;
vec4 Lg_2;
vec4 Lg_3;
vec4 Lg_4;
vec3 Lg_5;
vec3 Lg_6;
ForwardLighting_t Lg_7;
vec4[9] vecZValues;
ShadowFilterTapDescriptor_t[9] s_Sample6x;
vec2 vScreenUv = g_vInvGBufferSize.xy * gl_FragCoord.xy;
vec4 vMasks = texture(g_tChannels, PS_INPUT_gl_vTextureCoords);
float H_zyj4pm1 = PS_INPUT_gl_vVertexColor.z * C_1d52588ea05;
int nTileIndex = int(uint(H_zyj4pm1));
int H_cvxoyn = int(uint(nTileIndex) >> uint(C_1));
float H_wbnnks = float(H_cvxoyn);
int H_06i2yi = nTileIndex & C_1;
float H_8qkdgm1 = float(H_06i2yi);
vec2 H_is3mup1 = vec2(H_wbnnks, H_8qkdgm1);
vec2 vUVTransform = H_is3mup1 * C_vec2p0d5p;
vec2 H_sescn41 = C_vec2p0d5p * PS_INPUT_gl_vTextureCoords;
vec2 H_1gy0851 = H_sescn41 + vUVTransform;
vec4 vMasks1 = texture(g_tChannels, H_1gy0851);
vec3 H_9vu1mr1 = vec3(vMasks1.x, vMasks1.y, vMasks.z);
vec3 H_62f0lk1 = H_9vu1mr1 * C_vec3p2d0p;
vec3 H_mo1zco = H_62f0lk1 + C_vec3pa1d0p;
float misc3a = clamp(H_mo1zco.y, C_0d0, C_1d0);
float flBloodMask = smoothstep(g_flBloodMaskRangeMin, g_flBloodMaskRangeMax, misc3a);
float misc3a1 = clamp(H_mo1zco.z, C_0d0, C_1d0);
float param6 = C_0d0 - H_mo1zco.z;
float misc3a2 = clamp(param6, C_0d0, C_1d0);
float flLuminosityLinear = vMasks.w * vMasks.w;
vec3 H_715k5q = vec3(flLuminosityLinear);
ivec2 txtQ = textureSize(g_tGradients, C_0);
float H_olzzzv1 = float(txtQ.y);
float flInvGradTextureHeight = C_1d0 / H_olzzzv1;
float H_5eyg0t = PS_INPUT_gl_vVertexColor.x + C_0d5;
float flGradSelectSkin = H_5eyg0t * flInvGradTextureHeight;
vec2 H_f6g77r = vec2(vMasks.w, flGradSelectSkin);
vec4 cSkinColor = texture(g_tGradients, H_f6g77r);
vec3 cSkinColor1 = mix(H_715k5q, cSkinColor.xyz, misc3a1);
float flGradSelectTint = max(PS_INPUT_gl_vVertexColor.y, C_8d0);
float H_m4hl4m = C_0d5 + flGradSelectTint;
float flGradSelectTint1 = H_m4hl4m * flInvGradTextureHeight;
vec2 H_mcotmw1 = vec2(vMasks.w, flGradSelectTint1);
vec4 cTintColor = texture(g_tGradients, H_mcotmw1);
vec3 cTintColor1 = mix(cSkinColor1, cTintColor.xyz, misc3a2);
vec3 cBloodColor = mix(C_vec3p1d0p, g_vBloodColor, flBloodMask);
vec3 H_ynsok3 = H_715k5q * C_vec3p0d5p;
vec3 H_qj5u44 = C_vec3p2d0p * H_ynsok3;
vec3 vAlbedo = mix(cTintColor1, H_qj5u44, C_0d0);
vec3 vAlbedo1 = cBloodColor * vAlbedo;
float flSpecularExponent = mix(g_flSkinSpecularExponent, g_flDetailSpecularExponent, C_0d0);
float flSpecularExponent1 = mix(g_flGenericSpecularExponent, flSpecularExponent, misc3a1);
float flSpecularExponent2 = mix(flSpecularExponent1, g_flBloodSpecularExponent, flBloodMask);
vec3 vGeometricNormalWs = normalize(PS_INPUT_gl_vNormalWs_flCullDist.xyz);
vec4 flSsaoOcclusionFactor = texture(g_tSSAOOcclusionFactor, vScreenUv);
float lightOptions = mix(C_1d0, flSsaoOcclusionFactor.x, g_flSunLightAmbientOcclusionFactor);
vec3 H_6tbv721 = PS_INPUT_gl_vPositionWs - g_vCameraPositionWs;
vec3 H_kkgz3m = normalize(H_6tbv721);
vec3 H_vpzgi9 = C_vec3p0d0p - H_kkgz3m;
float misc2a = dot(vGeometricNormalWs, H_vpzgi9);
float misc2a1 = max(C_0d0, misc2a);
float H_67xig51 = g_flIndirectContrastBoost * misc2a1;
float H_msa5fl = C_1d0 - g_flIndirectContrastBoost;
float H_foptmw = H_67xig51 + H_msa5fl;
float H_tzwpwk1 = H_foptmw * flSsaoOcclusionFactor.x;
vec3 H_qtdg73 = vec3(H_tzwpwk1);
vec3 H_qtdg73r = vec3(H_tzwpwk1);
vec3 misc3a3 = clamp(vGeometricNormalWs, C_vec3p0d0p, C_vec3p1d0p);
vec3 H_ts49ey = misc3a3 * misc3a3;
float flPosLightIntensity = dot(C_olc43m1, H_ts49ey);
vec3 param7 = C_vec3p0d0p - vGeometricNormalWs;
vec3 misc3a4 = clamp(param7, C_vec3p0d0p, C_vec3p1d0p);
vec3 H_1iv9b8 = misc3a4 * misc3a4;
float flNegLightIntensity = dot(C_fz9l9i, H_1iv9b8);
float H_2oest31 = flNegLightIntensity + flPosLightIntensity;
vec3 H_byzol71 = vec3(H_2oest31);
vec3 vAmbient = H_byzol71 * g_vToolsAmbientLighting;
vec2 H_r2g58o1 = PS_INPUT_gl_vPositionCs.xy / PS_INPUT_gl_vPositionCs.ww;
vec2 H_12sfl1 = C_vec2p0d5p * H_r2g58o1;
vec2 H_3rhr5j1 = C_vec2p0d5p + H_12sfl1;
float misc2a2 = dot(g_vSunLightDir, vGeometricNormalWs);
float misc3a5 = clamp(misc2a2, C_0d0, C_1d0);
float H_64x4w4 = lightOptions * misc3a5;
vec3 H_p09hf31 = vec3(H_64x4w4);
vec3 H_letyvv = H_p09hf31 * g_vSunLightColor.xyz;
vec3 H_t1w49k = H_letyvv + vAmbient;
vec3 H_fqlb951 = g_vSunLightDir - H_kkgz3m;
vec3 vHalfVectorDir = normalize(H_fqlb951);
float misc2a3 = dot(vHalfVectorDir, vGeometricNormalWs);
float misc3a6 = clamp(misc2a3, C_0d0, C_1d0);
float flResult = pow(misc3a6, flSpecularExponent2);
float H_jlgf28 = flSpecularExponent2 * C_0d125;
float H_18tjki1 = C_1d0 + H_jlgf28;
float flResult1 = H_18tjki1 * flResult;
vec3 H_3nkufl1 = vec3(flResult1);
vec3 H_9fzdl51 = H_3nkufl1 * H_letyvv;
bool H_swlg7z = PS_INPUT_gl_vPositionCs.z > C_1d0;
if (H_swlg7z) {
vec4 H_8albvu1 = vec4(vGeometricNormalWs.x, vGeometricNormalWs.y, vGeometricNormalWs.z, C_1d0);
float vResult = dot(H_8albvu1, g_vGlobalLightingSHRed);
float vResult1 = dot(H_8albvu1, g_vGlobalLightingSHGreen);
float vResult2 = dot(H_8albvu1, g_vGlobalLightingSHBlue);
vec3 H_zab8d31 = vec3(vResult, vResult1, vResult2);
vec3 H_wpziz9 = H_qtdg73r * H_zab8d31;
vec3 H_5ucpcn1 = H_t1w49k + H_wpziz9;
gla_globalAgg.member0 = H_5ucpcn1;
gla_globalAgg.member1 = H_9fzdl51;
gla_globalAgg.member2 = C_vec3p0d0p;
gla_globalAgg.member3 = C_vec3p0d0p;
Lg_1 = g_vSunLightColor;
Lg_2 = g_vGlobalLightingSHBlue;
Lg_3 = g_vGlobalLightingSHGreen;
Lg_4 = g_vGlobalLightingSHRed;
Lg_5 = g_vSunLightDir;
Lg_6 = g_vCameraPositionWs;
Lg_7 = gla_globalAgg;
} else {
vec3 H_2k0u051 = vec3(H_3rhr5j1.x, H_3rhr5j1.y, PS_INPUT_gl_vPositionCs.z);
vec3 H_crm1bk1 = H_2k0u051 * g_vLightBinCounts.xyz;
vec3 vBin = floor(H_crm1bk1);
float flSliceStride = g_vLightBinCounts.x * g_vLightBinCounts.y;
float H_zt06yv1 = flSliceStride * vBin.z;
float H_sl3crk = g_vLightBinCounts.x * vBin.y;
float H_ekeiy11 = H_sl3crk + H_zt06yv1;
float flBinIndex = H_ekeiy11 + vBin.x;
float H_lhc1vr1 = flBinIndex * C_3d0;
float H_bhhrrr1 = H_lhc1vr1 + C_0d1;
float flBinTexel = H_bhhrrr1 * g_vInvLightTextureDims.w;
vec2 H_23b4ob1 = C_a1z03r;
H_23b4ob1.y = flBinTexel;
vec4 nTmp = textureLod(g_tTotalLightBuffer, H_23b4ob1, C_0d0);
vec4 H_k19b9d1 = nTmp * C_saeofs1;
ivec4 nTmp1 = ivec4(uvec4(H_k19b9d1));
int H_f8ejai = nTmp1.x & C_255;
float H_8sn2351 = float(H_f8ejai);
param = C_vec3p0d0p;
param1 = C_vec3p0d0p;
p = C_0d0;
while (true) {
bool H_v4s46m1 = p >= H_8sn2351;
if (H_v4s46m1) {
break;
}
float H_9f0psb = p * C_2d0;
float H_p8bo5e1 = H_9f0psb + C_1d49;
float H_fm3p4k = H_p8bo5e1 * g_vInvLightTextureDims.x;
vec2 H_jbpdv = vec2(H_fm3p4k, flBinTexel);
vec4 vPosAndInvRadiusTexel = textureLod(g_tTotalLightBuffer, H_jbpdv, C_0d0);
vec4 vPosAndInvRadiusTexel1 = textureLodOffset(g_tTotalLightBuffer, H_jbpdv, C_0d0, C_ivec2p0ca1p);
vec4 vValueAndFalloffTexel = textureLodOffset(g_tTotalLightBuffer, H_jbpdv, C_0d0, C_ivec2p0ca2p);
vec4 H_vg5uno = vPosAndInvRadiusTexel1 / C_nbttmd1;
vec4 vNormalized = H_vg5uno + vPosAndInvRadiusTexel;
vec4 H_gg6b5g = vNormalized * C_vec4p2d0p;
vec4 H_j16khu = H_gg6b5g + C_vec4pa1d0p;
vec4 H_zxnfe21 = H_j16khu * C_iigfsx;
vec3 H_kka3fr1 = vValueAndFalloffTexel.xyz * C_s2237k;
float H_m0lmja = vValueAndFalloffTexel.w * C_65535d0;
float H_tc9n71 = mod(H_m0lmja, C_256d0);
float H_u7m6mw = H_m0lmja * C_0d00390625;
float vResult3 = floor(H_u7m6mw);
vec2 H_v7uo3d1 = vec2(vResult3, H_tc9n71);
vec2 H_jfo7ye1 = H_v7uo3d1 * C_nkogse1;
vec3 vPosToLightRay = H_zxnfe21.xyz - PS_INPUT_gl_vPositionWs;
float flDistToLightSq = dot(vPosToLightRay, vPosToLightRay);
vec3 result = normalize(vPosToLightRay);
float flDistToLightSq1 = max(flDistToLightSq, C_8d0);
float H_p451gq = H_zxnfe21.w * H_zxnfe21.w;
vec2 H_lulrxt1 = vec2(H_zxnfe21.w, H_p451gq);
float vLightDistAndLightDistSq = sqrt(flDistToLightSq1);
vec2 H_hxshn = vec2(vLightDistAndLightDistSq, flDistToLightSq1);
float flTruncation = dot(H_jfo7ye1, H_lulrxt1);
float flFalloff = dot(H_jfo7ye1, H_hxshn);
float H_zuu2461 = C_1d0 / flFalloff;
float param8 = H_zuu2461 - flTruncation;
float misc3a7 = clamp(param8, C_0d0, C_1d0);
vec3 H_24itka1 = vec3(misc3a7);
vec3 H_ifsyt2 = H_24itka1 * H_kka3fr1;
float misc2a4 = dot(result, vGeometricNormalWs);
float misc3a8 = clamp(misc2a4, C_0d0, C_1d0);
vec3 H_p7hbla1 = vec3(misc3a8);
vec3 H_jrk8vk1 = H_ifsyt2 * H_p7hbla1;
vec3 H_ahrthv = H_jrk8vk1 + param1;
vec3 H_ja3lfd1 = result - H_kkgz3m;
vec3 vHalfVectorDir1 = normalize(H_ja3lfd1);
float misc2a5 = dot(vHalfVectorDir1, vGeometricNormalWs);
float misc3a9 = clamp(misc2a5, C_0d0, C_1d0);
float flResult2 = pow(misc3a9, flSpecularExponent2);
float flResult3 = H_18tjki1 * flResult2;
vec3 H_92rp7t1 = vec3(flResult3);
vec3 H_37v1jo = H_92rp7t1 * H_jrk8vk1;
vec3 H_8g6f9e = H_37v1jo + param;
float H_b2u81e1 = C_1d0 + p;
param = H_8g6f9e;
param1 = H_ahrthv;
p = H_b2u81e1;
}
int H_4dij9g1 = nTmp1.y & C_255;
int H_d40csw = int(uint(nTmp1.x) >> uint(C_8));
float H_c2ksni = float(H_d40csw);
float H_7na65o = float(H_4dij9g1);
float H_ikwb9l1 = C_2d0 * H_8sn2351;
float flOffsetToStartOfSpotLights = C_1d49 + H_ikwb9l1;
vec4 H_yv76no = vec4(PS_INPUT_gl_vPositionWs.x, PS_INPUT_gl_vPositionWs.y, PS_INPUT_gl_vPositionWs.z, C_1d0);
float dotres = dot(H_yv76no, C_xx1m2m1);
float H_zcsvjn1 = C_1d0 / g_vLightCookieSheetSequenceAndSizes.y;
float H_w8wrnh = C_0d5 * g_vLightCookieSheetSequenceAndSizes.y;
float param9 = g_vLightCookieSheetSequenceAndSizes.y + C_a2d0;
float H_0iw6qj1 = C_2d0 * g_vLightCookieSheetSequenceAndSizes.z;
param2 = param;
param3 = param1;
s = C_0d0;
while (true) {
bool H_2hpykj1 = s >= H_c2ksni;
if (H_2hpykj1) {
break;
}
float H_kx5lr11 = C_2d0 * s;
float H_fhndzj = H_kx5lr11 + flOffsetToStartOfSpotLights;
float H_c3kgbi1 = H_fhndzj * g_vInvLightTextureDims.y;
vec2 H_mdj1cm1 = vec2(H_c3kgbi1, flBinTexel);
vec4 vPosAndInvRadiusTexel2 = textureLod(g_tTotalLightBuffer, H_mdj1cm1, C_0d0);
vec4 vPosAndInvRadiusTexel3 = textureLodOffset(g_tTotalLightBuffer, H_mdj1cm1, C_0d0, C_ivec2p0ca1p);
vec4 vValueAndFalloffTexel1 = textureLodOffset(g_tTotalLightBuffer, H_mdj1cm1, C_0d0, C_ivec2p0ca2p);
vec4 vNegDirAndSpotDotsTexel = textureLodOffset(g_tTotalLightBuffer, H_mdj1cm1, C_0d0, C_ivec2p1ca0p);
vec4 vCookieSeqData = textureLodOffset(g_tTotalLightBuffer, H_mdj1cm1, C_0d0, C_ivec2p1p);
vec4 H_xunjup1 = vPosAndInvRadiusTexel3 / C_nbttmd1;
vec4 vNormalized1 = H_xunjup1 + vPosAndInvRadiusTexel2;
vec4 H_rguu78 = C_vec4p2d0p * vNormalized1;
vec4 H_57vbec = C_vec4pa1d0p + H_rguu78;
vec4 H_mf8g231 = C_iigfsx * H_57vbec;
vec3 H_jhrm4p = C_s2237k * vValueAndFalloffTexel1.xyz;
float H_f79ilu1 = C_65535d0 * vValueAndFalloffTexel1.w;
float H_z5eou71 = mod(H_f79ilu1, C_256d0);
float H_4lcsze = C_0d00390625 * H_f79ilu1;
float vResult4 = floor(H_4lcsze);
vec2 H_c4wehm = vec2(vResult4, H_z5eou71);
vec2 H_okl1vr1 = C_nkogse1 * H_c4wehm;
vec3 H_loek0q = C_vec3p2d0p * vNegDirAndSpotDotsTexel.xyz;
vec3 H_e4y3go = C_vec3pa1d0p + H_loek0q;
float H_8jubeu1 = C_65535d0 * vNegDirAndSpotDotsTexel.w;
float H_0qbvee1 = mod(H_8jubeu1, C_256d0);
float H_jmp9de1 = C_0d00390625 * H_8jubeu1;
float vResult5 = floor(H_jmp9de1);
vec2 H_bvsgvs = vec2(vResult5, H_0qbvee1);
vec2 H_dy1x0l = C_nkogse1 * H_bvsgvs;
vec3 vPosToLightRay1 = H_mf8g231.xyz - PS_INPUT_gl_vPositionWs;
float flDistToLightSq2 = dot(vPosToLightRay1, vPosToLightRay1);
vec3 result1 = normalize(vPosToLightRay1);
float flDistToLightSq3 = max(flDistToLightSq2, C_8d0);
float H_5r7eib = H_mf8g231.w * H_mf8g231.w;
vec2 H_v92l0h = vec2(H_mf8g231.w, H_5r7eib);
float vLightDistAndLightDistSq1 = sqrt(flDistToLightSq3);
vec2 H_y60a6a1 = vec2(vLightDistAndLightDistSq1, flDistToLightSq3);
float flTruncation1 = dot(H_okl1vr1, H_v92l0h);
float flFalloff1 = dot(H_okl1vr1, H_y60a6a1);
float H_27whkx = C_1d0 / flFalloff1;
float parama = H_27whkx - flTruncation1;
float misc3aa = clamp(parama, C_0d0, C_1d0);
vec3 H_gshowf1 = vec3(misc3aa);
vec3 H_fb4he = H_gshowf1 * H_jhrm4p;
float flSpotDot = dot(result1, H_e4y3go);
float H_t2ruue1 = flSpotDot - H_dy1x0l.y;
float H_zay5t = H_dy1x0l.x - H_dy1x0l.y;
float flSpotAtten = max(C_0d01, H_zay5t);
float flSpotAtten1 = H_t2ruue1 / flSpotAtten;
float misc3ab = clamp(flSpotAtten1, C_0d0, C_1d0);
vec3 H_zam6i7 = vec3(misc3ab);
vec3 H_cr9fap1 = H_fb4he * H_zam6i7;
float misc2a6 = dot(result1, vGeometricNormalWs);
float misc3ac = clamp(misc2a6, C_0d0, C_1d0);
vec3 H_yrgvhh = vec3(misc3ac);
vec3 H_jk5xyc1 = H_cr9fap1 * H_yrgvhh;
vec3 vFwd = C_vec3p0d0p - H_e4y3go;
float H_v6z7w5 = abs(vFwd.x);
bool H_yibbhx1 = H_v6z7w5 < C_0d001;
float H_22e7nx = abs(vFwd.y);
bool H_zylklk = H_22e7nx < C_0d001;
bool H_5rr8oe = H_yibbhx1 && H_zylklk;
float H_1di1271 = C_0d0 - vFwd.z;
vec3 H_p52w5g = vec3(H_1di1271, C_0d0, C_0d0);
vec3 o_vLeft = cross(C_imhxe9, vFwd);
vec3 o_vLeft1 = normalize(o_vLeft);
vec3 o_vUp = cross(vFwd, o_vLeft1);
vec3 o_vUp1 = normalize(o_vUp);
vec3 select = H_5rr8oe ? H_p52w5g : o_vUp1;
vec3 select1 = H_5rr8oe ? C_sc72c91 : o_vLeft1;
float vInversePos = dot(H_mf8g231.xyz, select1);
float vInversePos1 = dot(H_mf8g231.xyz, select);
float H_l8s30e1 = C_0d0 - vInversePos1;
float vInversePos2 = dot(H_mf8g231.xyz, vFwd);
float H_fdsk5y = C_0d0 - select1.x;
float H_go6lvx = C_0d0 - select1.y;
float H_drzjpy = C_0d0 - select1.z;
float H_3za2i61 = C_0d0 - vFwd.x;
float H_4ap2861 = C_0d0 - vFwd.y;
vec4 H_qfit52 = vec4(H_fdsk5y, H_go6lvx, H_drzjpy, vInversePos);
vec4 H_03fp5r1 = vec4(select.x, select.y, select.z, H_l8s30e1);
vec4 H_4xihjl1 = vec4(H_3za2i61, H_4ap2861, H_1di1271, vInversePos2);
float H_5lnn4e = H_dy1x0l.y * H_dy1x0l.y;
float H_ofyf0s1 = C_1d0 - H_5lnn4e;
float invHalfWidth = sqrt(H_ofyf0s1);
float invHalfWidth1 = H_dy1x0l.y / invHalfWidth;
vec4 H_z1fvjd1 = vec4(invHalfWidth1, C_0d0, C_0d0, C_0d0);
vec4 H_5agmpi = C_obaw8x1;
H_5agmpi.yzw = vec3(invHalfWidth1, C_0d0, C_0d0);
float dotres1 = dot(H_yv76no, H_qfit52);
float dotres2 = dot(H_yv76no, H_03fp5r1);
float dotres3 = dot(H_yv76no, H_4xihjl1);
vec4 H_ut5zlt1 = vec4(dotres1, dotres2, dotres3, dotres);
float dotres4 = dot(H_ut5zlt1, H_z1fvjd1);
float dotres5 = dot(H_ut5zlt1, H_5agmpi);
float dotres6 = dot(H_ut5zlt1, C_we0rji1);
vec2 H_xngbnt1 = vec2(dotres6);
vec2 H_xwjaay1 = vec2(dotres4, dotres5);
vec2 H_r7196l = H_xwjaay1 / H_xngbnt1;
vec2 H_fv6pab = H_r7196l * C_z3wm3;
vec2 H_vnlhlx1 = C_vec2p0d5p + H_fv6pab;
float H_77eu6f = vCookieSeqData.z * C_32d0;
float H_s3b0i1 = C_65535d0 * vCookieSeqData.x;
float paramb = H_s3b0i1 - g_vLightCookieSheetSequenceAndSizes.w;
bool H_6495gg1 = paramb < C_0d0;
float phitmp = C_3d0 * H_s3b0i1;
float select2 = H_6495gg1 ? phitmp : C_0d0;
float H_6cgukj1 = g_vLightCookieSheetSequenceAndSizes.z * select2;
float H_nty0cn1 = H_6cgukj1 + g_vLightCookieSheetSequenceAndSizes.x;
vec2 H_23b4ob1r = C_a1z03r;
H_23b4ob1r.y = H_nty0cn1;
vec4 vecSequenceControlData = textureLod(g_tSheetTexture, H_23b4ob1r, C_0d0);
float H_yf4nvl1 = H_w8wrnh * vCookieSeqData.w;
float flSequenceIndexingTime = H_77eu6f * H_yf4nvl1;
float H_i2zja7 = fract(flSequenceIndexingTime);
float flTexFrameIndex = floor(flSequenceIndexingTime);
float flTexFrameIndex1 = C_2d0 * flTexFrameIndex;
bool H_ddp27s1 = vecSequenceControlData.z > C_0d0;
float misc2a7 = min(param9, flTexFrameIndex1);
float H_t4vn5g1 = mod(flTexFrameIndex1, g_vLightCookieSheetSequenceAndSizes.y);
float select3 = H_ddp27s1 ? misc2a7 : H_t4vn5g1;
float flTexFrameIndex2 = H_zcsvjn1 * select3;
vec2 H_4utd381 = vec2(flTexFrameIndex2, H_nty0cn1);
vec4 vFrameControlData = textureLod(g_tSheetTexture, H_4utd381, C_0d0);
float H_bhjmxk = mix(vFrameControlData.x, vFrameControlData.w, H_i2zja7);
float H_pzl34w = H_nty0cn1 + g_vLightCookieSheetSequenceAndSizes.z;
vec2 H_dayq761 = vec2(flTexFrameIndex2, H_pzl34w);
vec4 H_4yf2cd = textureLod(g_tSheetTexture, H_dayq761, C_0d0);
float H_769itc1 = H_0iw6qj1 + H_nty0cn1;
vec2 H_wxsvqm1 = vec2(flTexFrameIndex2, H_769itc1);
vec4 H_w7optm = textureLod(g_tSheetTexture, H_wxsvqm1, C_0d0);
float H_qa87mx1 = H_zcsvjn1 + flTexFrameIndex2;
vec2 H_njd98r1 = vec2(H_qa87mx1, H_pzl34w);
vec4 H_joqr7o = textureLod(g_tSheetTexture, H_njd98r1, C_0d0);
vec2 vCroppedSize = H_joqr7o.zw - H_joqr7o.xy;
vec2 H_snz1jx1 = H_4yf2cd.zw - H_4yf2cd.xy;
vec2 vUncroppedSize = H_snz1jx1 / vCroppedSize;
vec2 H_eq4nkd = H_joqr7o.xy * vUncroppedSize;
vec2 H_sz5hg7 = H_4yf2cd.xy - H_eq4nkd;
vec2 H_0kj79k = H_sz5hg7 + vUncroppedSize;
vec2 H_oniyk11 = H_w7optm.zw - H_w7optm.xy;
vec2 vUncroppedSize1 = H_oniyk11 / vCroppedSize;
vec2 H_1djq521 = H_joqr7o.xy * vUncroppedSize1;
vec2 H_pkjbas1 = H_w7optm.xy - H_1djq521;
vec2 H_xigcpp1 = H_pkjbas1 + vUncroppedSize1;
vec2 vTexCoord = mix(H_sz5hg7, H_0kj79k, H_vnlhlx1);
vec2 vTexCoord1 = mix(H_pkjbas1, H_xigcpp1, H_vnlhlx1);
vec4 vLightCookie = textureLod(g_tLightCookieTexture, vTexCoord, C_0d0);
vec4 vLightCookie1 = textureLod(g_tLightCookieTexture, vTexCoord1, C_0d0);
vec4 misc3ad = mix(vLightCookie, vLightCookie1, H_bhjmxk);
vec3 H_aczh4k = H_jk5xyc1 * misc3ad.xyz;
vec3 H_ouc784 = H_aczh4k + param3;
vec3 H_mlk88j = result1 - H_kkgz3m;
vec3 vHalfVectorDir2 = normalize(H_mlk88j);
float misc2a8 = dot(vHalfVectorDir2, vGeometricNormalWs);
float misc3ae = clamp(misc2a8, C_0d0, C_1d0);
float flResult4 = pow(misc3ae, flSpecularExponent2);
float flResult5 = H_18tjki1 * flResult4;
vec3 H_za00pj = vec3(flResult5);
vec3 H_pshl6z = H_aczh4k * H_za00pj;
vec3 H_hibhv1 = H_pshl6z + param2;
float H_arf8be1 = C_1d0 + s;
param2 = H_hibhv1;
param3 = H_ouc784;
s = H_arf8be1;
}
int H_wfe70u1 = int(uint(nTmp1.y) >> uint(C_8));
float H_2adnaf1 = float(H_wfe70u1);
float H_c4d8qt = C_2d0 * H_c2ksni;
float flOffsetToStartOfShadowedSpotLights = H_c4d8qt + flOffsetToStartOfSpotLights;
float H_zcsvjn1r = C_1d0 / g_vLightCookieSheetSequenceAndSizes.y;
float H_w8wrnhr = C_0d5 * g_vLightCookieSheetSequenceAndSizes.y;
float paramc = C_a2d0 + g_vLightCookieSheetSequenceAndSizes.y;
float H_0iw6qj1r = C_2d0 * g_vLightCookieSheetSequenceAndSizes.z;
param4 = param2;
param5 = param3;
ss = C_0d0;
while (true) {
bool H_30d9tc1 = ss >= H_7na65o;
if (H_30d9tc1) {
break;
}
float H_s1oxv = C_3d0 * ss;
float H_34nsla1 = H_s1oxv + flOffsetToStartOfShadowedSpotLights;
float H_afu0e91 = H_34nsla1 * g_vInvLightTextureDims.y;
vec2 H_j65khz = vec2(H_afu0e91, flBinTexel);
vec4 vPosAndInvRadiusTexel4 = textureLod(g_tTotalLightBuffer, H_j65khz, C_0d0);
vec4 vPosAndInvRadiusTexel5 = textureLodOffset(g_tTotalLightBuffer, H_j65khz, C_0d0, C_ivec2p0ca1p);
vec4 vValueAndFalloffTexel2 = textureLodOffset(g_tTotalLightBuffer, H_j65khz, C_0d0, C_ivec2p0ca2p);
vec4 vNegDirAndSpotDotsTexel1 = textureLodOffset(g_tTotalLightBuffer, H_j65khz, C_0d0, C_ivec2p1ca0p);
vec4 vShadowOffsetAndScaleTexel = textureLodOffset(g_tTotalLightBuffer, H_j65khz, C_0d0, C_ivec2p1ca2p);
vec4 H_r2qi8t1 = vPosAndInvRadiusTexel5 / C_nbttmd1;
vec4 vNormalized2 = H_r2qi8t1 + vPosAndInvRadiusTexel4;
vec4 H_q5guh8 = C_vec4p2d0p * vNormalized2;
vec4 H_hwqa2d1 = C_vec4pa1d0p + H_q5guh8;
vec4 H_6x80u91 = C_iigfsx * H_hwqa2d1;
float H_qgv25f = C_65535d0 * vValueAndFalloffTexel2.w;
float H_pe0bpm = mod(H_qgv25f, C_256d0);
float H_c56ge5 = C_0d00390625 * H_qgv25f;
float vResult6 = floor(H_c56ge5);
vec2 H_yins55 = vec2(vResult6, H_pe0bpm);
vec2 H_7p94re = C_nkogse1 * H_yins55;
vec3 H_igemsj1 = C_vec3p2d0p * vNegDirAndSpotDotsTexel1.xyz;
vec3 H_etak0c = C_vec3pa1d0p + H_igemsj1;
float H_h6gixq = C_65535d0 * vNegDirAndSpotDotsTexel1.w;
float H_v0ygox = mod(H_h6gixq, C_256d0);
float H_6x3iiv = C_0d00390625 * H_h6gixq;
float vResult7 = floor(H_6x3iiv);
vec2 H_qshepe = vec2(vResult7, H_v0ygox);
vec2 H_4zo2cr1 = C_nkogse1 * H_qshepe;
vec3 vPosToLightRay2 = H_6x80u91.xyz - PS_INPUT_gl_vPositionWs;
float flDistToLightSq4 = dot(vPosToLightRay2, vPosToLightRay2);
vec3 result2 = normalize(vPosToLightRay2);
float flDistToLightSq5 = max(flDistToLightSq4, C_8d0);
float H_prw4lr1 = H_6x80u91.w * H_6x80u91.w;
vec2 H_eo7sit = vec2(H_6x80u91.w, H_prw4lr1);
float vLightDistAndLightDistSq2 = sqrt(flDistToLightSq5);
vec2 H_fs4id51 = vec2(vLightDistAndLightDistSq2, flDistToLightSq5);
float flTruncation2 = dot(H_7p94re, H_eo7sit);
float flFalloff2 = dot(H_7p94re, H_fs4id51);
float H_3iaiax = C_1d0 / flFalloff2;
float paramd = H_3iaiax - flTruncation2;
float flSpotDot1 = dot(result2, H_etak0c);
float H_pqaoad = flSpotDot1 - H_4zo2cr1.y;
float H_v3rzqh = H_4zo2cr1.x - H_4zo2cr1.y;
float flSpotAtten2 = max(C_0d01, H_v3rzqh);
float flSpotAtten3 = H_pqaoad / flSpotAtten2;
float misc2a9 = dot(result2, vGeometricNormalWs);
vec3 vFwd1 = C_vec3p0d0p - H_etak0c;
float H_2i8l601 = abs(vFwd1.x);
bool H_b4jf5x = H_2i8l601 < C_0d001;
float H_bfy6y71 = abs(vFwd1.y);
bool H_z2ee9d1 = H_bfy6y71 < C_0d001;
bool H_8i3jl11 = H_b4jf5x && H_z2ee9d1;
float H_kr3fcq = C_0d0 - vFwd1.z;
vec3 H_uv24x51 = vec3(H_kr3fcq, C_0d0, C_0d0);
vec3 o_vLeft2 = cross(C_imhxe9, vFwd1);
vec3 o_vLeft3 = normalize(o_vLeft2);
vec3 o_vUp2 = cross(vFwd1, o_vLeft3);
vec3 o_vUp3 = normalize(o_vUp2);
vec3 select4 = H_8i3jl11 ? H_uv24x51 : o_vUp3;
vec3 select5 = H_8i3jl11 ? C_sc72c91 : o_vLeft3;
float vInversePos3 = dot(H_6x80u91.xyz, select5);
float vInversePos4 = dot(H_6x80u91.xyz, select4);
float H_qrr5mc1 = C_0d0 - vInversePos4;
float vInversePos5 = dot(H_6x80u91.xyz, vFwd1);
float H_bltvml1 = C_0d0 - select5.x;
float H_cw7wcl1 = C_0d0 - select5.y;
float H_9z0v6m1 = C_0d0 - select5.z;
float H_i5bewq = C_0d0 - vFwd1.x;
float H_huwd6r = C_0d0 - vFwd1.y;
vec4 H_l56tar = vec4(H_bltvml1, H_cw7wcl1, H_9z0v6m1, vInversePos3);
vec4 H_3ssh251 = vec4(select4.x, select4.y, select4.z, H_qrr5mc1);
vec4 H_vrncru1 = vec4(H_i5bewq, H_huwd6r, H_kr3fcq, vInversePos5);
float H_1qhn0m = H_4zo2cr1.y * H_4zo2cr1.y;
float H_x706n91 = C_1d0 - H_1qhn0m;
float invHalfWidth2 = sqrt(H_x706n91);
float invHalfWidth3 = H_4zo2cr1.y / invHalfWidth2;
vec4 H_ltgp6b = vec4(invHalfWidth3, C_0d0, C_0d0, C_0d0);
vec4 H_5agmpir = C_obaw8x1;
H_5agmpir.yzw = vec3(invHalfWidth3, C_0d0, C_0d0);
float dotres7 = dot(H_yv76no, H_l56tar);
float dotres8 = dot(H_yv76no, H_3ssh251);
float dotres9 = dot(H_yv76no, H_vrncru1);
vec4 H_0hkwri = vec4(dotres7, dotres8, dotres9, dotres);
float dotresa = dot(H_0hkwri, H_ltgp6b);
float dotresb = dot(H_0hkwri, H_5agmpir);
float dotresc = dot(H_0hkwri, C_we0rji1);
vec2 H_glxn421 = vec2(dotresc);
vec2 H_19v8771 = vec2(dotresa, dotresb);
vec2 H_tgipjx = H_19v8771 / H_glxn421;
vec2 H_uvtyzh1 = C_z3wm3 * H_tgipjx;
vec2 H_zuupwx1 = C_vec2p0d5p + H_uvtyzh1;
vec3 H_1oay9t1 = PS_INPUT_gl_vPositionWs - H_6x80u91.xyz;
float flDepth = length(H_1oay9t1);
float H_tymsch = H_6x80u91.w * flDepth;
float flDepth1 = H_tymsch + C_a0d0005;
vec4 H_6j0ool = vec4(flDepth1);
vec2 H_9o0wv71 = H_zuupwx1 * vShadowOffsetAndScaleTexel.zw;
vec2 vClipSpaceDynamic = H_9o0wv71 + vShadowOffsetAndScaleTexel.xy;
vec2 parame = vClipSpaceDynamic * C_1dcjhj;
vec2 H_gnbv1e1 = fract(parame);
vec2 vecBaseCoords = floor(parame);
vec2 vecBaseCoords1 = vecBaseCoords * C_8h509d;
float H_21lxxh1 = C_1d0 - H_gnbv1e1.x;
vec4 H_8f374v = vec4(H_gnbv1e1.x, H_21lxxh1, H_21lxxh1, H_gnbv1e1.x);
float H_1q6x7i1 = C_1d0 - H_gnbv1e1.y;
vec4 H_4d08vj = vec4(H_1q6x7i1, H_1q6x7i1, H_gnbv1e1.y, H_gnbv1e1.y);
float flSlopeScaleDepthBias = dot(vGeometricNormalWs, result2);
float flSlopeScaleDepthBias1 = abs(flSlopeScaleDepthBias);
float H_t3b8aj = C_1d0 - flSlopeScaleDepthBias1;
float H_10wrwv = C_0d001 * H_t3b8aj;
float flSlopeScaleDepthBias2 = C_0d001 + H_10wrwv;
vec4 H_pywzos1 = vec4(flSlopeScaleDepthBias2);
vec4 vecZValues1 = textureGatherOffset(g_tLightDepthBuffer, vecBaseCoords1, C_ivec2p0p);
vec4 H_g1d5401 = H_6x80u91.wwww * vecZValues1;
vecZValues[0] = H_g1d5401;
vec4 vecZValues2 = textureGatherOffset(g_tLightDepthBuffer, vecBaseCoords1, C_uturfy1);
vec4 H_d464y01 = H_6x80u91.wwww * vecZValues2;
vecZValues[1] = H_d464y01;
vec4 vecZValues3 = textureGatherOffset(g_tLightDepthBuffer, vecBaseCoords1, C_ivec2p0ca2p);
vec4 H_efk4o01 = H_6x80u91.wwww * vecZValues3;
vecZValues[2] = H_efk4o01;
vec4 vecZValues4 = textureGatherOffset(g_tLightDepthBuffer, vecBaseCoords1, C_k21d0v1);
vec4 H_jyj6az = H_6x80u91.wwww * vecZValues4;
vecZValues[3] = H_jyj6az;
vec4 vecZValues5 = textureGatherOffset(g_tLightDepthBuffer, vecBaseCoords1, C_ivec2p2ca0p);
vec4 H_k9y60z = H_6x80u91.wwww * vecZValues5;
vecZValues[4] = H_k9y60z;
vec4 vecZValues6 = textureGatherOffset(g_tLightDepthBuffer, vecBaseCoords1, C_ivec2pa2p);
vec4 H_hcr5uz = H_6x80u91.wwww * vecZValues6;
vecZValues[5] = H_hcr5uz;
vec4 vecZValues7 = textureGatherOffset(g_tLightDepthBuffer, vecBaseCoords1, C_cbwr2q);
vec4 H_in56kz = H_6x80u91.wwww * vecZValues7;
vecZValues[6] = H_in56kz;
vecZValues[7] = H_hcr5uz;
vecZValues[8] = H_in56kz;
i = C_0;
vecSumWeights = C_vec4p0d0p;
flShadow = C_0d0;
for ( ; i != 9; ++i) {
vec4 H_sv115d = vec4(C_aoycct[i].member2);
vec4 H_jp1bzk = H_8f374v * H_sv115d;
float vecOffsetXDiffs = dot(H_8f374v, C_aoycct[i].member0);
vec4 H_dcdpsc1 = vec4(vecOffsetXDiffs);
vec4 H_qlngcs = H_dcdpsc1 + H_jp1bzk;
vec4 vecOffsetXDiffs1 = C_aoycct[i].member1 + H_qlngcs;
vec4 H_vivyz51 = vec4(C_aoycct[i].member5);
vec4 H_h10gog = H_4d08vj * H_vivyz51;
float vecOffsetYDiffs = dot(H_4d08vj, C_aoycct[i].member3);
vec4 H_u4cz11 = vec4(vecOffsetYDiffs);
vec4 H_kc498u = H_h10gog + H_u4cz11;
vec4 vecOffsetYDiffs1 = C_aoycct[i].member4 + H_kc498u;
vec4 H_pxysxq1 = vecOffsetXDiffs1 * vecOffsetXDiffs1;
vec4 H_rr9ukx1 = vecOffsetYDiffs1 * vecOffsetYDiffs1;
vec4 flDistance = H_pxysxq1 + H_rr9ukx1;
vec4 H_g2vmw1 = flDistance * C_vec4pa1d4p;
vec4 H_gmiup6 = exp(H_g2vmw1);
vec4 H_v9wybe1 = vecOffsetXDiffs1 + vecOffsetYDiffs1;
vec4 H_twm3vt1 = H_pywzos1 * H_v9wybe1;
vec4 paramf = H_6j0ool - H_twm3vt1;
vec4 H_21ymhg = paramf - vecZValues[i];
vec4 H_hey6rq = H_21ymhg * C_vec4pa35d0p;
vec4 H_v1apo71 = exp(H_hey6rq);
vec4 misc2aa = min(C_vec4p1d0p, H_v1apo71);
float flShadow1 = dot(H_gmiup6, misc2aa);
float flShadow2 = flShadow + flShadow1;
vec4 vecSumWeights1 = H_gmiup6 + vecSumWeights;
vecSumWeights = vecSumWeights1;
flShadow = flShadow2;
}
float misc3af = clamp(paramd, C_0d0, C_1d0);
vec3 H_3n61991 = vec3(misc3af);
float misc3ag = clamp(flSpotAtten3, C_0d0, C_1d0);
vec3 H_241q8j1 = vec3(misc3ag);
float misc3ah = clamp(misc2a9, C_0d0, C_1d0);
vec3 H_p7089j1 = vec3(misc3ah);
vec4 vCookieSeqData1 = textureLodOffset(g_tTotalLightBuffer, H_j65khz, C_0d0, C_ivec2p1p);
vec3 H_qvsgk31 = C_s2237k * vValueAndFalloffTexel2.xyz;
vec3 H_2q0jst = H_3n61991 * H_qvsgk31;
vec3 H_w9261k1 = H_241q8j1 * H_2q0jst;
vec3 H_jqd86l1 = H_p7089j1 * H_w9261k1;
float misc2ab = dot(vecSumWeights, C_vec4p1d0p);
float H_2lmyq31 = C_1d0 / misc2ab;
float H_99ngm2 = H_2lmyq31 * flShadow;
vec3 H_o6p1mp = vec3(H_99ngm2);
vec3 H_azral81 = H_jqd86l1 * H_o6p1mp;
float H_mxz9ej1 = C_32d0 * vCookieSeqData1.z;
float H_jsog3o = C_65535d0 * vCookieSeqData1.x;
float paramg = H_jsog3o - g_vLightCookieSheetSequenceAndSizes.w;
bool H_te2b = paramg < C_0d0;
float phitmp1 = C_3d0 * H_jsog3o;
float select6 = H_te2b ? phitmp1 : C_0d0;
float H_24vsok1 = g_vLightCookieSheetSequenceAndSizes.z * select6;
float H_4etlk4 = H_24vsok1 + g_vLightCookieSheetSequenceAndSizes.x;
vec2 H_23b4ob1rr = C_a1z03r;
H_23b4ob1rr.y = H_4etlk4;
vec4 vecSequenceControlData1 = textureLod(g_tSheetTexture, H_23b4ob1rr, C_0d0);
float H_p4utpn = H_w8wrnhr * vCookieSeqData1.w;
float flSequenceIndexingTime1 = H_mxz9ej1 * H_p4utpn;
float H_d9smdi1 = fract(flSequenceIndexingTime1);
float flTexFrameIndex3 = floor(flSequenceIndexingTime1);
float flTexFrameIndex4 = C_2d0 * flTexFrameIndex3;
bool H_kfyb5s1 = vecSequenceControlData1.z > C_0d0;
float misc2ac = min(paramc, flTexFrameIndex4);
float H_y8x72k1 = mod(flTexFrameIndex4, g_vLightCookieSheetSequenceAndSizes.y);
float select7 = H_kfyb5s1 ? misc2ac : H_y8x72k1;
float flTexFrameIndex5 = H_zcsvjn1r * select7;
vec2 H_4ris5w = vec2(flTexFrameIndex5, H_4etlk4);
vec4 vFrameControlData1 = textureLod(g_tSheetTexture, H_4ris5w, C_0d0);
float H_5r83t6 = mix(vFrameControlData1.x, vFrameControlData1.w, H_d9smdi1);
float H_wldk0l1 = H_4etlk4 + g_vLightCookieSheetSequenceAndSizes.z;
vec2 H_d7ng8q1 = vec2(flTexFrameIndex5, H_wldk0l1);
vec4 H_nspqc61 = textureLod(g_tSheetTexture, H_d7ng8q1, C_0d0);
float H_010a9h1 = H_0iw6qj1r + H_4etlk4;
vec2 H_292pzm1 = vec2(flTexFrameIndex5, H_010a9h1);
vec4 H_6w3tbs = textureLod(g_tSheetTexture, H_292pzm1, C_0d0);
float H_38eiv6 = H_zcsvjn1r + flTexFrameIndex5;
vec2 H_i056si1 = vec2(H_38eiv6, H_wldk0l1);
vec4 H_y3refu = textureLod(g_tSheetTexture, H_i056si1, C_0d0);
vec2 vCroppedSize1 = H_y3refu.zw - H_y3refu.xy;
vec2 H_yyxkbm1 = H_nspqc61.zw - H_nspqc61.xy;
vec2 vUncroppedSize2 = H_yyxkbm1 / vCroppedSize1;
vec2 H_ewej6a1 = H_y3refu.xy * vUncroppedSize2;
vec2 H_8kd1aq = H_nspqc61.xy - H_ewej6a1;
vec2 H_k1n2dk1 = H_8kd1aq + vUncroppedSize2;
vec2 H_85hzpd1 = H_6w3tbs.zw - H_6w3tbs.xy;
vec2 vUncroppedSize3 = H_85hzpd1 / vCroppedSize1;
vec2 H_dl0jga1 = H_y3refu.xy * vUncroppedSize3;
vec2 H_5og1xp = H_6w3tbs.xy - H_dl0jga1;
vec2 H_z7whfu = H_5og1xp + vUncroppedSize3;
vec2 vTexCoord2 = mix(H_8kd1aq, H_k1n2dk1, H_zuupwx1);
vec2 vTexCoord3 = mix(H_5og1xp, H_z7whfu, H_zuupwx1);
vec4 vLightCookie2 = textureLod(g_tLightCookieTexture, vTexCoord2, C_0d0);
vec4 vLightCookie3 = textureLod(g_tLightCookieTexture, vTexCoord3, C_0d0);
vec4 misc3ai = mix(vLightCookie2, vLightCookie3, H_5r83t6);
vec3 H_l43v751 = H_azral81 * misc3ai.xyz;
vec3 H_zd406q1 = H_l43v751 + param5;
vec3 H_5emjs41 = result2 - H_kkgz3m;
vec3 vHalfVectorDir3 = normalize(H_5emjs41);
float misc2ad = dot(vHalfVectorDir3, vGeometricNormalWs);
float misc3aj = clamp(misc2ad, C_0d0, C_1d0);
float flResult6 = pow(misc3aj, flSpecularExponent2);
float flResult7 = H_18tjki1 * flResult6;
vec3 H_lmj11n = vec3(flResult7);
vec3 H_mq7o4r = H_l43v751 * H_lmj11n;
vec3 H_2gz06g = H_mq7o4r + param4;
float ss2 = C_1d0 + ss;
param4 = H_2gz06g;
param5 = H_zd406q1;
ss = ss2;
}
float H_ddl83f = C_3d0 * H_7na65o;
float flOffsetToStartOfIrradLights = H_ddl83f + flOffsetToStartOfShadowedSpotLights;
float H_gdb4931 = flOffsetToStartOfIrradLights * g_vInvLightTextureDims.x;
vec2 H_6dgwab = vec2(H_gdb4931, flBinTexel);
float H_sunnni1 = g_vInvLightTextureDims.x * C_4d0;
bvec3 H_pestvo = lessThan(vGeometricNormalWs, C_vec3p0d0p);
vec3 vIsNegative = vec3(H_pestvo);
vec3 vWeights = vGeometricNormalWs * vGeometricNormalWs;
vec3 vOffsets = mix(C_mhpmaf, C_puy8vs1, vIsNegative);
float H_jjpkbc1 = vOffsets.x * C_0d166667;
float H_oshiey = C_0d166667 * vOffsets.y;
float H_lvah8z = C_0d166667 * vOffsets.z;
ss1 = C_0d0;
vLightUv = H_6dgwab;
vDiffuse = C_vec3p0d0p;
flTotalWeight = C_0d0;
while (true) {
bool H_30qlk = ss1 >= H_2adnaf1;
if (H_30qlk) {
vDiffuse2 = vDiffuse;
flTotalWeight2 = flTotalWeight;
break;
}
float H_w82nbx1 = H_sunnni1 + vLightUv.x;
vec2 H_gr33c41 = vLightUv;
H_gr33c41.x = H_w82nbx1;
vec4 vRawBoundaryMapData = textureLodOffset(g_tTotalLightBuffer, vLightUv, C_0d0, C_ivec2p0ca1p);
vec4 vRawBoundaryMapData1 = textureLodOffset(g_tTotalLightBuffer, vLightUv, C_0d0, C_ivec2p0ca2p);
vec4 H_ljowms = C_saeofs1 * vRawBoundaryMapData;
vec4 vNegativeMask = step(C_vec4p256d0p, H_ljowms);
vec4 H_byxxbc = C_vec4p256d0p * vNegativeMask;
vec4 vExponent = H_ljowms - H_byxxbc;
vec4 vExponent1 = vExponent + C_pfdto3;
vec4 H_2gg4ek1 = C_vec4p1d0p + vRawBoundaryMapData1;
vec4 vResult8 = exp2(vExponent1);
vec4 vResult9 = H_2gg4ek1 * vResult8;
vec4 H_rngds2 = C_vec4p2d0p * vResult9;
vec4 H_dp4zn1 = H_rngds2 * vNegativeMask;
vec4 vResulta = vResult9 - H_dp4zn1;
float flBoundaryMap = C_65535d0 * vRawBoundaryMapData.w;
vec3 vDisplacement = PS_INPUT_gl_vPositionWs - vResulta.xyz;
vec4 H_ko1l2l1 = vec4(vDisplacement.x, vDisplacement.y, vDisplacement.z, flBoundaryMap);
vec4 vPlane = textureLod(g_tIrradBoundaryTexture, H_ko1l2l1, C_0d0);
float flWeight = length(vDisplacement);
float flWeight1 = smoothstep(vPlane.y, vPlane.x, flWeight);
float misc3ak = clamp(flWeight1, C_0d0, C_1d0);
bool H_abs4la = misc3ak == C_0d0;
if (H_abs4la) {
vDiffuse1 = vDiffuse;
flTotalWeight1 = flTotalWeight;
} else {
vec4 vRawRegionStart = textureLodOffset(g_tTotalLightBuffer, vLightUv, C_0d0, C_ivec2p0p);
vec4 vRawRegionSize = textureLodOffset(g_tTotalLightBuffer, vLightUv, C_0d0, C_ivec2p1ca0p);
vec4 vRawTransformRow = textureLodOffset(g_tTotalLightBuffer, vLightUv, C_0d0, C_ivec2p1p);
vec4 vRawTransformRow1 = textureLodOffset(g_tTotalLightBuffer, vLightUv, C_0d0, C_ivec2p1ca2p);
vec4 vRawTransformRow2 = textureLodOffset(g_tTotalLightBuffer, vLightUv, C_0d0, C_ivec2p2ca1p);
vec4 vRawTransformRow3 = textureLodOffset(g_tTotalLightBuffer, vLightUv, C_0d0, C_ivec2p2p);
vec4 vRawTransformRow4 = textureLodOffset(g_tTotalLightBuffer, vLightUv, C_0d0, C_ivec2p3ca1p);
vec4 vRawTransformRow5 = textureLodOffset(g_tTotalLightBuffer, vLightUv, C_0d0, C_ivec2p3ca2p);
vec4 H_zi3y7p = C_saeofs1 * vRawTransformRow;
vec4 vNegativeMask1 = step(C_vec4p256d0p, H_zi3y7p);
vec4 H_2dsvi2 = C_vec4p256d0p * vNegativeMask1;
vec4 vExponent2 = H_zi3y7p - H_2dsvi2;
vec4 vExponent3 = C_pfdto3 + vExponent2;
vec4 H_s7vg9u1 = C_vec4p1d0p + vRawTransformRow1;
vec4 vResultb = exp2(vExponent3);
vec4 vResultc = H_s7vg9u1 * vResultb;
vec4 H_d6z2um1 = C_vec4p2d0p * vResultc;
vec4 H_z8x42v = H_d6z2um1 * vNegativeMask1;
vec4 vResultd = vResultc - H_z8x42v;
vec4 H_bg4foz = C_saeofs1 * vRawTransformRow2;
vec4 vNegativeMask2 = step(C_vec4p256d0p, H_bg4foz);
vec4 H_3o6w82 = C_vec4p256d0p * vNegativeMask2;
vec4 vExponent4 = H_bg4foz - H_3o6w82;
vec4 vExponent5 = C_pfdto3 + vExponent4;
vec4 H_ql2gtu1 = C_vec4p1d0p + vRawTransformRow3;
vec4 vResulte = exp2(vExponent5);
vec4 vResultf = H_ql2gtu1 * vResulte;
vec4 H_ipy4gl1 = C_vec4p2d0p * vResultf;
vec4 H_hv68fn1 = H_ipy4gl1 * vNegativeMask2;
vec4 vResultg = vResultf - H_hv68fn1;
vec4 H_5mqcc11 = C_saeofs1 * vRawTransformRow4;
vec4 vNegativeMask3 = step(C_vec4p256d0p, H_5mqcc11);
vec4 H_4zkwy1 = C_vec4p256d0p * vNegativeMask3;
vec4 vExponent6 = H_5mqcc11 - H_4zkwy1;
vec4 vExponent7 = C_pfdto3 + vExponent6;
vec4 H_oz9fdv1 = C_vec4p1d0p + vRawTransformRow5;
vec4 vResulth = exp2(vExponent7);
vec4 vResulti = H_oz9fdv1 * vResulth;
vec4 H_7cl0io1 = C_vec4p2d0p * vResulti;
vec4 H_33zi91 = H_7cl0io1 * vNegativeMask3;
vec4 vResultj = vResulti - H_33zi91;
vec3 H_7ltmqh1 = vRawRegionStart.xyz * C_bwf7sr;
vec3 H_wbwp4u1 = C_bwf7sr * vRawRegionSize.xyz;
float flIrradWeight = misc3ak * vRawRegionSize.w;
float product = PS_INPUT_gl_vPositionWs.x * vResultd.x;
float product1 = PS_INPUT_gl_vPositionWs.y * vResultd.y;
float dotProduct = product + product1;
float product2 = PS_INPUT_gl_vPositionWs.z * vResultd.z;
float dotProduct1 = dotProduct + product2;
float dotProduct2 = dotProduct1 + vResultd.w;
float product3 = PS_INPUT_gl_vPositionWs.x * vResultg.x;
float product4 = PS_INPUT_gl_vPositionWs.y * vResultg.y;
float dotProduct3 = product3 + product4;
float product5 = PS_INPUT_gl_vPositionWs.z * vResultg.z;
float dotProduct4 = dotProduct3 + product5;
float dotProduct5 = dotProduct4 + vResultg.w;
float product6 = PS_INPUT_gl_vPositionWs.x * vResultj.x;
float product7 = PS_INPUT_gl_vPositionWs.y * vResultj.y;
float dotProduct6 = product6 + product7;
float product8 = PS_INPUT_gl_vPositionWs.z * vResultj.z;
float dotProduct7 = dotProduct6 + product8;
float dotProduct8 = dotProduct7 + vResultj.w;
vec3 H_mo5dbs1 = vec3(dotProduct2, dotProduct5, dotProduct8);
vec3 H_35ll3z = H_wbwp4u1 * C_5x6ds81;
vec3 vLookup = H_35ll3z * H_mo5dbs1;
vec3 H_7r1n191 = H_35ll3z + C_vec3pa0d5p;
vec3 vLookup1 = clamp(vLookup, C_vec3p0d5p, H_7r1n191);
vec3 vLookup2 = H_7ltmqh1 + vLookup1;
float H_88bd3b = H_jjpkbc1 * H_wbwp4u1.z;
float H_onqwhl = H_88bd3b + vLookup2.z;
vec3 H_zp4bqw = vLookup2;
H_zp4bqw.z = H_onqwhl;
vec3 H_n4b52s = H_zp4bqw * g_vIrradAtlasInvSize;
vec4 txt = textureLod(g_tIrradTexture, H_n4b52s, C_0d0);
vec3 H_h1evg81 = txt.xyz * vWeights.xxx;
float H_mkv809 = H_oshiey * H_wbwp4u1.z;
float H_eii36s1 = H_mkv809 + vLookup2.z;
vec3 H_zp4bqwr = vLookup2;
H_zp4bqwr.z = H_eii36s1;
vec3 H_19q9cf1 = H_zp4bqwr * g_vIrradAtlasInvSize;
vec4 txt1 = textureLod(g_tIrradTexture, H_19q9cf1, C_0d0);
vec3 H_r1uyh1 = txt1.xyz * vWeights.yyy;
vec3 H_cmavh7 = H_h1evg81 + H_r1uyh1;
float H_8t0s95 = H_lvah8z * H_wbwp4u1.z;
float H_82tf891 = H_8t0s95 + vLookup2.z;
vec3 H_zp4bqwrr = vLookup2;
H_zp4bqwrr.z = H_82tf891;
vec3 H_vtui6g = H_zp4bqwrr * g_vIrradAtlasInvSize;
vec4 txt2 = textureLod(g_tIrradTexture, H_vtui6g, C_0d0);
vec3 H_jv5p7w1 = txt2.xyz * vWeights.zzz;
vec3 H_64s0k9 = H_cmavh7 + H_jv5p7w1;
float H_16p0yx = C_1d0 - flTotalWeight;
float H_casr921 = H_16p0yx * flIrradWeight;
vec3 H_nhrjsi1 = vec3(H_casr921);
vec3 H_p5wod41 = H_64s0k9 * H_nhrjsi1;
Lg_8 = H_p5wod41 + vDiffuse;
Lg_9 = H_casr921 + flTotalWeight;
bool H_f1vi7y1 = Lg_9 == C_1d0;
if (H_f1vi7y1) {
vDiffuse2 = Lg_8;
flTotalWeight2 = Lg_9;
break;
}
vDiffuse1 = Lg_8;
flTotalWeight1 = Lg_9;
}
float ss3 = C_1d0 + ss1;
ss1 = ss3;
vLightUv = H_gr33c41;
vDiffuse = vDiffuse1;
flTotalWeight = flTotalWeight1;
}
vec4 H_8albvu1r = vec4(vGeometricNormalWs.x, vGeometricNormalWs.y, vGeometricNormalWs.z, C_1d0);
float vResultk = dot(H_8albvu1r, g_vGlobalLightingSHRed);
float vResultl = dot(H_8albvu1r, g_vGlobalLightingSHGreen);
float vResultm = dot(H_8albvu1r, g_vGlobalLightingSHBlue);
vec3 H_ckcv5e1 = vec3(vResultk, vResultl, vResultm);
vec3 vModulatedDiffuse = H_ckcv5e1 * vDiffuse2;
vec3 vDiffuse3 = mix(vDiffuse2, vModulatedDiffuse, g_flIrradGlobalLightingFactor);
float H_xo465v1 = C_1d0 - flTotalWeight2;
vec3 H_pbback = vec3(H_xo465v1);
vec3 H_u1s0w2 = H_ckcv5e1 * H_pbback;
vec3 H_kml4qd = H_u1s0w2 + vDiffuse3;
vec3 H_ucowsl = vGeometricNormalWs - vGeometricNormalWs;
float flDistSquared = dot(H_ucowsl, H_ucowsl);
float vDiffuse4 = pow(flDistSquared, C_0d3);
float paramh = vDiffuse4 * C_0d4;
float misc3al = clamp(paramh, C_0d0, C_1d0);
float H_p5ncri = C_1d0 - misc3al;
vec3 H_1n969v1 = vec3(H_p5ncri);
vec3 vDiffuse5 = H_1n969v1 * H_kml4qd;
vec3 H_v1ubz31 = flSsaoOcclusionFactor.xxx * param5;
vec3 H_qgkh7o1 = H_t1w49k + H_v1ubz31;
vec3 H_na8x3f1 = H_qtdg73 * vDiffuse5;
vec3 H_lmscow1 = H_na8x3f1 + H_qgkh7o1;
vec3 H_wc8cp31 = flSsaoOcclusionFactor.xxx * param4;
vec3 H_abev3u = H_9fzdl51 + H_wc8cp31;
gla_globalAgg1.member0 = H_lmscow1;
gla_globalAgg1.member1 = H_abev3u;
gla_globalAgg1.member2 = C_vec3p0d0p;
gla_globalAgg1.member3 = C_vec3p0d0p;
Lg_1 = g_vSunLightColor;
Lg_2 = g_vGlobalLightingSHBlue;
Lg_3 = g_vGlobalLightingSHGreen;
Lg_4 = g_vGlobalLightingSHRed;
Lg_5 = g_vSunLightDir;
Lg_6 = g_vCameraPositionWs;
Lg_7 = gla_globalAgg1;
}
vec3 H_aq65od = Lg_7.member0 * vAlbedo1;
vec3 H_4z5pgn1 = PS_INPUT_gl_vPositionWs - Lg_6;
vec3 flCosTheta = normalize(H_4z5pgn1);
float flCosTheta1 = dot(Lg_5, flCosTheta);
float H_p1ryiq = flCosTheta1 * flCosTheta1;
float H_oc1uf = C_1d0 + H_p1ryiq;
float H_2p0t561 = H_oc1uf * C_0d0596831;
vec3 H_48dmct = vec3(H_2p0t561);
vec3 vBrTheta = H_48dmct * g_vRayleighScatteringCoeff;
float H_l48k111 = g_flMieScatteringEccentricity * g_flMieScatteringEccentricity;
float flTop = C_1d0 - H_l48k111;
float H_mjzg82 = C_1d0 + H_l48k111;
float H_ei5fxd1 = C_2d0 * g_flMieScatteringEccentricity;
float H_g20pc5 = H_ei5fxd1 * flCosTheta1;
float H_r7vt0l1 = H_mjzg82 - H_g20pc5;
float flBottom = pow(H_r7vt0l1, C_1d5);
float H_uha3f = flTop * C_0d0795775;
float H_1xm5zq = H_uha3f / flBottom;
vec3 H_o0x0ue = vec3(H_1xm5zq);
vec3 vBmTheta = H_o0x0ue * g_vMieScatteringCoeff;
vec3 vBThetaCombined = vBmTheta + vBrTheta;
vec3 vBCombined = g_vMieScatteringCoeff + g_vRayleighScatteringCoeff;
float flDistance1 = length(H_4z5pgn1);
float H_a4mpl7 = C_0d0 - flDistance1;
vec3 H_1k70pg1 = vec3(H_a4mpl7);
vec3 H_ax9kjb = H_1k70pg1 * vBCombined;
vec3 vExtinction = exp(H_ax9kjb);
vec3 H_pqnhgy1 = C_vec3p0d5p * g_vRayleighScatteringCoeff;
vec3 H_cm01i6 = vec3(g_flMieForwardScatteringRatio);
vec3 H_qg4atm = H_cm01i6 * g_vMieScatteringCoeff;
vec3 vEnvironmentIllumFront = H_pqnhgy1 + H_qg4atm;
float H_yogzny = C_1d0 - g_flMieForwardScatteringRatio;
vec3 H_egi9ap1 = vec3(H_yogzny);
vec3 H_syuhss = H_egi9ap1 * g_vMieScatteringCoeff;
vec3 vEnvironmentIllumBack = H_pqnhgy1 + H_syuhss;
vec4 H_1cbphr = vec4(flCosTheta.x, flCosTheta.y, flCosTheta.z, C_1d0);
float vResultn = dot(H_1cbphr, Lg_4);
float vResulto = dot(H_1cbphr, Lg_3);
float vResultp = dot(H_1cbphr, Lg_2);
vec3 H_fjmm5h1 = vec3(vResultn, vResulto, vResultp);
vec3 vEnvironmentIllumFront1 = H_fjmm5h1 * vEnvironmentIllumFront;
vec3 parami = C_vec3p0d0p - flCosTheta;
vec4 H_6qeruk1 = vec4(parami.x, parami.y, parami.z, C_1d0);
float vResultq = dot(H_6qeruk1, Lg_4);
float vResultr = dot(H_6qeruk1, Lg_3);
float vResults = dot(H_6qeruk1, Lg_2);
vec3 H_61ttlx = vec3(vResultq, vResultr, vResults);
vec3 vEnvironmentIllumBack1 = H_61ttlx * vEnvironmentIllumBack;
vec3 H_citnh7 = Lg_1.xyz * vBThetaCombined;
vec3 H_4cspfo = vEnvironmentIllumBack1 + vEnvironmentIllumFront1;
vec3 H_6mr87f1 = H_4cspfo + H_citnh7;
vec3 H_ze5e4p1 = H_6mr87f1 / vBCombined;
vec3 H_jtt1ee1 = C_vec3p1d0p - vExtinction;
vec3 H_hjom0q1 = H_jtt1ee1 * H_ze5e4p1;
vec3 H_7v2cdx1 = H_aq65od * vExtinction;
vec3 H_jvs8nc1 = H_7v2cdx1 + H_hjom0q1;
float flDist = distance(PS_INPUT_gl_vPositionWs, Lg_6);
float H_j6vk5z = flDist * g_flInvFogRange;
float paramj = H_j6vk5z + g_flNegFogStartOverFogRange;
float misc3am = clamp(paramj, C_0d0, C_1d0);
float flFog = pow(misc3am, g_flFogExponent);
float misc2ae = min(g_flFogMaxDensity, flFog);
float misc3an = clamp(misc2ae, C_0d0, C_1d0);
vec3 misc3ao = mix(H_jvs8nc1, g_vFogColor, misc3an);
vec3 H_48eakq = vec3(g_flToneMapScalarLinear);
vec3 H_ljmaxs1 = H_48eakq * misc3ao;
vec4 H_3jupoo1 = vec4(H_ljmaxs1.x, H_ljmaxs1.y, H_ljmaxs1.z, C_1d0);
PS_OUTPUT_gl_vColor = H_3jupoo1;
}
// --------- GLSL source end ---------
BoolAttribute(SupportsMappingDimensions, true);
#if (S_MODE_PREPASS_GBUFFER == 0)
TextureAttribute(LightSim_DiffuseAlbedoTexture, g_tChannels);
TextureAttribute(RepresentativeTexture, g_tChannels);
#endif
#if (S_MODE_TOOLS_WIREFRAME == 0)
TextureAttribute(LightSim_DiffuseAlbedoTexture, g_tChannels);
TextureAttribute(RepresentativeTexture, g_tChannels);
#endif
#if (S_MODE_DEPTH == 0)
TextureAttribute(LightSim_DiffuseAlbedoTexture, g_tChannels);
TextureAttribute(RepresentativeTexture, g_tChannels);
#endif
#if (S_MODE_PROJ_DEPTH == 0)
TextureAttribute(LightSim_DiffuseAlbedoTexture, g_tChannels);
TextureAttribute(RepresentativeTexture, g_tChannels);
#endif
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment