Last active
August 15, 2023 01:53
-
-
Save QuackCola/e1e1035bf98836d45a692cbbbf894323 to your computer and use it in GitHub Desktop.
vrf decompiled output of l4d2_infected_pcgl .vcs files ( DOES NOT COMPILE )
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//================================================================================================= | |
// 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