Revert "materialsystem/shaderapidx9: restore shaders from source-sdk-2013"

This reverts commit cca56d5a6f.
This commit is contained in:
nillerusr 2022-03-28 00:45:52 +03:00
parent 654dbe09f3
commit 3b5065d73d
32 changed files with 3942 additions and 2375 deletions

View file

@ -12784,10 +12784,11 @@ void CShaderAPIDx8::GetDX9LightState( LightState_t *state ) const
state->m_nNumLights = MIN(MAX_NUM_LIGHTS,m_DynamicState.m_NumLights); state->m_nNumLights = MIN(MAX_NUM_LIGHTS,m_DynamicState.m_NumLights);
#else #else
state->m_nNumLights = m_DynamicState.m_NumLights; state->m_nNumLights = m_DynamicState.m_NumLights;
#endif #endif
state->m_nNumLights = m_DynamicState.m_NumLights; state->m_nNumLights = m_DynamicState.m_NumLights;
state->m_bStaticLight = m_pRenderMesh->HasColorMesh(); state->m_bStaticLightVertex = m_pRenderMesh->HasColorMesh();
state->m_bStaticLightVertex = false; state->m_bStaticLightTexel = false; // For now
} }
MaterialFogMode_t CShaderAPIDx8::GetCurrentFogType( void ) const MaterialFogMode_t CShaderAPIDx8::GetCurrentFogType( void ) const

View file

@ -180,7 +180,8 @@ BEGIN_VS_SHADER( DecalModulate_dx9,
{ {
DECLARE_DYNAMIC_VERTEX_SHADER( vertexlit_and_unlit_generic_vs20 ); DECLARE_DYNAMIC_VERTEX_SHADER( vertexlit_and_unlit_generic_vs20 );
SET_DYNAMIC_VERTEX_SHADER_COMBO( DYNAMIC_LIGHT, 0 ); // Use simplest possible vertex lighting, since ps is so simple SET_DYNAMIC_VERTEX_SHADER_COMBO( DYNAMIC_LIGHT, 0 ); // Use simplest possible vertex lighting, since ps is so simple
SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT, 0); // SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT_VERTEX, 0 ); //
SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT_LIGHTMAP, 0); //
SET_DYNAMIC_VERTEX_SHADER_COMBO( DOWATERFOG, fogIndex ); SET_DYNAMIC_VERTEX_SHADER_COMBO( DOWATERFOG, fogIndex );
SET_DYNAMIC_VERTEX_SHADER_COMBO( SKINNING, 0 ); SET_DYNAMIC_VERTEX_SHADER_COMBO( SKINNING, 0 );
SET_DYNAMIC_VERTEX_SHADER_COMBO( LIGHTING_PREVIEW, 0 ); SET_DYNAMIC_VERTEX_SHADER_COMBO( LIGHTING_PREVIEW, 0 );
@ -208,7 +209,8 @@ BEGIN_VS_SHADER( DecalModulate_dx9,
DECLARE_DYNAMIC_VERTEX_SHADER( vertexlit_and_unlit_generic_vs30 ); DECLARE_DYNAMIC_VERTEX_SHADER( vertexlit_and_unlit_generic_vs30 );
SET_DYNAMIC_VERTEX_SHADER_COMBO( DYNAMIC_LIGHT, 0 ); // Use simplest possible vertex lighting, since ps is so simple SET_DYNAMIC_VERTEX_SHADER_COMBO( DYNAMIC_LIGHT, 0 ); // Use simplest possible vertex lighting, since ps is so simple
SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT, 0); // SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT_VERTEX, 0 ); //
SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT_LIGHTMAP, 0); //
SET_DYNAMIC_VERTEX_SHADER_COMBO( DOWATERFOG, fogIndex ); SET_DYNAMIC_VERTEX_SHADER_COMBO( DOWATERFOG, fogIndex );
SET_DYNAMIC_VERTEX_SHADER_COMBO( SKINNING, pShaderAPI->GetCurrentNumBones() > 0 ); SET_DYNAMIC_VERTEX_SHADER_COMBO( SKINNING, pShaderAPI->GetCurrentNumBones() > 0 );
SET_DYNAMIC_VERTEX_SHADER_COMBO( LIGHTING_PREVIEW, 0 ); SET_DYNAMIC_VERTEX_SHADER_COMBO( LIGHTING_PREVIEW, 0 );

View file

@ -9,47 +9,62 @@ set TTEXE=time /t
:no_ttexe_end :no_ttexe_end
echo. echo.
echo ==================== buildshaders %* ================== rem echo ==================== buildshaders %* ==================
%TTEXE% -cur-Q %TTEXE% -cur-Q
set tt_start=%ERRORLEVEL% set tt_start=%ERRORLEVEL%
set tt_chkpt=%tt_start% set tt_chkpt=%tt_start%
REM **************** REM ****************
REM usage: buildshaders <shaderProjectName> REM usage: buildshaders <shaderProjectName> [-x360]
REM **************** REM ****************
setlocal setlocal
set arg_filename=%1 set arg_filename=%1
rem set shadercompilecommand=echo shadercompile.exe -mpi_graphics -mpi_TrackEvents
set shadercompilecommand=shadercompile.exe set shadercompilecommand=shadercompile.exe
set targetdir=shaders set shadercompileworkers=128
set x360_args=
set targetdir=..\..\..\game\hl2\shaders
set SrcDirBase=..\.. set SrcDirBase=..\..
set ChangeToDir=../../../game/bin
set shaderDir=shaders set shaderDir=shaders
set SDKArgs= set SDKArgs=
set SHADERINCPATH=vshtmp9/... fxctmp9/... set SHADERINCPATH=vshtmp9/... fxctmp9/...
if "%1" == "" goto usage
set inputbase=%1
set DIRECTX_SDK_VER=pc09.00 set DIRECTX_SDK_VER=pc09.00
set DIRECTX_SDK_BIN_DIR=dx9sdk\utilities set DIRECTX_SDK_BIN_DIR=dx9sdk\utilities
if /i "%6" == "-dx9_30" goto dx_sdk_dx9_30 if /i "%2" == "-x360" goto dx_sdk_x360
if /i "%2" == "-dx9_30" goto dx_sdk_dx9_30
if /i "%2" == "-dx10" goto dx_sdk_dx10
goto dx_sdk_end goto dx_sdk_end
:dx_sdk_x360
set DIRECTX_SDK_VER=x360.00
set DIRECTX_SDK_BIN_DIR=x360xdk\bin\win32
goto dx_sdk_end
:dx_sdk_dx9_30 :dx_sdk_dx9_30
set DIRECTX_SDK_VER=pc09.30 set DIRECTX_SDK_VER=pc09.30
set DIRECTX_SDK_BIN_DIR=dx10sdk\utilities\dx9_30 set DIRECTX_SDK_BIN_DIR=dx10sdk\utilities\dx9_30
goto dx_sdk_end goto dx_sdk_end
:dx_sdk_dx10
set DIRECTX_SDK_VER=pc10.00
set DIRECTX_SDK_BIN_DIR=dx10sdk\utilities\dx10_40
goto dx_sdk_end
:dx_sdk_end :dx_sdk_end
if /i "%7" == "-force30" goto set_force30_arg if "%1" == "" goto usage
set inputbase=%1
if /i "%3" == "-force30" goto set_force30_arg
goto set_force_end goto set_force_end
:set_force30_arg :set_force30_arg
set DIRECTX_FORCE_MODEL=30 set DIRECTX_FORCE_MODEL=30
goto set_force_end goto set_force_end
:set_force_end :set_force_end
if /i "%2" == "-x360" goto set_x360_args
if /i "%2" == "-game" goto set_mod_args if /i "%2" == "-game" goto set_mod_args
goto build_shaders goto build_shaders
@ -58,27 +73,35 @@ REM USAGE
REM **************** REM ****************
:usage :usage
echo. echo.
echo "usage: buildshaders <shaderProjectName> [-game] [gameDir if -game was specified] [-source sourceDir]" echo "usage: buildshaders <shaderProjectName> [-x360 or -dx10 or -game] [gameDir if -game was specified] [-source sourceDir]"
echo " gameDir is where gameinfo.txt is (where it will store the compiled shaders)." echo " gameDir is where gameinfo.txt is (where it will store the compiled shaders)."
echo " sourceDir is where the source code is (where it will find scripts and compilers)." echo " sourceDir is where the source code is (where it will find scripts and compilers)."
echo "ex : buildshaders myshaders" echo "ex : buildshaders myshaders"
echo "ex : buildshaders myshaders -game c:\steam\steamapps\sourcemods\mymod -source c:\mymod\src" echo "ex : buildshaders myshaders -game c:\steam\steamapps\sourcemods\mymod -source c:\mymod\src"
goto :end goto :end
REM ****************
REM X360 ARGS
REM ****************
:set_x360_args
set x360_args=-x360
set SHADERINCPATH=vshtmp9_360/... fxctmp9_360/...
goto build_shaders
REM **************** REM ****************
REM MOD ARGS - look for -game or the vproject environment variable REM MOD ARGS - look for -game or the vproject environment variable
REM **************** REM ****************
:set_mod_args :set_mod_args
if not exist "%SDKBINDIR%\shadercompile.exe" goto NoShaderCompile if not exist %sourcesdk%\bin\shadercompile.exe goto NoShaderCompile
set ChangeToDir=%SDKBINDIR% set ChangeToDir=%sourcesdk%\bin
if /i "%4" NEQ "-source" goto NoSourceDirSpecified if /i "%4" NEQ "-source" goto NoSourceDirSpecified
set SrcDirBase=%~5 set SrcDirBase=%~5
REM ** use the -game parameter to tell us where to put the files REM ** use the -game parameter to tell us where to put the files
set targetdir=%~3\shaders set targetdir=%~3\shaders
set SDKArgs=-nompi -nop4 -game "%~3" set SDKArgs=-nompi -game "%~3"
if not exist "%~3\gameinfo.txt" goto InvalidGameDirectory if not exist "%~3\gameinfo.txt" goto InvalidGameDirectory
goto build_shaders goto build_shaders
@ -100,7 +123,7 @@ goto end
:NoShaderCompile :NoShaderCompile
echo - echo -
echo - ERROR: shadercompile.exe doesn't exist in %SDKBINDIR% echo - ERROR: shadercompile.exe doesn't exist in %sourcesdk%\bin
echo - echo -
goto end goto end
@ -125,10 +148,16 @@ if exist filelistgen.txt del /f /q filelistgen.txt
if exist inclist.txt del /f /q inclist.txt if exist inclist.txt del /f /q inclist.txt
if exist vcslist.txt del /f /q vcslist.txt if exist vcslist.txt del /f /q vcslist.txt
REM ****************
REM Revert any targets (vcs or inc) that are opened for integrate.
REM ****************
perl "%SrcDirBase%\devtools\bin\p4revertshadertargets.pl" %x360_args% -source "%SrcDirBase%" %inputbase%
REM **************** REM ****************
REM Generate a makefile for the shader project REM Generate a makefile for the shader project
REM **************** REM ****************
perl "%SrcDirBase%\devtools\bin\updateshaders.pl" -source "%SrcDirBase%" %inputbase% perl "%SrcDirBase%\devtools\bin\updateshaders.pl" %x360_args% -source "%SrcDirBase%" %inputbase%
REM **************** REM ****************
@ -143,7 +172,15 @@ REM Copy the inc files to their target
REM **************** REM ****************
if exist "inclist.txt" ( if exist "inclist.txt" (
echo Publishing shader inc files to target... echo Publishing shader inc files to target...
perl %SrcDirBase%\devtools\bin\copyshaderincfiles.pl inclist.txt perl %SrcDirBase%\devtools\bin\copyshaderincfiles.pl inclist.txt %x360_args%
)
REM ****************
REM Deal with perforce operations for inc files
REM ****************
if exist inclist.txt if not "%VALVE_NO_AUTO_P4_SHADERS%" == "1" (
echo Executing perforce operations on .inc files.
perl ..\..\devtools\bin\p4autocheckout.pl inclist.txt "Shader Auto Checkout INC" . %SHADERINCPATH%
) )
REM **************** REM ****************
@ -155,13 +192,19 @@ if /i "%DIRECTX_SDK_VER%" == "pc09.00" (
if /i "%DIRECTX_SDK_VER%" == "pc09.30" ( if /i "%DIRECTX_SDK_VER%" == "pc09.30" (
echo %SrcDirBase%\devtools\bin\d3dx9_33.dll >> filestocopy.txt echo %SrcDirBase%\devtools\bin\d3dx9_33.dll >> filestocopy.txt
) )
if /i "%DIRECTX_SDK_VER%" == "pc10.00" (
echo %SrcDirBase%\devtools\bin\d3dx10_33.dll >> filestocopy.txt
)
if /i "%DIRECTX_SDK_VER%" == "x360.00" (
rem echo "Copy extra files for xbox360
)
echo %SrcDirBase%\%DIRECTX_SDK_BIN_DIR%\dx_proxy.dll >> filestocopy.txt echo %SrcDirBase%\%DIRECTX_SDK_BIN_DIR%\dx_proxy.dll >> filestocopy.txt
echo %SDKBINDIR%\shadercompile.exe >> filestocopy.txt echo %SrcDirBase%\..\game\bin\shadercompile.exe >> filestocopy.txt
echo %SDKBINDIR%\shadercompile_dll.dll >> filestocopy.txt echo %SrcDirBase%\..\game\bin\shadercompile_dll.dll >> filestocopy.txt
echo %SDKBINDIR%\vstdlib.dll >> filestocopy.txt echo %SrcDirBase%\..\game\bin\vstdlib.dll >> filestocopy.txt
echo %SDKBINDIR%\tier0.dll >> filestocopy.txt echo %SrcDirBase%\..\game\bin\tier0.dll >> filestocopy.txt
REM **************** REM ****************
REM Cull duplicate entries in work/build list REM Cull duplicate entries in work/build list
@ -170,6 +213,7 @@ if exist filestocopy.txt type filestocopy.txt | perl "%SrcDirBase%\devtools\bin\
if exist filelistgen.txt if not "%dynamic_shaders%" == "1" ( if exist filelistgen.txt if not "%dynamic_shaders%" == "1" (
echo Generating action list... echo Generating action list...
copy filelistgen.txt filelist.txt >nul copy filelistgen.txt filelist.txt >nul
rem %SrcDirBase%\devtools\bin\fxccombogen.exe <filelistgen.txt 1>nul 2>filelist.txt
) )
REM **************** REM ****************
@ -179,24 +223,29 @@ REM ****************
set shader_path_cd=%cd% set shader_path_cd=%cd%
if exist "filelist.txt" if exist "uniquefilestocopy.txt" if not "%dynamic_shaders%" == "1" ( if exist "filelist.txt" if exist "uniquefilestocopy.txt" if not "%dynamic_shaders%" == "1" (
echo Running distributed shader compilation... echo Running distributed shader compilation...
cd %ChangeToDir%
cd /D %ChangeToDir% %shadercompilecommand% -mpi_workercount %shadercompileworkers% -allowdebug -shaderpath "%shader_path_cd:/=\%" %x360_args% %SDKArgs%
echo %shadercompilecommand% %SDKArgs% -shaderpath "%shader_path_cd:/=\%" -allowdebug cd %shader_path_cd%
%shadercompilecommand% %SDKArgs% -shaderpath "%shader_path_cd:/=\%" -allowdebug
cd /D %shader_path_cd%
) )
REM **************** REM ****************
REM PC Shader copy REM PC and 360 Shader copy
REM Publish the generated files to the output dir using XCOPY REM Publish the generated files to the output dir using ROBOCOPY (smart copy) or XCOPY
REM This batch file may have been invoked standalone or slaved (master does final smart mirror copy) REM This batch file may have been invoked standalone or slaved (master does final smart mirror copy)
REM **************** REM ****************
:DoXCopy
if not "%dynamic_shaders%" == "1" ( if not "%dynamic_shaders%" == "1" (
if not exist "%targetdir%" md "%targetdir%" if exist makefile.%inputbase%.copy echo Publishing shaders to target...
if not "%targetdir%"=="%shaderDir%" xcopy %shaderDir%\*.* "%targetdir%" /e /y if exist makefile.%inputbase%.copy perl %SrcDirBase%\devtools\bin\copyshaders.pl makefile.%inputbase%.copy %x360_args%
)
REM ****************
REM Deal with perforce operations for vcs files
REM ****************
if not "%dynamic_shaders%" == "1" if exist vcslist.txt if not "%VALVE_NO_AUTO_P4_SHADERS%" == "1" (
echo Executing perforce operations on .vcs files.
perl ..\..\devtools\bin\p4autocheckout.pl vcslist.txt "Shader Auto Checkout VCS" ../../../game/hl2/shaders ../../../game/hl2/shaders/...
) )
goto end
REM **************** REM ****************
REM END REM END

View file

@ -19,9 +19,19 @@ if exist debug_dx9 rd /s /q debug_dx9
if exist fxctmp9 rd /s /q fxctmp9 if exist fxctmp9 rd /s /q fxctmp9
if exist vshtmp9 rd /s /q vshtmp9 if exist vshtmp9 rd /s /q vshtmp9
if exist pshtmp9 rd /s /q pshtmp9 if exist pshtmp9 rd /s /q pshtmp9
if exist fxctmp9_360 rd /s /q fxctmp9_360
if exist vshtmp9_360 rd /s /q vshtmp9_360
if exist pshtmp9_360 rd /s /q pshtmp9_360
if exist fxctmp9_tmp rd /s /q fxctmp9_tmp if exist fxctmp9_tmp rd /s /q fxctmp9_tmp
if exist vshtmp9_tmp rd /s /q vshtmp9_tmp if exist vshtmp9_tmp rd /s /q vshtmp9_tmp
if exist pshtmp9_tmp rd /s /q pshtmp9_tmp if exist pshtmp9_tmp rd /s /q pshtmp9_tmp
if exist fxctmp9_360_tmp rd /s /q fxctmp9_360_tmp
if exist vshtmp9_360_tmp rd /s /q vshtmp9_360_tmp
if exist pshtmp9_360_tmp rd /s /q pshtmp9_360_tmp
if exist shaders rd /s /q shaders if exist shaders rd /s /q shaders
goto end goto end

View file

@ -1,4 +1,4 @@
//========= Copyright Valve Corporation, All rights reserved. ============// //===== Copyright (c) 1996-2005, Valve Corporation, All rights reserved. ======//
// //
// Purpose: // Purpose:
// //
@ -6,18 +6,11 @@
// $NoKeywords: $ // $NoKeywords: $
//===========================================================================// //===========================================================================//
#include "shaderlib/cshader.h" #include "shaderlib/CShader.h"
#define USE_NEW_SHADER //Updating assembly shaders to fxc, this is for A/B testing.
#ifdef USE_NEW_SHADER
#include "unlitgeneric_vs20.inc"
#include "unlitgeneric_ps20.inc"
#include "unlitgeneric_ps20b.inc"
#endif
#include "debugluxel_ps20b.inc"
#include "debugluxel_ps20.inc"
#include "debugluxel_vs20.inc"
// memdbgon must be the last include file in a .cpp file!!! // memdbgon must be the last include file in a .cpp file!!!
@ -34,107 +27,71 @@ BEGIN_SHADER_FLAGS( DebugLuxels, "Help for DebugLuxels", SHADER_NOT_EDITABLE )
SET_FLAGS( MATERIAL_VAR_NO_DEBUG_OVERRIDE ); SET_FLAGS( MATERIAL_VAR_NO_DEBUG_OVERRIDE );
SET_FLAGS2( MATERIAL_VAR2_LIGHTING_LIGHTMAP ); SET_FLAGS2( MATERIAL_VAR2_LIGHTING_LIGHTMAP );
#ifdef USE_NEW_SHADER
if( g_pHardwareConfig->GetDXSupportLevel() >= 90 ) if( g_pHardwareConfig->GetDXSupportLevel() >= 90 )
{ {
SET_FLAGS2( MATERIAL_VAR2_SUPPORTS_HW_SKINNING ); SET_FLAGS2( MATERIAL_VAR2_SUPPORTS_HW_SKINNING );
} }
#endif
}
SHADER_INIT
{
LoadTexture( BASETEXTURE );
}
SHADER_DRAW
{
SHADOW_STATE
{
pShaderShadow->EnableTexture( SHADER_SAMPLER0, true );
if (IS_FLAG_SET(MATERIAL_VAR_TRANSLUCENT))
{
pShaderShadow->EnableBlending( true );
pShaderShadow->BlendFunc( SHADER_BLEND_SRC_ALPHA, SHADER_BLEND_ONE_MINUS_SRC_ALPHA );
}
if (IS_FLAG_SET(MATERIAL_VAR_VERTEXCOLOR))
pShaderShadow->DrawFlags( SHADER_DRAW_POSITION | SHADER_DRAW_COLOR | SHADER_DRAW_LIGHTMAP_TEXCOORD0 );
else
pShaderShadow->DrawFlags( SHADER_DRAW_POSITION | SHADER_DRAW_LIGHTMAP_TEXCOORD0 );
#ifdef USE_NEW_SHADER
if( g_pHardwareConfig->GetDXSupportLevel() >= 90 )
{
bool bVertexColor = IS_FLAG_SET(MATERIAL_VAR_VERTEXCOLOR);
DECLARE_STATIC_VERTEX_SHADER( unlitgeneric_vs20 );
SET_STATIC_VERTEX_SHADER_COMBO( VERTEXCOLOR, bVertexColor ? 1 : 0 );
SET_STATIC_VERTEX_SHADER( unlitgeneric_vs20 );
if( g_pHardwareConfig->SupportsPixelShaders_2_b() )
{
DECLARE_STATIC_PIXEL_SHADER( unlitgeneric_ps20b );
SET_STATIC_PIXEL_SHADER( unlitgeneric_ps20b );
}
else
{
DECLARE_STATIC_PIXEL_SHADER( unlitgeneric_ps20 );
SET_STATIC_PIXEL_SHADER( unlitgeneric_ps20 );
}
}
#endif
} }
DYNAMIC_STATE
SHADER_INIT
{ {
BindTexture( SHADER_SAMPLER0, BASETEXTURE, FRAME ); LoadTexture( BASETEXTURE );
}
int texCoordScaleX = 1, texCoordScaleY = 1; SHADER_DRAW
if (!params[NOSCALE]->GetIntValue()) {
SHADOW_STATE
{ {
pShaderAPI->GetLightmapDimensions( &texCoordScaleX, &texCoordScaleY ); pShaderShadow->EnableTexture( SHADER_SAMPLER0, true );
}
#ifdef USE_NEW_SHADER DECLARE_STATIC_VERTEX_SHADER( debugluxel_vs20 );
if( g_pHardwareConfig->GetDXSupportLevel() >= 90 ) SET_STATIC_VERTEX_SHADER( debugluxel_vs20 );
{
float vVertexColor[4] = { IS_FLAG_SET(MATERIAL_VAR_VERTEXCOLOR) ? 1.0f : 0.0f, 0.0f, 0.0f, 0.0f };
pShaderAPI->SetVertexShaderConstant( VERTEX_SHADER_SHADER_SPECIFIC_CONST_6, vVertexColor, 1 );
DECLARE_DYNAMIC_VERTEX_SHADER( unlitgeneric_vs20 );
SET_DYNAMIC_VERTEX_SHADER_COMBO( DOWATERFOG, pShaderAPI->GetSceneFogMode() == MATERIAL_FOG_LINEAR_BELOW_FOG_Z );
SET_DYNAMIC_VERTEX_SHADER_COMBO( SKINNING, pShaderAPI->GetCurrentNumBones() > 0 );
SET_DYNAMIC_VERTEX_SHADER_COMBO( COMPRESSED_VERTS, (int)vertexCompression );
SET_DYNAMIC_VERTEX_SHADER( unlitgeneric_vs20 );
if( g_pHardwareConfig->SupportsPixelShaders_2_b() ) if( g_pHardwareConfig->SupportsPixelShaders_2_b() )
{ {
DECLARE_DYNAMIC_PIXEL_SHADER( unlitgeneric_ps20b ); DECLARE_STATIC_PIXEL_SHADER( debugluxel_ps20b );
SET_DYNAMIC_PIXEL_SHADER( unlitgeneric_ps20b ); SET_STATIC_PIXEL_SHADER( debugluxel_ps20b );
} }
else else
{ {
DECLARE_DYNAMIC_PIXEL_SHADER( unlitgeneric_ps20 ); DECLARE_STATIC_PIXEL_SHADER( debugluxel_ps20 );
SET_DYNAMIC_PIXEL_SHADER( unlitgeneric_ps20 ); SET_STATIC_PIXEL_SHADER( debugluxel_ps20 );
}
SetDefaultBlendingShadowState( BASETEXTURE );
DisableFog();
pShaderShadow->VertexShaderVertexFormat( VERTEX_POSITION, 2, NULL, 0 );
}
DYNAMIC_STATE
{
BindTexture( SHADER_SAMPLER0, BASETEXTURE, FRAME );
int texCoordScaleX = 1, texCoordScaleY = 1;
if (!params[NOSCALE]->GetIntValue())
{
pShaderAPI->GetLightmapDimensions( &texCoordScaleX, &texCoordScaleY );
}
DECLARE_DYNAMIC_VERTEX_SHADER( debugluxel_vs20 );
SET_DYNAMIC_VERTEX_SHADER( debugluxel_vs20 );
if( g_pHardwareConfig->SupportsPixelShaders_2_b() )
{
DECLARE_DYNAMIC_PIXEL_SHADER( debugluxel_ps20b );
SET_DYNAMIC_PIXEL_SHADER( debugluxel_ps20b );
}
else
{
DECLARE_DYNAMIC_PIXEL_SHADER( debugluxel_ps20 );
SET_DYNAMIC_PIXEL_SHADER( debugluxel_ps20 );
} }
//texture scale transform //texture scale transform
Vector4D transformation[2]; Vector4D transformation[2];
transformation[0].Init( (float)texCoordScaleX, 0.0f, 0.0f, 0.0f ); transformation[0].Init( texCoordScaleX, 0.0f, 0.0f, 0.0f );
transformation[1].Init( 0.0f, (float)texCoordScaleY, 0.0f, 0.0f ); transformation[1].Init( 0.0f, texCoordScaleY, 0.0f, 0.0f );
s_pShaderAPI->SetVertexShaderConstant( VERTEX_SHADER_SHADER_SPECIFIC_CONST_0, transformation[0].Base(), 2 ); s_pShaderAPI->SetVertexShaderConstant( VERTEX_SHADER_SHADER_SPECIFIC_CONST_0, transformation[0].Base(), 2 );
} }
else Draw();
#endif
{
if (!params[NOSCALE]->GetIntValue())
{
pShaderAPI->MatrixMode( MATERIAL_TEXTURE0 );
pShaderAPI->LoadIdentity( );
pShaderAPI->ScaleXY( texCoordScaleX, texCoordScaleY );
}
}
} }
Draw();
}
END_SHADER END_SHADER

View file

@ -1,11 +1,14 @@
//========= Copyright Valve Corporation, All rights reserved. ============//
#include "BaseVSShader.h" #include "BaseVSShader.h"
// This one isn't supported on dx8 // This one isn't supported on dx8
DEFINE_FALLBACK_SHADER( SDK_DepthWrite, Wireframe ) DEFINE_FALLBACK_SHADER( DepthWrite, Wireframe )
DEFINE_FALLBACK_SHADER( SDK_EyeRefract, Eyes_dx8 ) DEFINE_FALLBACK_SHADER( EyeRefract, Eyes_dx8 )
DEFINE_FALLBACK_SHADER( SDK_VolumeClouds, UnlitGeneric_DX8 ) DEFINE_FALLBACK_SHADER( bik, bik_dx81 )
DEFINE_FALLBACK_SHADER( VolumeClouds, UnlitGeneric_DX8 )
DEFINE_FALLBACK_SHADER( DebugTextureView, UnlitGeneric_DX8 )
// FIXME: These aren't supported on dx8, but need to be. // FIXME: These aren't supported on dx8, but need to be.
DEFINE_FALLBACK_SHADER( SDK_EyeGlint, EyeGlint ) DEFINE_FALLBACK_SHADER( EyeGlint, Wireframe )
DEFINE_FALLBACK_SHADER( SDK_AfterShock, AfterShock ) DEFINE_FALLBACK_SHADER( AfterShock, Wireframe )

View file

@ -19,7 +19,7 @@
static ConVar mat_fullbright( "mat_fullbright", "0", FCVAR_CHEAT ); static ConVar mat_fullbright( "mat_fullbright", "0", FCVAR_CHEAT );
static ConVar r_lightwarpidentity( "r_lightwarpidentity", "0", FCVAR_CHEAT ); static ConVar r_lightwarpidentity( "r_lightwarpidentity", "0", FCVAR_CHEAT );
static ConVar r_rimlight( "r_rimlight", "1", FCVAR_CHEAT ); static ConVar r_rimlight( "r_rimlight", "1", FCVAR_NONE );
// Textures may be bound to the following samplers: // Textures may be bound to the following samplers:
// SHADER_SAMPLER0 Base (Albedo) / Gloss in alpha // SHADER_SAMPLER0 Base (Albedo) / Gloss in alpha

View file

@ -288,7 +288,7 @@ void Draw_Eyes_Refract_Internal( CBaseVSShader *pShader, IMaterialVar** params,
SET_DYNAMIC_VERTEX_SHADER_COMBO( DOWATERFOG, pShaderAPI->GetSceneFogMode() == MATERIAL_FOG_LINEAR_BELOW_FOG_Z ); SET_DYNAMIC_VERTEX_SHADER_COMBO( DOWATERFOG, pShaderAPI->GetSceneFogMode() == MATERIAL_FOG_LINEAR_BELOW_FOG_Z );
SET_DYNAMIC_VERTEX_SHADER_COMBO( SKINNING, pShaderAPI->GetCurrentNumBones() > 0 ); SET_DYNAMIC_VERTEX_SHADER_COMBO( SKINNING, pShaderAPI->GetCurrentNumBones() > 0 );
SET_DYNAMIC_VERTEX_SHADER_COMBO( DYNAMIC_LIGHT, lightState.HasDynamicLight() ); SET_DYNAMIC_VERTEX_SHADER_COMBO( DYNAMIC_LIGHT, lightState.HasDynamicLight() );
SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT, lightState.m_bStaticLight ? 1 : 0 ); SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT, lightState.m_bStaticLightVertex ? 1 : 0 );
SET_DYNAMIC_VERTEX_SHADER_COMBO( NUM_LIGHTS, lightState.m_nNumLights ); SET_DYNAMIC_VERTEX_SHADER_COMBO( NUM_LIGHTS, lightState.m_nNumLights );
SET_DYNAMIC_VERTEX_SHADER_COMBO( COMPRESSED_VERTS, (int)vertexCompression ); SET_DYNAMIC_VERTEX_SHADER_COMBO( COMPRESSED_VERTS, (int)vertexCompression );
SET_DYNAMIC_VERTEX_SHADER( eye_refract_vs20 ); SET_DYNAMIC_VERTEX_SHADER( eye_refract_vs20 );
@ -302,7 +302,7 @@ void Draw_Eyes_Refract_Internal( CBaseVSShader *pShader, IMaterialVar** params,
SET_DYNAMIC_VERTEX_SHADER_COMBO( DOWATERFOG, pShaderAPI->GetSceneFogMode() == MATERIAL_FOG_LINEAR_BELOW_FOG_Z ); SET_DYNAMIC_VERTEX_SHADER_COMBO( DOWATERFOG, pShaderAPI->GetSceneFogMode() == MATERIAL_FOG_LINEAR_BELOW_FOG_Z );
SET_DYNAMIC_VERTEX_SHADER_COMBO( SKINNING, pShaderAPI->GetCurrentNumBones() > 0 ); SET_DYNAMIC_VERTEX_SHADER_COMBO( SKINNING, pShaderAPI->GetCurrentNumBones() > 0 );
SET_DYNAMIC_VERTEX_SHADER_COMBO( DYNAMIC_LIGHT, lightState.HasDynamicLight() ); SET_DYNAMIC_VERTEX_SHADER_COMBO( DYNAMIC_LIGHT, lightState.HasDynamicLight() );
SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT, lightState.m_bStaticLight ? 1 : 0 ); SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT, lightState.m_bStaticLightVertex ? 1 : 0 );
SET_DYNAMIC_VERTEX_SHADER_COMBO( NUM_LIGHTS, lightState.m_nNumLights ); SET_DYNAMIC_VERTEX_SHADER_COMBO( NUM_LIGHTS, lightState.m_nNumLights );
SET_DYNAMIC_VERTEX_SHADER_COMBO( MORPHING, pShaderAPI->IsHWMorphingEnabled() ); SET_DYNAMIC_VERTEX_SHADER_COMBO( MORPHING, pShaderAPI->IsHWMorphingEnabled() );
SET_DYNAMIC_VERTEX_SHADER_COMBO( COMPRESSED_VERTS, (int)vertexCompression ); SET_DYNAMIC_VERTEX_SHADER_COMBO( COMPRESSED_VERTS, (int)vertexCompression );

View file

@ -421,7 +421,7 @@ static void DrawUsingVertexShader( bool bDX9, CBaseVSShader *pShader, IMaterialV
SET_DYNAMIC_VERTEX_SHADER_COMBO( DOWATERFOG, pShaderAPI->GetSceneFogMode() == MATERIAL_FOG_LINEAR_BELOW_FOG_Z ); SET_DYNAMIC_VERTEX_SHADER_COMBO( DOWATERFOG, pShaderAPI->GetSceneFogMode() == MATERIAL_FOG_LINEAR_BELOW_FOG_Z );
SET_DYNAMIC_VERTEX_SHADER_COMBO( SKINNING, pShaderAPI->GetCurrentNumBones() > 0 ); SET_DYNAMIC_VERTEX_SHADER_COMBO( SKINNING, pShaderAPI->GetCurrentNumBones() > 0 );
SET_DYNAMIC_VERTEX_SHADER_COMBO( DYNAMIC_LIGHT, lightState.HasDynamicLight() ); SET_DYNAMIC_VERTEX_SHADER_COMBO( DYNAMIC_LIGHT, lightState.HasDynamicLight() );
SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT, lightState.m_bStaticLight ? 1 : 0 ); SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT, lightState.m_bStaticLightVertex ? 1 : 0 );
SET_DYNAMIC_VERTEX_SHADER_COMBO( COMPRESSED_VERTS, (int)vertexCompression ); SET_DYNAMIC_VERTEX_SHADER_COMBO( COMPRESSED_VERTS, (int)vertexCompression );
SET_DYNAMIC_VERTEX_SHADER_COMBO( NUM_LIGHTS, bUseStaticControlFlow ? 0 : lightState.m_nNumLights ); SET_DYNAMIC_VERTEX_SHADER_COMBO( NUM_LIGHTS, bUseStaticControlFlow ? 0 : lightState.m_nNumLights );
SET_DYNAMIC_VERTEX_SHADER( eyes_vs20 ); SET_DYNAMIC_VERTEX_SHADER( eyes_vs20 );
@ -435,7 +435,7 @@ static void DrawUsingVertexShader( bool bDX9, CBaseVSShader *pShader, IMaterialV
SET_DYNAMIC_VERTEX_SHADER_COMBO( DOWATERFOG, pShaderAPI->GetSceneFogMode() == MATERIAL_FOG_LINEAR_BELOW_FOG_Z ); SET_DYNAMIC_VERTEX_SHADER_COMBO( DOWATERFOG, pShaderAPI->GetSceneFogMode() == MATERIAL_FOG_LINEAR_BELOW_FOG_Z );
SET_DYNAMIC_VERTEX_SHADER_COMBO( SKINNING, pShaderAPI->GetCurrentNumBones() > 0 ); SET_DYNAMIC_VERTEX_SHADER_COMBO( SKINNING, pShaderAPI->GetCurrentNumBones() > 0 );
SET_DYNAMIC_VERTEX_SHADER_COMBO( DYNAMIC_LIGHT, lightState.HasDynamicLight() ); SET_DYNAMIC_VERTEX_SHADER_COMBO( DYNAMIC_LIGHT, lightState.HasDynamicLight() );
SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT, lightState.m_bStaticLight ? 1 : 0 ); SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT, lightState.m_bStaticLightVertex ? 1 : 0 );
SET_DYNAMIC_VERTEX_SHADER_COMBO( MORPHING, pShaderAPI->IsHWMorphingEnabled() ); SET_DYNAMIC_VERTEX_SHADER_COMBO( MORPHING, pShaderAPI->IsHWMorphingEnabled() );
SET_DYNAMIC_VERTEX_SHADER_COMBO( COMPRESSED_VERTS, (int)vertexCompression ); SET_DYNAMIC_VERTEX_SHADER_COMBO( COMPRESSED_VERTS, (int)vertexCompression );
SET_DYNAMIC_VERTEX_SHADER( eyes_vs30 ); SET_DYNAMIC_VERTEX_SHADER( eyes_vs30 );

View file

@ -228,7 +228,7 @@ void DrawFleshInteriorBlendedPass( CBaseVSShader *pShader, IMaterialVar** params
SET_DYNAMIC_VERTEX_SHADER_COMBO( DOWATERFOG, pShaderAPI->GetSceneFogMode() == MATERIAL_FOG_LINEAR_BELOW_FOG_Z ); SET_DYNAMIC_VERTEX_SHADER_COMBO( DOWATERFOG, pShaderAPI->GetSceneFogMode() == MATERIAL_FOG_LINEAR_BELOW_FOG_Z );
SET_DYNAMIC_VERTEX_SHADER_COMBO( SKINNING, pShaderAPI->GetCurrentNumBones() > 0 ); SET_DYNAMIC_VERTEX_SHADER_COMBO( SKINNING, pShaderAPI->GetCurrentNumBones() > 0 );
SET_DYNAMIC_VERTEX_SHADER_COMBO( DYNAMIC_LIGHT, lightState.HasDynamicLight() ); SET_DYNAMIC_VERTEX_SHADER_COMBO( DYNAMIC_LIGHT, lightState.HasDynamicLight() );
SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT, lightState.m_bStaticLight ? 1 : 0 ); SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT, lightState.m_bStaticLightVertex ? 1 : 0 );
SET_DYNAMIC_VERTEX_SHADER_COMBO( COMPRESSED_VERTS, (int)vertexCompression ); SET_DYNAMIC_VERTEX_SHADER_COMBO( COMPRESSED_VERTS, (int)vertexCompression );
SET_DYNAMIC_VERTEX_SHADER_COMBO( NUM_LIGHTS, bUseStaticControlFlow ? 0 : lightState.m_nNumLights ); SET_DYNAMIC_VERTEX_SHADER_COMBO( NUM_LIGHTS, bUseStaticControlFlow ? 0 : lightState.m_nNumLights );
SET_DYNAMIC_VERTEX_SHADER( flesh_interior_blended_pass_vs20 ); SET_DYNAMIC_VERTEX_SHADER( flesh_interior_blended_pass_vs20 );

View file

@ -1,264 +1,462 @@
// ALL SKIP STATEMENTS THAT AFFECT THIS SHADER!!! #include "shaderlib/cshader.h"
// $USE_STATIC_CONTROL_FLOW && ( $NUM_LIGHTS > 0 ) class vertexlit_and_unlit_generic_vs20_Static_Index
// ($SEPARATE_DETAIL_UVS) && ($SEAMLESS_DETAIL) {
// ($DONT_GAMMA_CONVERT_VERTEX_COLOR && ( ! $VERTEXCOLOR ) ) private:
// defined $LIGHTING_PREVIEW && defined $FASTPATH && $LIGHTING_PREVIEW && $FASTPATH int m_nVERTEXCOLOR;
#ifdef _DEBUG
#ifndef VERTEXLIT_AND_UNLIT_GENERIC_VS20_H bool m_bVERTEXCOLOR;
#define VERTEXLIT_AND_UNLIT_GENERIC_VS20_H #endif
public:
#include "shaderapi/ishaderapi.h" void SetVERTEXCOLOR( int i )
#include "shaderapi/ishadershadow.h" {
#include "materialsystem/imaterialvar.h" Assert( i >= 0 && i <= 1 );
m_nVERTEXCOLOR = i;
class vertexlit_and_unlit_generic_vs20_Static_Index #ifdef _DEBUG
{ m_bVERTEXCOLOR = true;
unsigned int m_nVERTEXCOLOR : 2; #endif
unsigned int m_nCUBEMAP : 2; }
unsigned int m_nHALFLAMBERT : 2; void SetVERTEXCOLOR( bool i )
unsigned int m_nFLASHLIGHT : 2; {
unsigned int m_nSEAMLESS_BASE : 2; m_nVERTEXCOLOR = i ? 1 : 0;
unsigned int m_nSEAMLESS_DETAIL : 2; #ifdef _DEBUG
unsigned int m_nSEPARATE_DETAIL_UVS : 2; m_bVERTEXCOLOR = true;
unsigned int m_nUSE_STATIC_CONTROL_FLOW : 2; #endif
unsigned int m_nDONT_GAMMA_CONVERT_VERTEX_COLOR : 2; }
#ifdef _DEBUG private:
bool m_bVERTEXCOLOR : 1; int m_nCUBEMAP;
bool m_bCUBEMAP : 1; #ifdef _DEBUG
bool m_bHALFLAMBERT : 1; bool m_bCUBEMAP;
bool m_bFLASHLIGHT : 1; #endif
bool m_bSEAMLESS_BASE : 1; public:
bool m_bSEAMLESS_DETAIL : 1; void SetCUBEMAP( int i )
bool m_bSEPARATE_DETAIL_UVS : 1; {
bool m_bUSE_STATIC_CONTROL_FLOW : 1; Assert( i >= 0 && i <= 1 );
bool m_bDONT_GAMMA_CONVERT_VERTEX_COLOR : 1; m_nCUBEMAP = i;
#endif // _DEBUG #ifdef _DEBUG
public: m_bCUBEMAP = true;
void SetVERTEXCOLOR( int i ) #endif
{ }
Assert( i >= 0 && i <= 1 ); void SetCUBEMAP( bool i )
m_nVERTEXCOLOR = i; {
#ifdef _DEBUG m_nCUBEMAP = i ? 1 : 0;
m_bVERTEXCOLOR = true; #ifdef _DEBUG
#endif // _DEBUG m_bCUBEMAP = true;
} #endif
}
void SetCUBEMAP( int i ) private:
{ int m_nHALFLAMBERT;
Assert( i >= 0 && i <= 1 ); #ifdef _DEBUG
m_nCUBEMAP = i; bool m_bHALFLAMBERT;
#ifdef _DEBUG #endif
m_bCUBEMAP = true; public:
#endif // _DEBUG void SetHALFLAMBERT( int i )
} {
Assert( i >= 0 && i <= 1 );
void SetHALFLAMBERT( int i ) m_nHALFLAMBERT = i;
{ #ifdef _DEBUG
Assert( i >= 0 && i <= 1 ); m_bHALFLAMBERT = true;
m_nHALFLAMBERT = i; #endif
#ifdef _DEBUG }
m_bHALFLAMBERT = true; void SetHALFLAMBERT( bool i )
#endif // _DEBUG {
} m_nHALFLAMBERT = i ? 1 : 0;
#ifdef _DEBUG
void SetFLASHLIGHT( int i ) m_bHALFLAMBERT = true;
{ #endif
Assert( i >= 0 && i <= 1 ); }
m_nFLASHLIGHT = i; private:
#ifdef _DEBUG int m_nFLASHLIGHT;
m_bFLASHLIGHT = true; #ifdef _DEBUG
#endif // _DEBUG bool m_bFLASHLIGHT;
} #endif
public:
void SetSEAMLESS_BASE( int i ) void SetFLASHLIGHT( int i )
{ {
Assert( i >= 0 && i <= 1 ); Assert( i >= 0 && i <= 1 );
m_nSEAMLESS_BASE = i; m_nFLASHLIGHT = i;
#ifdef _DEBUG #ifdef _DEBUG
m_bSEAMLESS_BASE = true; m_bFLASHLIGHT = true;
#endif // _DEBUG #endif
} }
void SetFLASHLIGHT( bool i )
void SetSEAMLESS_DETAIL( int i ) {
{ m_nFLASHLIGHT = i ? 1 : 0;
Assert( i >= 0 && i <= 1 ); #ifdef _DEBUG
m_nSEAMLESS_DETAIL = i; m_bFLASHLIGHT = true;
#ifdef _DEBUG #endif
m_bSEAMLESS_DETAIL = true; }
#endif // _DEBUG private:
} int m_nSEAMLESS_BASE;
#ifdef _DEBUG
void SetSEPARATE_DETAIL_UVS( int i ) bool m_bSEAMLESS_BASE;
{ #endif
Assert( i >= 0 && i <= 1 ); public:
m_nSEPARATE_DETAIL_UVS = i; void SetSEAMLESS_BASE( int i )
#ifdef _DEBUG {
m_bSEPARATE_DETAIL_UVS = true; Assert( i >= 0 && i <= 1 );
#endif // _DEBUG m_nSEAMLESS_BASE = i;
} #ifdef _DEBUG
m_bSEAMLESS_BASE = true;
void SetUSE_STATIC_CONTROL_FLOW( int i ) #endif
{ }
Assert( i >= 0 && i <= 1 ); void SetSEAMLESS_BASE( bool i )
m_nUSE_STATIC_CONTROL_FLOW = i; {
#ifdef _DEBUG m_nSEAMLESS_BASE = i ? 1 : 0;
m_bUSE_STATIC_CONTROL_FLOW = true; #ifdef _DEBUG
#endif // _DEBUG m_bSEAMLESS_BASE = true;
} #endif
}
void SetDONT_GAMMA_CONVERT_VERTEX_COLOR( int i ) private:
{ int m_nSEAMLESS_DETAIL;
Assert( i >= 0 && i <= 1 ); #ifdef _DEBUG
m_nDONT_GAMMA_CONVERT_VERTEX_COLOR = i; bool m_bSEAMLESS_DETAIL;
#ifdef _DEBUG #endif
m_bDONT_GAMMA_CONVERT_VERTEX_COLOR = true; public:
#endif // _DEBUG void SetSEAMLESS_DETAIL( int i )
} {
Assert( i >= 0 && i <= 1 );
vertexlit_and_unlit_generic_vs20_Static_Index( ) m_nSEAMLESS_DETAIL = i;
{ #ifdef _DEBUG
m_nVERTEXCOLOR = 0; m_bSEAMLESS_DETAIL = true;
m_nCUBEMAP = 0; #endif
m_nHALFLAMBERT = 0; }
m_nFLASHLIGHT = 0; void SetSEAMLESS_DETAIL( bool i )
m_nSEAMLESS_BASE = 0; {
m_nSEAMLESS_DETAIL = 0; m_nSEAMLESS_DETAIL = i ? 1 : 0;
m_nSEPARATE_DETAIL_UVS = 0; #ifdef _DEBUG
m_nUSE_STATIC_CONTROL_FLOW = 0; m_bSEAMLESS_DETAIL = true;
m_nDONT_GAMMA_CONVERT_VERTEX_COLOR = 0; #endif
#ifdef _DEBUG }
m_bVERTEXCOLOR = false; private:
m_bCUBEMAP = false; int m_nSEPARATE_DETAIL_UVS;
m_bHALFLAMBERT = false; #ifdef _DEBUG
m_bFLASHLIGHT = false; bool m_bSEPARATE_DETAIL_UVS;
m_bSEAMLESS_BASE = false; #endif
m_bSEAMLESS_DETAIL = false; public:
m_bSEPARATE_DETAIL_UVS = false; void SetSEPARATE_DETAIL_UVS( int i )
m_bUSE_STATIC_CONTROL_FLOW = false; {
m_bDONT_GAMMA_CONVERT_VERTEX_COLOR = false; Assert( i >= 0 && i <= 1 );
#endif // _DEBUG m_nSEPARATE_DETAIL_UVS = i;
} #ifdef _DEBUG
m_bSEPARATE_DETAIL_UVS = true;
int GetIndex() const #endif
{ }
Assert( m_bVERTEXCOLOR && m_bCUBEMAP && m_bHALFLAMBERT && m_bFLASHLIGHT && m_bSEAMLESS_BASE && m_bSEAMLESS_DETAIL && m_bSEPARATE_DETAIL_UVS && m_bUSE_STATIC_CONTROL_FLOW && m_bDONT_GAMMA_CONVERT_VERTEX_COLOR ); void SetSEPARATE_DETAIL_UVS( bool i )
return ( 192 * m_nVERTEXCOLOR ) + ( 384 * m_nCUBEMAP ) + ( 768 * m_nHALFLAMBERT ) + ( 1536 * m_nFLASHLIGHT ) + ( 3072 * m_nSEAMLESS_BASE ) + ( 6144 * m_nSEAMLESS_DETAIL ) + ( 12288 * m_nSEPARATE_DETAIL_UVS ) + ( 24576 * m_nUSE_STATIC_CONTROL_FLOW ) + ( 49152 * m_nDONT_GAMMA_CONVERT_VERTEX_COLOR ) + 0; {
} m_nSEPARATE_DETAIL_UVS = i ? 1 : 0;
}; #ifdef _DEBUG
m_bSEPARATE_DETAIL_UVS = true;
#define shaderStaticTest_vertexlit_and_unlit_generic_vs20 vsh_forgot_to_set_static_VERTEXCOLOR + vsh_forgot_to_set_static_CUBEMAP + vsh_forgot_to_set_static_HALFLAMBERT + vsh_forgot_to_set_static_FLASHLIGHT + vsh_forgot_to_set_static_SEAMLESS_BASE + vsh_forgot_to_set_static_SEAMLESS_DETAIL + vsh_forgot_to_set_static_SEPARATE_DETAIL_UVS + vsh_forgot_to_set_static_USE_STATIC_CONTROL_FLOW + vsh_forgot_to_set_static_DONT_GAMMA_CONVERT_VERTEX_COLOR #endif
}
private:
class vertexlit_and_unlit_generic_vs20_Dynamic_Index int m_nUSE_STATIC_CONTROL_FLOW;
{ #ifdef _DEBUG
unsigned int m_nCOMPRESSED_VERTS : 2; bool m_bUSE_STATIC_CONTROL_FLOW;
unsigned int m_nDYNAMIC_LIGHT : 2; #endif
unsigned int m_nSTATIC_LIGHT : 2; public:
unsigned int m_nDOWATERFOG : 2; void SetUSE_STATIC_CONTROL_FLOW( int i )
unsigned int m_nSKINNING : 2; {
unsigned int m_nLIGHTING_PREVIEW : 2; Assert( i >= 0 && i <= 1 );
unsigned int m_nNUM_LIGHTS : 2; m_nUSE_STATIC_CONTROL_FLOW = i;
#ifdef _DEBUG #ifdef _DEBUG
bool m_bCOMPRESSED_VERTS : 1; m_bUSE_STATIC_CONTROL_FLOW = true;
bool m_bDYNAMIC_LIGHT : 1; #endif
bool m_bSTATIC_LIGHT : 1; }
bool m_bDOWATERFOG : 1; void SetUSE_STATIC_CONTROL_FLOW( bool i )
bool m_bSKINNING : 1; {
bool m_bLIGHTING_PREVIEW : 1; m_nUSE_STATIC_CONTROL_FLOW = i ? 1 : 0;
bool m_bNUM_LIGHTS : 1; #ifdef _DEBUG
#endif // _DEBUG m_bUSE_STATIC_CONTROL_FLOW = true;
public: #endif
void SetCOMPRESSED_VERTS( int i ) }
{ private:
Assert( i >= 0 && i <= 1 ); int m_nDONT_GAMMA_CONVERT_VERTEX_COLOR;
m_nCOMPRESSED_VERTS = i; #ifdef _DEBUG
#ifdef _DEBUG bool m_bDONT_GAMMA_CONVERT_VERTEX_COLOR;
m_bCOMPRESSED_VERTS = true; #endif
#endif // _DEBUG public:
} void SetDONT_GAMMA_CONVERT_VERTEX_COLOR( int i )
{
void SetDYNAMIC_LIGHT( int i ) Assert( i >= 0 && i <= 1 );
{ m_nDONT_GAMMA_CONVERT_VERTEX_COLOR = i;
Assert( i >= 0 && i <= 1 ); #ifdef _DEBUG
m_nDYNAMIC_LIGHT = i; m_bDONT_GAMMA_CONVERT_VERTEX_COLOR = true;
#ifdef _DEBUG #endif
m_bDYNAMIC_LIGHT = true; }
#endif // _DEBUG void SetDONT_GAMMA_CONVERT_VERTEX_COLOR( bool i )
} {
m_nDONT_GAMMA_CONVERT_VERTEX_COLOR = i ? 1 : 0;
void SetSTATIC_LIGHT( int i ) #ifdef _DEBUG
{ m_bDONT_GAMMA_CONVERT_VERTEX_COLOR = true;
Assert( i >= 0 && i <= 1 ); #endif
m_nSTATIC_LIGHT = i; }
#ifdef _DEBUG public:
m_bSTATIC_LIGHT = true; vertexlit_and_unlit_generic_vs20_Static_Index( )
#endif // _DEBUG {
} #ifdef _DEBUG
m_bVERTEXCOLOR = false;
void SetDOWATERFOG( int i ) #endif // _DEBUG
{ m_nVERTEXCOLOR = 0;
Assert( i >= 0 && i <= 1 ); #ifdef _DEBUG
m_nDOWATERFOG = i; m_bCUBEMAP = false;
#ifdef _DEBUG #endif // _DEBUG
m_bDOWATERFOG = true; m_nCUBEMAP = 0;
#endif // _DEBUG #ifdef _DEBUG
} m_bHALFLAMBERT = false;
#endif // _DEBUG
void SetSKINNING( int i ) m_nHALFLAMBERT = 0;
{ #ifdef _DEBUG
Assert( i >= 0 && i <= 1 ); m_bFLASHLIGHT = false;
m_nSKINNING = i; #endif // _DEBUG
#ifdef _DEBUG m_nFLASHLIGHT = 0;
m_bSKINNING = true; #ifdef _DEBUG
#endif // _DEBUG m_bSEAMLESS_BASE = false;
} #endif // _DEBUG
m_nSEAMLESS_BASE = 0;
void SetLIGHTING_PREVIEW( int i ) #ifdef _DEBUG
{ m_bSEAMLESS_DETAIL = false;
Assert( i >= 0 && i <= 1 ); #endif // _DEBUG
m_nLIGHTING_PREVIEW = i; m_nSEAMLESS_DETAIL = 0;
#ifdef _DEBUG #ifdef _DEBUG
m_bLIGHTING_PREVIEW = true; m_bSEPARATE_DETAIL_UVS = false;
#endif // _DEBUG #endif // _DEBUG
} m_nSEPARATE_DETAIL_UVS = 0;
#ifdef _DEBUG
void SetNUM_LIGHTS( int i ) m_bUSE_STATIC_CONTROL_FLOW = false;
{ #endif // _DEBUG
Assert( i >= 0 && i <= 2 ); m_nUSE_STATIC_CONTROL_FLOW = 0;
m_nNUM_LIGHTS = i; #ifdef _DEBUG
#ifdef _DEBUG m_bDONT_GAMMA_CONVERT_VERTEX_COLOR = false;
m_bNUM_LIGHTS = true; #endif // _DEBUG
#endif // _DEBUG m_nDONT_GAMMA_CONVERT_VERTEX_COLOR = 0;
} }
int GetIndex()
vertexlit_and_unlit_generic_vs20_Dynamic_Index() {
{ // Asserts to make sure that we aren't using any skipped combinations.
m_nCOMPRESSED_VERTS = 0; // Asserts to make sure that we are setting all of the combination vars.
m_nDYNAMIC_LIGHT = 0; #ifdef _DEBUG
m_nSTATIC_LIGHT = 0; bool bAllStaticVarsDefined = m_bVERTEXCOLOR && m_bCUBEMAP && m_bHALFLAMBERT && m_bFLASHLIGHT && m_bSEAMLESS_BASE && m_bSEAMLESS_DETAIL && m_bSEPARATE_DETAIL_UVS && m_bUSE_STATIC_CONTROL_FLOW && m_bDONT_GAMMA_CONVERT_VERTEX_COLOR;
m_nDOWATERFOG = 0; Assert( bAllStaticVarsDefined );
m_nSKINNING = 0; #endif // _DEBUG
m_nLIGHTING_PREVIEW = 0; return ( 384 * m_nVERTEXCOLOR ) + ( 768 * m_nCUBEMAP ) + ( 1536 * m_nHALFLAMBERT ) + ( 3072 * m_nFLASHLIGHT ) + ( 6144 * m_nSEAMLESS_BASE ) + ( 12288 * m_nSEAMLESS_DETAIL ) + ( 24576 * m_nSEPARATE_DETAIL_UVS ) + ( 49152 * m_nUSE_STATIC_CONTROL_FLOW ) + ( 98304 * m_nDONT_GAMMA_CONVERT_VERTEX_COLOR ) + 0;
m_nNUM_LIGHTS = 0; }
#ifdef _DEBUG };
m_bCOMPRESSED_VERTS = false; #define shaderStaticTest_vertexlit_and_unlit_generic_vs20 vsh_forgot_to_set_static_VERTEXCOLOR + vsh_forgot_to_set_static_CUBEMAP + vsh_forgot_to_set_static_HALFLAMBERT + vsh_forgot_to_set_static_FLASHLIGHT + vsh_forgot_to_set_static_SEAMLESS_BASE + vsh_forgot_to_set_static_SEAMLESS_DETAIL + vsh_forgot_to_set_static_SEPARATE_DETAIL_UVS + vsh_forgot_to_set_static_USE_STATIC_CONTROL_FLOW + vsh_forgot_to_set_static_DONT_GAMMA_CONVERT_VERTEX_COLOR + 0
m_bDYNAMIC_LIGHT = false; class vertexlit_and_unlit_generic_vs20_Dynamic_Index
m_bSTATIC_LIGHT = false; {
m_bDOWATERFOG = false; private:
m_bSKINNING = false; int m_nCOMPRESSED_VERTS;
m_bLIGHTING_PREVIEW = false; #ifdef _DEBUG
m_bNUM_LIGHTS = false; bool m_bCOMPRESSED_VERTS;
#endif // _DEBUG #endif
} public:
void SetCOMPRESSED_VERTS( int i )
int GetIndex() const {
{ Assert( i >= 0 && i <= 1 );
Assert( m_bCOMPRESSED_VERTS && m_bDYNAMIC_LIGHT && m_bSTATIC_LIGHT && m_bDOWATERFOG && m_bSKINNING && m_bLIGHTING_PREVIEW && m_bNUM_LIGHTS ); m_nCOMPRESSED_VERTS = i;
return ( 1 * m_nCOMPRESSED_VERTS ) + ( 2 * m_nDYNAMIC_LIGHT ) + ( 4 * m_nSTATIC_LIGHT ) + ( 8 * m_nDOWATERFOG ) + ( 16 * m_nSKINNING ) + ( 32 * m_nLIGHTING_PREVIEW ) + ( 64 * m_nNUM_LIGHTS ) + 0; #ifdef _DEBUG
} m_bCOMPRESSED_VERTS = true;
}; #endif
}
#define shaderDynamicTest_vertexlit_and_unlit_generic_vs20 vsh_forgot_to_set_dynamic_COMPRESSED_VERTS + vsh_forgot_to_set_dynamic_DYNAMIC_LIGHT + vsh_forgot_to_set_dynamic_STATIC_LIGHT + vsh_forgot_to_set_dynamic_DOWATERFOG + vsh_forgot_to_set_dynamic_SKINNING + vsh_forgot_to_set_dynamic_LIGHTING_PREVIEW + vsh_forgot_to_set_dynamic_NUM_LIGHTS void SetCOMPRESSED_VERTS( bool i )
{
m_nCOMPRESSED_VERTS = i ? 1 : 0;
#endif // VERTEXLIT_AND_UNLIT_GENERIC_VS20_H #ifdef _DEBUG
m_bCOMPRESSED_VERTS = true;
#endif
}
private:
int m_nDYNAMIC_LIGHT;
#ifdef _DEBUG
bool m_bDYNAMIC_LIGHT;
#endif
public:
void SetDYNAMIC_LIGHT( int i )
{
Assert( i >= 0 && i <= 1 );
m_nDYNAMIC_LIGHT = i;
#ifdef _DEBUG
m_bDYNAMIC_LIGHT = true;
#endif
}
void SetDYNAMIC_LIGHT( bool i )
{
m_nDYNAMIC_LIGHT = i ? 1 : 0;
#ifdef _DEBUG
m_bDYNAMIC_LIGHT = true;
#endif
}
private:
int m_nSTATIC_LIGHT_VERTEX;
#ifdef _DEBUG
bool m_bSTATIC_LIGHT_VERTEX;
#endif
public:
void SetSTATIC_LIGHT_VERTEX( int i )
{
Assert( i >= 0 && i <= 1 );
m_nSTATIC_LIGHT_VERTEX = i;
#ifdef _DEBUG
m_bSTATIC_LIGHT_VERTEX = true;
#endif
}
void SetSTATIC_LIGHT_VERTEX( bool i )
{
m_nSTATIC_LIGHT_VERTEX = i ? 1 : 0;
#ifdef _DEBUG
m_bSTATIC_LIGHT_VERTEX = true;
#endif
}
private:
int m_nSTATIC_LIGHT_LIGHTMAP;
#ifdef _DEBUG
bool m_bSTATIC_LIGHT_LIGHTMAP;
#endif
public:
void SetSTATIC_LIGHT_LIGHTMAP( int i )
{
Assert( i >= 0 && i <= 1 );
m_nSTATIC_LIGHT_LIGHTMAP = i;
#ifdef _DEBUG
m_bSTATIC_LIGHT_LIGHTMAP = true;
#endif
}
void SetSTATIC_LIGHT_LIGHTMAP( bool i )
{
m_nSTATIC_LIGHT_LIGHTMAP = i ? 1 : 0;
#ifdef _DEBUG
m_bSTATIC_LIGHT_LIGHTMAP = true;
#endif
}
private:
int m_nDOWATERFOG;
#ifdef _DEBUG
bool m_bDOWATERFOG;
#endif
public:
void SetDOWATERFOG( int i )
{
Assert( i >= 0 && i <= 1 );
m_nDOWATERFOG = i;
#ifdef _DEBUG
m_bDOWATERFOG = true;
#endif
}
void SetDOWATERFOG( bool i )
{
m_nDOWATERFOG = i ? 1 : 0;
#ifdef _DEBUG
m_bDOWATERFOG = true;
#endif
}
private:
int m_nSKINNING;
#ifdef _DEBUG
bool m_bSKINNING;
#endif
public:
void SetSKINNING( int i )
{
Assert( i >= 0 && i <= 1 );
m_nSKINNING = i;
#ifdef _DEBUG
m_bSKINNING = true;
#endif
}
void SetSKINNING( bool i )
{
m_nSKINNING = i ? 1 : 0;
#ifdef _DEBUG
m_bSKINNING = true;
#endif
}
private:
int m_nLIGHTING_PREVIEW;
#ifdef _DEBUG
bool m_bLIGHTING_PREVIEW;
#endif
public:
void SetLIGHTING_PREVIEW( int i )
{
Assert( i >= 0 && i <= 1 );
m_nLIGHTING_PREVIEW = i;
#ifdef _DEBUG
m_bLIGHTING_PREVIEW = true;
#endif
}
void SetLIGHTING_PREVIEW( bool i )
{
m_nLIGHTING_PREVIEW = i ? 1 : 0;
#ifdef _DEBUG
m_bLIGHTING_PREVIEW = true;
#endif
}
private:
int m_nNUM_LIGHTS;
#ifdef _DEBUG
bool m_bNUM_LIGHTS;
#endif
public:
void SetNUM_LIGHTS( int i )
{
Assert( i >= 0 && i <= 2 );
m_nNUM_LIGHTS = i;
#ifdef _DEBUG
m_bNUM_LIGHTS = true;
#endif
}
void SetNUM_LIGHTS( bool i )
{
m_nNUM_LIGHTS = i ? 1 : 0;
#ifdef _DEBUG
m_bNUM_LIGHTS = true;
#endif
}
public:
vertexlit_and_unlit_generic_vs20_Dynamic_Index()
{
#ifdef _DEBUG
m_bCOMPRESSED_VERTS = false;
#endif // _DEBUG
m_nCOMPRESSED_VERTS = 0;
#ifdef _DEBUG
m_bDYNAMIC_LIGHT = false;
#endif // _DEBUG
m_nDYNAMIC_LIGHT = 0;
#ifdef _DEBUG
m_bSTATIC_LIGHT_VERTEX = false;
#endif // _DEBUG
m_nSTATIC_LIGHT_VERTEX = 0;
#ifdef _DEBUG
m_bSTATIC_LIGHT_LIGHTMAP = false;
#endif // _DEBUG
m_nSTATIC_LIGHT_LIGHTMAP = 0;
#ifdef _DEBUG
m_bDOWATERFOG = false;
#endif // _DEBUG
m_nDOWATERFOG = 0;
#ifdef _DEBUG
m_bSKINNING = false;
#endif // _DEBUG
m_nSKINNING = 0;
#ifdef _DEBUG
m_bLIGHTING_PREVIEW = false;
#endif // _DEBUG
m_nLIGHTING_PREVIEW = 0;
#ifdef _DEBUG
m_bNUM_LIGHTS = false;
#endif // _DEBUG
m_nNUM_LIGHTS = 0;
}
int GetIndex()
{
// Asserts to make sure that we aren't using any skipped combinations.
// Asserts to make sure that we are setting all of the combination vars.
#ifdef _DEBUG
bool bAllDynamicVarsDefined = m_bCOMPRESSED_VERTS && m_bDYNAMIC_LIGHT && m_bSTATIC_LIGHT_VERTEX && m_bSTATIC_LIGHT_LIGHTMAP && m_bDOWATERFOG && m_bSKINNING && m_bLIGHTING_PREVIEW && m_bNUM_LIGHTS;
Assert( bAllDynamicVarsDefined );
#endif // _DEBUG
return ( 1 * m_nCOMPRESSED_VERTS ) + ( 2 * m_nDYNAMIC_LIGHT ) + ( 4 * m_nSTATIC_LIGHT_VERTEX ) + ( 8 * m_nSTATIC_LIGHT_LIGHTMAP ) + ( 16 * m_nDOWATERFOG ) + ( 32 * m_nSKINNING ) + ( 64 * m_nLIGHTING_PREVIEW ) + ( 128 * m_nNUM_LIGHTS ) + 0;
}
};
#define shaderDynamicTest_vertexlit_and_unlit_generic_vs20 vsh_forgot_to_set_dynamic_COMPRESSED_VERTS + vsh_forgot_to_set_dynamic_DYNAMIC_LIGHT + vsh_forgot_to_set_dynamic_STATIC_LIGHT_VERTEX + vsh_forgot_to_set_dynamic_STATIC_LIGHT_LIGHTMAP + vsh_forgot_to_set_dynamic_DOWATERFOG + vsh_forgot_to_set_dynamic_SKINNING + vsh_forgot_to_set_dynamic_LIGHTING_PREVIEW + vsh_forgot_to_set_dynamic_NUM_LIGHTS + 0

View file

@ -1,322 +1,537 @@
// ALL SKIP STATEMENTS THAT AFFECT THIS SHADER!!! #include "shaderlib/cshader.h"
// ($PIXELFOGTYPE == 0) && ($WRITEWATERFOGTODESTALPHA != 0) class skin_ps20b_Static_Index
// (! $DETAILTEXTURE) && ( $DETAIL_BLEND_MODE != 0 ) {
// ( $FLASHLIGHT == 0 ) && ( $FLASHLIGHTSHADOWS == 1 ) private:
// ( $FLASHLIGHT == 0 ) && ( $FLASHLIGHTDEPTHFILTERMODE != 0 ) int m_nCONVERT_TO_SRGB;
// ( $SELFILLUM == 0 ) && ( $SELFILLUMFRESNEL == 1 ) #ifdef _DEBUG
// ( $FLASHLIGHT == 1 ) && ( $SELFILLUMFRESNEL == 1 ) bool m_bCONVERT_TO_SRGB;
// ( $FLASHLIGHT == 1 ) && ( $SELFILLUM == 1 ) #endif
// ( $BLENDTINTBYBASEALPHA ) && ( $SELFILLUM ) public:
// $FASTPATH_NOBUMP && ( $RIMLIGHT || $DETAILTEXTURE || $PHONGWARPTEXTURE || $SELFILLUM || $BLENDTINTBYBASEALPHA ) void SetCONVERT_TO_SRGB( int i )
// defined $HDRTYPE && defined $HDRENABLED && !$HDRTYPE && $HDRENABLED {
// defined $PIXELFOGTYPE && defined $WRITEWATERFOGTODESTALPHA && ( $PIXELFOGTYPE != 1 ) && $WRITEWATERFOGTODESTALPHA Assert( i >= 0 && i <= 0 );
// defined $LIGHTING_PREVIEW && defined $HDRTYPE && $LIGHTING_PREVIEW && $HDRTYPE != 0 m_nCONVERT_TO_SRGB = i;
// defined $LIGHTING_PREVIEW && defined $FASTPATHENVMAPTINT && $LIGHTING_PREVIEW && $FASTPATHENVMAPTINT #ifdef _DEBUG
// defined $LIGHTING_PREVIEW && defined $FASTPATHENVMAPCONTRAST && $LIGHTING_PREVIEW && $FASTPATHENVMAPCONTRAST m_bCONVERT_TO_SRGB = true;
// defined $LIGHTING_PREVIEW && defined $FASTPATH && $LIGHTING_PREVIEW && $FASTPATH #endif
// ($FLASHLIGHT || $FLASHLIGHTSHADOWS) && $LIGHTING_PREVIEW }
// defined $HDRTYPE && defined $HDRENABLED && !$HDRTYPE && $HDRENABLED void SetCONVERT_TO_SRGB( bool i )
// defined $PIXELFOGTYPE && defined $WRITEWATERFOGTODESTALPHA && ( $PIXELFOGTYPE != 1 ) && $WRITEWATERFOGTODESTALPHA {
// defined $LIGHTING_PREVIEW && defined $HDRTYPE && $LIGHTING_PREVIEW && $HDRTYPE != 0 m_nCONVERT_TO_SRGB = i ? 1 : 0;
// defined $LIGHTING_PREVIEW && defined $FASTPATHENVMAPTINT && $LIGHTING_PREVIEW && $FASTPATHENVMAPTINT #ifdef _DEBUG
// defined $LIGHTING_PREVIEW && defined $FASTPATHENVMAPCONTRAST && $LIGHTING_PREVIEW && $FASTPATHENVMAPCONTRAST m_bCONVERT_TO_SRGB = true;
// defined $LIGHTING_PREVIEW && defined $FASTPATH && $LIGHTING_PREVIEW && $FASTPATH #endif
// ($FLASHLIGHT || $FLASHLIGHTSHADOWS) && $LIGHTING_PREVIEW }
private:
#ifndef SKIN_PS20B_H int m_nCUBEMAP;
#define SKIN_PS20B_H #ifdef _DEBUG
bool m_bCUBEMAP;
#include "shaderapi/ishaderapi.h" #endif
#include "shaderapi/ishadershadow.h" public:
#include "materialsystem/imaterialvar.h" void SetCUBEMAP( int i )
{
class skin_ps20b_Static_Index Assert( i >= 0 && i <= 1 );
{ m_nCUBEMAP = i;
unsigned int m_nCONVERT_TO_SRGB : 1; #ifdef _DEBUG
unsigned int m_nCUBEMAP : 2; m_bCUBEMAP = true;
unsigned int m_nSELFILLUM : 2; #endif
unsigned int m_nSELFILLUMFRESNEL : 2; }
unsigned int m_nFLASHLIGHT : 2; void SetCUBEMAP( bool i )
unsigned int m_nLIGHTWARPTEXTURE : 2; {
unsigned int m_nPHONGWARPTEXTURE : 2; m_nCUBEMAP = i ? 1 : 0;
unsigned int m_nWRINKLEMAP : 2; #ifdef _DEBUG
unsigned int m_nDETAIL_BLEND_MODE : 3; m_bCUBEMAP = true;
unsigned int m_nDETAILTEXTURE : 2; #endif
unsigned int m_nRIMLIGHT : 2; }
unsigned int m_nFLASHLIGHTDEPTHFILTERMODE : 2; private:
unsigned int m_nFASTPATH_NOBUMP : 2; int m_nSELFILLUM;
unsigned int m_nBLENDTINTBYBASEALPHA : 2; #ifdef _DEBUG
#ifdef _DEBUG bool m_bSELFILLUM;
bool m_bCONVERT_TO_SRGB : 1; #endif
bool m_bCUBEMAP : 1; public:
bool m_bSELFILLUM : 1; void SetSELFILLUM( int i )
bool m_bSELFILLUMFRESNEL : 1; {
bool m_bFLASHLIGHT : 1; Assert( i >= 0 && i <= 1 );
bool m_bLIGHTWARPTEXTURE : 1; m_nSELFILLUM = i;
bool m_bPHONGWARPTEXTURE : 1; #ifdef _DEBUG
bool m_bWRINKLEMAP : 1; m_bSELFILLUM = true;
bool m_bDETAIL_BLEND_MODE : 1; #endif
bool m_bDETAILTEXTURE : 1; }
bool m_bRIMLIGHT : 1; void SetSELFILLUM( bool i )
bool m_bFLASHLIGHTDEPTHFILTERMODE : 1; {
bool m_bFASTPATH_NOBUMP : 1; m_nSELFILLUM = i ? 1 : 0;
bool m_bBLENDTINTBYBASEALPHA : 1; #ifdef _DEBUG
#endif // _DEBUG m_bSELFILLUM = true;
public: #endif
void SetCONVERT_TO_SRGB( int i ) }
{ private:
Assert( i >= 0 && i <= 0 ); int m_nSELFILLUMFRESNEL;
m_nCONVERT_TO_SRGB = i; #ifdef _DEBUG
#ifdef _DEBUG bool m_bSELFILLUMFRESNEL;
m_bCONVERT_TO_SRGB = true; #endif
#endif // _DEBUG public:
} void SetSELFILLUMFRESNEL( int i )
{
void SetCUBEMAP( int i ) Assert( i >= 0 && i <= 1 );
{ m_nSELFILLUMFRESNEL = i;
Assert( i >= 0 && i <= 1 ); #ifdef _DEBUG
m_nCUBEMAP = i; m_bSELFILLUMFRESNEL = true;
#ifdef _DEBUG #endif
m_bCUBEMAP = true; }
#endif // _DEBUG void SetSELFILLUMFRESNEL( bool i )
} {
m_nSELFILLUMFRESNEL = i ? 1 : 0;
void SetSELFILLUM( int i ) #ifdef _DEBUG
{ m_bSELFILLUMFRESNEL = true;
Assert( i >= 0 && i <= 1 ); #endif
m_nSELFILLUM = i; }
#ifdef _DEBUG private:
m_bSELFILLUM = true; int m_nFLASHLIGHT;
#endif // _DEBUG #ifdef _DEBUG
} bool m_bFLASHLIGHT;
#endif
void SetSELFILLUMFRESNEL( int i ) public:
{ void SetFLASHLIGHT( int i )
Assert( i >= 0 && i <= 1 ); {
m_nSELFILLUMFRESNEL = i; Assert( i >= 0 && i <= 1 );
#ifdef _DEBUG m_nFLASHLIGHT = i;
m_bSELFILLUMFRESNEL = true; #ifdef _DEBUG
#endif // _DEBUG m_bFLASHLIGHT = true;
} #endif
}
void SetFLASHLIGHT( int i ) void SetFLASHLIGHT( bool i )
{ {
Assert( i >= 0 && i <= 1 ); m_nFLASHLIGHT = i ? 1 : 0;
m_nFLASHLIGHT = i; #ifdef _DEBUG
#ifdef _DEBUG m_bFLASHLIGHT = true;
m_bFLASHLIGHT = true; #endif
#endif // _DEBUG }
} private:
int m_nLIGHTWARPTEXTURE;
void SetLIGHTWARPTEXTURE( int i ) #ifdef _DEBUG
{ bool m_bLIGHTWARPTEXTURE;
Assert( i >= 0 && i <= 1 ); #endif
m_nLIGHTWARPTEXTURE = i; public:
#ifdef _DEBUG void SetLIGHTWARPTEXTURE( int i )
m_bLIGHTWARPTEXTURE = true; {
#endif // _DEBUG Assert( i >= 0 && i <= 1 );
} m_nLIGHTWARPTEXTURE = i;
#ifdef _DEBUG
void SetPHONGWARPTEXTURE( int i ) m_bLIGHTWARPTEXTURE = true;
{ #endif
Assert( i >= 0 && i <= 1 ); }
m_nPHONGWARPTEXTURE = i; void SetLIGHTWARPTEXTURE( bool i )
#ifdef _DEBUG {
m_bPHONGWARPTEXTURE = true; m_nLIGHTWARPTEXTURE = i ? 1 : 0;
#endif // _DEBUG #ifdef _DEBUG
} m_bLIGHTWARPTEXTURE = true;
#endif
void SetWRINKLEMAP( int i ) }
{ private:
Assert( i >= 0 && i <= 1 ); int m_nPHONGWARPTEXTURE;
m_nWRINKLEMAP = i; #ifdef _DEBUG
#ifdef _DEBUG bool m_bPHONGWARPTEXTURE;
m_bWRINKLEMAP = true; #endif
#endif // _DEBUG public:
} void SetPHONGWARPTEXTURE( int i )
{
void SetDETAIL_BLEND_MODE( int i ) Assert( i >= 0 && i <= 1 );
{ m_nPHONGWARPTEXTURE = i;
Assert( i >= 0 && i <= 6 ); #ifdef _DEBUG
m_nDETAIL_BLEND_MODE = i; m_bPHONGWARPTEXTURE = true;
#ifdef _DEBUG #endif
m_bDETAIL_BLEND_MODE = true; }
#endif // _DEBUG void SetPHONGWARPTEXTURE( bool i )
} {
m_nPHONGWARPTEXTURE = i ? 1 : 0;
void SetDETAILTEXTURE( int i ) #ifdef _DEBUG
{ m_bPHONGWARPTEXTURE = true;
Assert( i >= 0 && i <= 1 ); #endif
m_nDETAILTEXTURE = i; }
#ifdef _DEBUG private:
m_bDETAILTEXTURE = true; int m_nWRINKLEMAP;
#endif // _DEBUG #ifdef _DEBUG
} bool m_bWRINKLEMAP;
#endif
void SetRIMLIGHT( int i ) public:
{ void SetWRINKLEMAP( int i )
Assert( i >= 0 && i <= 1 ); {
m_nRIMLIGHT = i; Assert( i >= 0 && i <= 1 );
#ifdef _DEBUG m_nWRINKLEMAP = i;
m_bRIMLIGHT = true; #ifdef _DEBUG
#endif // _DEBUG m_bWRINKLEMAP = true;
} #endif
}
void SetFLASHLIGHTDEPTHFILTERMODE( int i ) void SetWRINKLEMAP( bool i )
{ {
Assert( i >= 0 && i <= 2 ); m_nWRINKLEMAP = i ? 1 : 0;
m_nFLASHLIGHTDEPTHFILTERMODE = i; #ifdef _DEBUG
#ifdef _DEBUG m_bWRINKLEMAP = true;
m_bFLASHLIGHTDEPTHFILTERMODE = true; #endif
#endif // _DEBUG }
} private:
int m_nDETAIL_BLEND_MODE;
void SetFASTPATH_NOBUMP( int i ) #ifdef _DEBUG
{ bool m_bDETAIL_BLEND_MODE;
Assert( i >= 0 && i <= 1 ); #endif
m_nFASTPATH_NOBUMP = i; public:
#ifdef _DEBUG void SetDETAIL_BLEND_MODE( int i )
m_bFASTPATH_NOBUMP = true; {
#endif // _DEBUG Assert( i >= 0 && i <= 6 );
} m_nDETAIL_BLEND_MODE = i;
#ifdef _DEBUG
void SetBLENDTINTBYBASEALPHA( int i ) m_bDETAIL_BLEND_MODE = true;
{ #endif
Assert( i >= 0 && i <= 1 ); }
m_nBLENDTINTBYBASEALPHA = i; void SetDETAIL_BLEND_MODE( bool i )
#ifdef _DEBUG {
m_bBLENDTINTBYBASEALPHA = true; m_nDETAIL_BLEND_MODE = i ? 1 : 0;
#endif // _DEBUG #ifdef _DEBUG
} m_bDETAIL_BLEND_MODE = true;
#endif
skin_ps20b_Static_Index() }
{ private:
m_nCONVERT_TO_SRGB = 0; int m_nDETAILTEXTURE;
m_nCUBEMAP = 0; #ifdef _DEBUG
m_nSELFILLUM = 0; bool m_bDETAILTEXTURE;
m_nSELFILLUMFRESNEL = 0; #endif
m_nFLASHLIGHT = 0; public:
m_nLIGHTWARPTEXTURE = 0; void SetDETAILTEXTURE( int i )
m_nPHONGWARPTEXTURE = 0; {
m_nWRINKLEMAP = 0; Assert( i >= 0 && i <= 1 );
m_nDETAIL_BLEND_MODE = 0; m_nDETAILTEXTURE = i;
m_nDETAILTEXTURE = 0; #ifdef _DEBUG
m_nRIMLIGHT = 0; m_bDETAILTEXTURE = true;
m_nFLASHLIGHTDEPTHFILTERMODE = 0; #endif
m_nFASTPATH_NOBUMP = 0; }
m_nBLENDTINTBYBASEALPHA = 0; void SetDETAILTEXTURE( bool i )
#ifdef _DEBUG {
m_bCONVERT_TO_SRGB = false; m_nDETAILTEXTURE = i ? 1 : 0;
m_bCUBEMAP = false; #ifdef _DEBUG
m_bSELFILLUM = false; m_bDETAILTEXTURE = true;
m_bSELFILLUMFRESNEL = false; #endif
m_bFLASHLIGHT = false; }
m_bLIGHTWARPTEXTURE = false; private:
m_bPHONGWARPTEXTURE = false; int m_nRIMLIGHT;
m_bWRINKLEMAP = false; #ifdef _DEBUG
m_bDETAIL_BLEND_MODE = false; bool m_bRIMLIGHT;
m_bDETAILTEXTURE = false; #endif
m_bRIMLIGHT = false; public:
m_bFLASHLIGHTDEPTHFILTERMODE = false; void SetRIMLIGHT( int i )
m_bFASTPATH_NOBUMP = false; {
m_bBLENDTINTBYBASEALPHA = false; Assert( i >= 0 && i <= 1 );
#endif // _DEBUG m_nRIMLIGHT = i;
} #ifdef _DEBUG
m_bRIMLIGHT = true;
int GetIndex() const #endif
{ }
Assert( m_bCONVERT_TO_SRGB && m_bCUBEMAP && m_bSELFILLUM && m_bSELFILLUMFRESNEL && m_bFLASHLIGHT && m_bLIGHTWARPTEXTURE && m_bPHONGWARPTEXTURE && m_bWRINKLEMAP && m_bDETAIL_BLEND_MODE && m_bDETAILTEXTURE && m_bRIMLIGHT && m_bFLASHLIGHTDEPTHFILTERMODE && m_bFASTPATH_NOBUMP && m_bBLENDTINTBYBASEALPHA ); void SetRIMLIGHT( bool i )
return ( 80 * m_nCONVERT_TO_SRGB ) + ( 80 * m_nCUBEMAP ) + ( 160 * m_nSELFILLUM ) + ( 320 * m_nSELFILLUMFRESNEL ) + ( 640 * m_nFLASHLIGHT ) + ( 1280 * m_nLIGHTWARPTEXTURE ) + ( 2560 * m_nPHONGWARPTEXTURE ) + ( 5120 * m_nWRINKLEMAP ) + ( 10240 * m_nDETAIL_BLEND_MODE ) + ( 71680 * m_nDETAILTEXTURE ) + ( 143360 * m_nRIMLIGHT ) + ( 286720 * m_nFLASHLIGHTDEPTHFILTERMODE ) + ( 860160 * m_nFASTPATH_NOBUMP ) + ( 1720320 * m_nBLENDTINTBYBASEALPHA ) + 0; {
} m_nRIMLIGHT = i ? 1 : 0;
}; #ifdef _DEBUG
m_bRIMLIGHT = true;
#define shaderStaticTest_skin_ps20b psh_forgot_to_set_static_CONVERT_TO_SRGB + psh_forgot_to_set_static_CUBEMAP + psh_forgot_to_set_static_SELFILLUM + psh_forgot_to_set_static_SELFILLUMFRESNEL + psh_forgot_to_set_static_FLASHLIGHT + psh_forgot_to_set_static_LIGHTWARPTEXTURE + psh_forgot_to_set_static_PHONGWARPTEXTURE + psh_forgot_to_set_static_WRINKLEMAP + psh_forgot_to_set_static_DETAIL_BLEND_MODE + psh_forgot_to_set_static_DETAILTEXTURE + psh_forgot_to_set_static_RIMLIGHT + psh_forgot_to_set_static_FLASHLIGHTDEPTHFILTERMODE + psh_forgot_to_set_static_FASTPATH_NOBUMP + psh_forgot_to_set_static_BLENDTINTBYBASEALPHA #endif
}
private:
class skin_ps20b_Dynamic_Index int m_nFLASHLIGHTDEPTHFILTERMODE;
{ #ifdef _DEBUG
unsigned int m_nWRITEWATERFOGTODESTALPHA : 2; bool m_bFLASHLIGHTDEPTHFILTERMODE;
unsigned int m_nPIXELFOGTYPE : 2; #endif
unsigned int m_nNUM_LIGHTS : 3; public:
unsigned int m_nWRITE_DEPTH_TO_DESTALPHA : 2; void SetFLASHLIGHTDEPTHFILTERMODE( int i )
unsigned int m_nFLASHLIGHTSHADOWS : 2; {
#ifdef _DEBUG Assert( i >= 0 && i <= 2 );
bool m_bWRITEWATERFOGTODESTALPHA : 1; m_nFLASHLIGHTDEPTHFILTERMODE = i;
bool m_bPIXELFOGTYPE : 1; #ifdef _DEBUG
bool m_bNUM_LIGHTS : 1; m_bFLASHLIGHTDEPTHFILTERMODE = true;
bool m_bWRITE_DEPTH_TO_DESTALPHA : 1; #endif
bool m_bFLASHLIGHTSHADOWS : 1; }
#endif // _DEBUG void SetFLASHLIGHTDEPTHFILTERMODE( bool i )
public: {
void SetWRITEWATERFOGTODESTALPHA( int i ) m_nFLASHLIGHTDEPTHFILTERMODE = i ? 1 : 0;
{ #ifdef _DEBUG
Assert( i >= 0 && i <= 1 ); m_bFLASHLIGHTDEPTHFILTERMODE = true;
m_nWRITEWATERFOGTODESTALPHA = i; #endif
#ifdef _DEBUG }
m_bWRITEWATERFOGTODESTALPHA = true; private:
#endif // _DEBUG int m_nFASTPATH_NOBUMP;
} #ifdef _DEBUG
bool m_bFASTPATH_NOBUMP;
void SetPIXELFOGTYPE( int i ) #endif
{ public:
Assert( i >= 0 && i <= 1 ); void SetFASTPATH_NOBUMP( int i )
m_nPIXELFOGTYPE = i; {
#ifdef _DEBUG Assert( i >= 0 && i <= 1 );
m_bPIXELFOGTYPE = true; m_nFASTPATH_NOBUMP = i;
#endif // _DEBUG #ifdef _DEBUG
} m_bFASTPATH_NOBUMP = true;
#endif
void SetNUM_LIGHTS( int i ) }
{ void SetFASTPATH_NOBUMP( bool i )
Assert( i >= 0 && i <= 4 ); {
m_nNUM_LIGHTS = i; m_nFASTPATH_NOBUMP = i ? 1 : 0;
#ifdef _DEBUG #ifdef _DEBUG
m_bNUM_LIGHTS = true; m_bFASTPATH_NOBUMP = true;
#endif // _DEBUG #endif
} }
private:
void SetWRITE_DEPTH_TO_DESTALPHA( int i ) int m_nBLENDTINTBYBASEALPHA;
{ #ifdef _DEBUG
Assert( i >= 0 && i <= 1 ); bool m_bBLENDTINTBYBASEALPHA;
m_nWRITE_DEPTH_TO_DESTALPHA = i; #endif
#ifdef _DEBUG public:
m_bWRITE_DEPTH_TO_DESTALPHA = true; void SetBLENDTINTBYBASEALPHA( int i )
#endif // _DEBUG {
} Assert( i >= 0 && i <= 1 );
m_nBLENDTINTBYBASEALPHA = i;
void SetFLASHLIGHTSHADOWS( int i ) #ifdef _DEBUG
{ m_bBLENDTINTBYBASEALPHA = true;
Assert( i >= 0 && i <= 1 ); #endif
m_nFLASHLIGHTSHADOWS = i; }
#ifdef _DEBUG void SetBLENDTINTBYBASEALPHA( bool i )
m_bFLASHLIGHTSHADOWS = true; {
#endif // _DEBUG m_nBLENDTINTBYBASEALPHA = i ? 1 : 0;
} #ifdef _DEBUG
m_bBLENDTINTBYBASEALPHA = true;
skin_ps20b_Dynamic_Index() #endif
{ }
m_nWRITEWATERFOGTODESTALPHA = 0; public:
m_nPIXELFOGTYPE = 0; skin_ps20b_Static_Index( )
m_nNUM_LIGHTS = 0; {
m_nWRITE_DEPTH_TO_DESTALPHA = 0; #ifdef _DEBUG
m_nFLASHLIGHTSHADOWS = 0; m_bCONVERT_TO_SRGB = false;
#ifdef _DEBUG #endif // _DEBUG
m_bWRITEWATERFOGTODESTALPHA = false; m_nCONVERT_TO_SRGB = 0;
m_bPIXELFOGTYPE = false; #ifdef _DEBUG
m_bNUM_LIGHTS = false; m_bCUBEMAP = false;
m_bWRITE_DEPTH_TO_DESTALPHA = false; #endif // _DEBUG
m_bFLASHLIGHTSHADOWS = false; m_nCUBEMAP = 0;
#endif // _DEBUG #ifdef _DEBUG
} m_bSELFILLUM = false;
#endif // _DEBUG
int GetIndex() const m_nSELFILLUM = 0;
{ #ifdef _DEBUG
Assert( m_bWRITEWATERFOGTODESTALPHA && m_bPIXELFOGTYPE && m_bNUM_LIGHTS && m_bWRITE_DEPTH_TO_DESTALPHA && m_bFLASHLIGHTSHADOWS ); m_bSELFILLUMFRESNEL = false;
return ( 1 * m_nWRITEWATERFOGTODESTALPHA ) + ( 2 * m_nPIXELFOGTYPE ) + ( 4 * m_nNUM_LIGHTS ) + ( 20 * m_nWRITE_DEPTH_TO_DESTALPHA ) + ( 40 * m_nFLASHLIGHTSHADOWS ) + 0; #endif // _DEBUG
} m_nSELFILLUMFRESNEL = 0;
}; #ifdef _DEBUG
m_bFLASHLIGHT = false;
#define shaderDynamicTest_skin_ps20b psh_forgot_to_set_dynamic_WRITEWATERFOGTODESTALPHA + psh_forgot_to_set_dynamic_PIXELFOGTYPE + psh_forgot_to_set_dynamic_NUM_LIGHTS + psh_forgot_to_set_dynamic_WRITE_DEPTH_TO_DESTALPHA + psh_forgot_to_set_dynamic_FLASHLIGHTSHADOWS #endif // _DEBUG
m_nFLASHLIGHT = 0;
#ifdef _DEBUG
#endif // SKIN_PS20B_H m_bLIGHTWARPTEXTURE = false;
#endif // _DEBUG
m_nLIGHTWARPTEXTURE = 0;
#ifdef _DEBUG
m_bPHONGWARPTEXTURE = false;
#endif // _DEBUG
m_nPHONGWARPTEXTURE = 0;
#ifdef _DEBUG
m_bWRINKLEMAP = false;
#endif // _DEBUG
m_nWRINKLEMAP = 0;
#ifdef _DEBUG
m_bDETAIL_BLEND_MODE = false;
#endif // _DEBUG
m_nDETAIL_BLEND_MODE = 0;
#ifdef _DEBUG
m_bDETAILTEXTURE = false;
#endif // _DEBUG
m_nDETAILTEXTURE = 0;
#ifdef _DEBUG
m_bRIMLIGHT = false;
#endif // _DEBUG
m_nRIMLIGHT = 0;
#ifdef _DEBUG
m_bFLASHLIGHTDEPTHFILTERMODE = false;
#endif // _DEBUG
m_nFLASHLIGHTDEPTHFILTERMODE = 0;
#ifdef _DEBUG
m_bFASTPATH_NOBUMP = false;
#endif // _DEBUG
m_nFASTPATH_NOBUMP = 0;
#ifdef _DEBUG
m_bBLENDTINTBYBASEALPHA = false;
#endif // _DEBUG
m_nBLENDTINTBYBASEALPHA = 0;
}
int GetIndex()
{
// Asserts to make sure that we aren't using any skipped combinations.
// Asserts to make sure that we are setting all of the combination vars.
#ifdef _DEBUG
bool bAllStaticVarsDefined = m_bCONVERT_TO_SRGB && m_bCUBEMAP && m_bSELFILLUM && m_bSELFILLUMFRESNEL && m_bFLASHLIGHT && m_bLIGHTWARPTEXTURE && m_bPHONGWARPTEXTURE && m_bWRINKLEMAP && m_bDETAIL_BLEND_MODE && m_bDETAILTEXTURE && m_bRIMLIGHT && m_bFLASHLIGHTDEPTHFILTERMODE && m_bFASTPATH_NOBUMP && m_bBLENDTINTBYBASEALPHA;
Assert( bAllStaticVarsDefined );
#endif // _DEBUG
return ( 160 * m_nCONVERT_TO_SRGB ) + ( 160 * m_nCUBEMAP ) + ( 320 * m_nSELFILLUM ) + ( 640 * m_nSELFILLUMFRESNEL ) + ( 1280 * m_nFLASHLIGHT ) + ( 2560 * m_nLIGHTWARPTEXTURE ) + ( 5120 * m_nPHONGWARPTEXTURE ) + ( 10240 * m_nWRINKLEMAP ) + ( 20480 * m_nDETAIL_BLEND_MODE ) + ( 143360 * m_nDETAILTEXTURE ) + ( 286720 * m_nRIMLIGHT ) + ( 573440 * m_nFLASHLIGHTDEPTHFILTERMODE ) + ( 1720320 * m_nFASTPATH_NOBUMP ) + ( 3440640 * m_nBLENDTINTBYBASEALPHA ) + 0;
}
};
#define shaderStaticTest_skin_ps20b psh_forgot_to_set_static_CONVERT_TO_SRGB + psh_forgot_to_set_static_CUBEMAP + psh_forgot_to_set_static_SELFILLUM + psh_forgot_to_set_static_SELFILLUMFRESNEL + psh_forgot_to_set_static_FLASHLIGHT + psh_forgot_to_set_static_LIGHTWARPTEXTURE + psh_forgot_to_set_static_PHONGWARPTEXTURE + psh_forgot_to_set_static_WRINKLEMAP + psh_forgot_to_set_static_DETAIL_BLEND_MODE + psh_forgot_to_set_static_DETAILTEXTURE + psh_forgot_to_set_static_RIMLIGHT + psh_forgot_to_set_static_FLASHLIGHTDEPTHFILTERMODE + psh_forgot_to_set_static_FASTPATH_NOBUMP + psh_forgot_to_set_static_BLENDTINTBYBASEALPHA + 0
class skin_ps20b_Dynamic_Index
{
private:
int m_nWRITEWATERFOGTODESTALPHA;
#ifdef _DEBUG
bool m_bWRITEWATERFOGTODESTALPHA;
#endif
public:
void SetWRITEWATERFOGTODESTALPHA( int i )
{
Assert( i >= 0 && i <= 1 );
m_nWRITEWATERFOGTODESTALPHA = i;
#ifdef _DEBUG
m_bWRITEWATERFOGTODESTALPHA = true;
#endif
}
void SetWRITEWATERFOGTODESTALPHA( bool i )
{
m_nWRITEWATERFOGTODESTALPHA = i ? 1 : 0;
#ifdef _DEBUG
m_bWRITEWATERFOGTODESTALPHA = true;
#endif
}
private:
int m_nPIXELFOGTYPE;
#ifdef _DEBUG
bool m_bPIXELFOGTYPE;
#endif
public:
void SetPIXELFOGTYPE( int i )
{
Assert( i >= 0 && i <= 1 );
m_nPIXELFOGTYPE = i;
#ifdef _DEBUG
m_bPIXELFOGTYPE = true;
#endif
}
void SetPIXELFOGTYPE( bool i )
{
m_nPIXELFOGTYPE = i ? 1 : 0;
#ifdef _DEBUG
m_bPIXELFOGTYPE = true;
#endif
}
private:
int m_nNUM_LIGHTS;
#ifdef _DEBUG
bool m_bNUM_LIGHTS;
#endif
public:
void SetNUM_LIGHTS( int i )
{
Assert( i >= 0 && i <= 4 );
m_nNUM_LIGHTS = i;
#ifdef _DEBUG
m_bNUM_LIGHTS = true;
#endif
}
void SetNUM_LIGHTS( bool i )
{
m_nNUM_LIGHTS = i ? 1 : 0;
#ifdef _DEBUG
m_bNUM_LIGHTS = true;
#endif
}
private:
int m_nWRITE_DEPTH_TO_DESTALPHA;
#ifdef _DEBUG
bool m_bWRITE_DEPTH_TO_DESTALPHA;
#endif
public:
void SetWRITE_DEPTH_TO_DESTALPHA( int i )
{
Assert( i >= 0 && i <= 1 );
m_nWRITE_DEPTH_TO_DESTALPHA = i;
#ifdef _DEBUG
m_bWRITE_DEPTH_TO_DESTALPHA = true;
#endif
}
void SetWRITE_DEPTH_TO_DESTALPHA( bool i )
{
m_nWRITE_DEPTH_TO_DESTALPHA = i ? 1 : 0;
#ifdef _DEBUG
m_bWRITE_DEPTH_TO_DESTALPHA = true;
#endif
}
private:
int m_nFLASHLIGHTSHADOWS;
#ifdef _DEBUG
bool m_bFLASHLIGHTSHADOWS;
#endif
public:
void SetFLASHLIGHTSHADOWS( int i )
{
Assert( i >= 0 && i <= 1 );
m_nFLASHLIGHTSHADOWS = i;
#ifdef _DEBUG
m_bFLASHLIGHTSHADOWS = true;
#endif
}
void SetFLASHLIGHTSHADOWS( bool i )
{
m_nFLASHLIGHTSHADOWS = i ? 1 : 0;
#ifdef _DEBUG
m_bFLASHLIGHTSHADOWS = true;
#endif
}
private:
int m_nPHONG_USE_EXPONENT_FACTOR;
#ifdef _DEBUG
bool m_bPHONG_USE_EXPONENT_FACTOR;
#endif
public:
void SetPHONG_USE_EXPONENT_FACTOR( int i )
{
Assert( i >= 0 && i <= 1 );
m_nPHONG_USE_EXPONENT_FACTOR = i;
#ifdef _DEBUG
m_bPHONG_USE_EXPONENT_FACTOR = true;
#endif
}
void SetPHONG_USE_EXPONENT_FACTOR( bool i )
{
m_nPHONG_USE_EXPONENT_FACTOR = i ? 1 : 0;
#ifdef _DEBUG
m_bPHONG_USE_EXPONENT_FACTOR = true;
#endif
}
public:
skin_ps20b_Dynamic_Index()
{
#ifdef _DEBUG
m_bWRITEWATERFOGTODESTALPHA = false;
#endif // _DEBUG
m_nWRITEWATERFOGTODESTALPHA = 0;
#ifdef _DEBUG
m_bPIXELFOGTYPE = false;
#endif // _DEBUG
m_nPIXELFOGTYPE = 0;
#ifdef _DEBUG
m_bNUM_LIGHTS = false;
#endif // _DEBUG
m_nNUM_LIGHTS = 0;
#ifdef _DEBUG
m_bWRITE_DEPTH_TO_DESTALPHA = false;
#endif // _DEBUG
m_nWRITE_DEPTH_TO_DESTALPHA = 0;
#ifdef _DEBUG
m_bFLASHLIGHTSHADOWS = false;
#endif // _DEBUG
m_nFLASHLIGHTSHADOWS = 0;
#ifdef _DEBUG
m_bPHONG_USE_EXPONENT_FACTOR = false;
#endif // _DEBUG
m_nPHONG_USE_EXPONENT_FACTOR = 0;
}
int GetIndex()
{
// Asserts to make sure that we aren't using any skipped combinations.
// Asserts to make sure that we are setting all of the combination vars.
#ifdef _DEBUG
bool bAllDynamicVarsDefined = m_bWRITEWATERFOGTODESTALPHA && m_bPIXELFOGTYPE && m_bNUM_LIGHTS && m_bWRITE_DEPTH_TO_DESTALPHA && m_bFLASHLIGHTSHADOWS && m_bPHONG_USE_EXPONENT_FACTOR;
Assert( bAllDynamicVarsDefined );
#endif // _DEBUG
return ( 1 * m_nWRITEWATERFOGTODESTALPHA ) + ( 2 * m_nPIXELFOGTYPE ) + ( 4 * m_nNUM_LIGHTS ) + ( 20 * m_nWRITE_DEPTH_TO_DESTALPHA ) + ( 40 * m_nFLASHLIGHTSHADOWS ) + ( 80 * m_nPHONG_USE_EXPONENT_FACTOR ) + 0;
}
};
#define shaderDynamicTest_skin_ps20b psh_forgot_to_set_dynamic_WRITEWATERFOGTODESTALPHA + psh_forgot_to_set_dynamic_PIXELFOGTYPE + psh_forgot_to_set_dynamic_NUM_LIGHTS + psh_forgot_to_set_dynamic_WRITE_DEPTH_TO_DESTALPHA + psh_forgot_to_set_dynamic_FLASHLIGHTSHADOWS + psh_forgot_to_set_dynamic_PHONG_USE_EXPONENT_FACTOR + 0

View file

@ -1,322 +1,537 @@
// ALL SKIP STATEMENTS THAT AFFECT THIS SHADER!!! #include "shaderlib/cshader.h"
// ($PIXELFOGTYPE == 0) && ($WRITEWATERFOGTODESTALPHA != 0) class skin_ps30_Static_Index
// (! $DETAILTEXTURE) && ( $DETAIL_BLEND_MODE != 0 ) {
// ( $FLASHLIGHT == 0 ) && ( $FLASHLIGHTSHADOWS == 1 ) private:
// ( $FLASHLIGHT == 0 ) && ( $FLASHLIGHTDEPTHFILTERMODE != 0 ) int m_nCONVERT_TO_SRGB;
// ( $SELFILLUM == 0 ) && ( $SELFILLUMFRESNEL == 1 ) #ifdef _DEBUG
// ( $FLASHLIGHT == 1 ) && ( $SELFILLUMFRESNEL == 1 ) bool m_bCONVERT_TO_SRGB;
// ( $FLASHLIGHT == 1 ) && ( $SELFILLUM == 1 ) #endif
// ( $BLENDTINTBYBASEALPHA ) && ( $SELFILLUM ) public:
// $FASTPATH_NOBUMP && ( $RIMLIGHT || $DETAILTEXTURE || $PHONGWARPTEXTURE || $SELFILLUM || $BLENDTINTBYBASEALPHA ) void SetCONVERT_TO_SRGB( int i )
// defined $HDRTYPE && defined $HDRENABLED && !$HDRTYPE && $HDRENABLED {
// defined $PIXELFOGTYPE && defined $WRITEWATERFOGTODESTALPHA && ( $PIXELFOGTYPE != 1 ) && $WRITEWATERFOGTODESTALPHA Assert( i >= 0 && i <= 0 );
// defined $LIGHTING_PREVIEW && defined $HDRTYPE && $LIGHTING_PREVIEW && $HDRTYPE != 0 m_nCONVERT_TO_SRGB = i;
// defined $LIGHTING_PREVIEW && defined $FASTPATHENVMAPTINT && $LIGHTING_PREVIEW && $FASTPATHENVMAPTINT #ifdef _DEBUG
// defined $LIGHTING_PREVIEW && defined $FASTPATHENVMAPCONTRAST && $LIGHTING_PREVIEW && $FASTPATHENVMAPCONTRAST m_bCONVERT_TO_SRGB = true;
// defined $LIGHTING_PREVIEW && defined $FASTPATH && $LIGHTING_PREVIEW && $FASTPATH #endif
// ($FLASHLIGHT || $FLASHLIGHTSHADOWS) && $LIGHTING_PREVIEW }
// defined $HDRTYPE && defined $HDRENABLED && !$HDRTYPE && $HDRENABLED void SetCONVERT_TO_SRGB( bool i )
// defined $PIXELFOGTYPE && defined $WRITEWATERFOGTODESTALPHA && ( $PIXELFOGTYPE != 1 ) && $WRITEWATERFOGTODESTALPHA {
// defined $LIGHTING_PREVIEW && defined $HDRTYPE && $LIGHTING_PREVIEW && $HDRTYPE != 0 m_nCONVERT_TO_SRGB = i ? 1 : 0;
// defined $LIGHTING_PREVIEW && defined $FASTPATHENVMAPTINT && $LIGHTING_PREVIEW && $FASTPATHENVMAPTINT #ifdef _DEBUG
// defined $LIGHTING_PREVIEW && defined $FASTPATHENVMAPCONTRAST && $LIGHTING_PREVIEW && $FASTPATHENVMAPCONTRAST m_bCONVERT_TO_SRGB = true;
// defined $LIGHTING_PREVIEW && defined $FASTPATH && $LIGHTING_PREVIEW && $FASTPATH #endif
// ($FLASHLIGHT || $FLASHLIGHTSHADOWS) && $LIGHTING_PREVIEW }
private:
#ifndef SKIN_PS30_H int m_nCUBEMAP;
#define SKIN_PS30_H #ifdef _DEBUG
bool m_bCUBEMAP;
#include "shaderapi/ishaderapi.h" #endif
#include "shaderapi/ishadershadow.h" public:
#include "materialsystem/imaterialvar.h" void SetCUBEMAP( int i )
{
class skin_ps30_Static_Index Assert( i >= 0 && i <= 1 );
{ m_nCUBEMAP = i;
unsigned int m_nCONVERT_TO_SRGB : 1; #ifdef _DEBUG
unsigned int m_nCUBEMAP : 2; m_bCUBEMAP = true;
unsigned int m_nSELFILLUM : 2; #endif
unsigned int m_nSELFILLUMFRESNEL : 2; }
unsigned int m_nFLASHLIGHT : 2; void SetCUBEMAP( bool i )
unsigned int m_nLIGHTWARPTEXTURE : 2; {
unsigned int m_nPHONGWARPTEXTURE : 2; m_nCUBEMAP = i ? 1 : 0;
unsigned int m_nWRINKLEMAP : 2; #ifdef _DEBUG
unsigned int m_nDETAIL_BLEND_MODE : 3; m_bCUBEMAP = true;
unsigned int m_nDETAILTEXTURE : 2; #endif
unsigned int m_nRIMLIGHT : 2; }
unsigned int m_nFLASHLIGHTDEPTHFILTERMODE : 2; private:
unsigned int m_nFASTPATH_NOBUMP : 2; int m_nSELFILLUM;
unsigned int m_nBLENDTINTBYBASEALPHA : 2; #ifdef _DEBUG
#ifdef _DEBUG bool m_bSELFILLUM;
bool m_bCONVERT_TO_SRGB : 1; #endif
bool m_bCUBEMAP : 1; public:
bool m_bSELFILLUM : 1; void SetSELFILLUM( int i )
bool m_bSELFILLUMFRESNEL : 1; {
bool m_bFLASHLIGHT : 1; Assert( i >= 0 && i <= 1 );
bool m_bLIGHTWARPTEXTURE : 1; m_nSELFILLUM = i;
bool m_bPHONGWARPTEXTURE : 1; #ifdef _DEBUG
bool m_bWRINKLEMAP : 1; m_bSELFILLUM = true;
bool m_bDETAIL_BLEND_MODE : 1; #endif
bool m_bDETAILTEXTURE : 1; }
bool m_bRIMLIGHT : 1; void SetSELFILLUM( bool i )
bool m_bFLASHLIGHTDEPTHFILTERMODE : 1; {
bool m_bFASTPATH_NOBUMP : 1; m_nSELFILLUM = i ? 1 : 0;
bool m_bBLENDTINTBYBASEALPHA : 1; #ifdef _DEBUG
#endif // _DEBUG m_bSELFILLUM = true;
public: #endif
void SetCONVERT_TO_SRGB( int i ) }
{ private:
Assert( i >= 0 && i <= 0 ); int m_nSELFILLUMFRESNEL;
m_nCONVERT_TO_SRGB = i; #ifdef _DEBUG
#ifdef _DEBUG bool m_bSELFILLUMFRESNEL;
m_bCONVERT_TO_SRGB = true; #endif
#endif // _DEBUG public:
} void SetSELFILLUMFRESNEL( int i )
{
void SetCUBEMAP( int i ) Assert( i >= 0 && i <= 1 );
{ m_nSELFILLUMFRESNEL = i;
Assert( i >= 0 && i <= 1 ); #ifdef _DEBUG
m_nCUBEMAP = i; m_bSELFILLUMFRESNEL = true;
#ifdef _DEBUG #endif
m_bCUBEMAP = true; }
#endif // _DEBUG void SetSELFILLUMFRESNEL( bool i )
} {
m_nSELFILLUMFRESNEL = i ? 1 : 0;
void SetSELFILLUM( int i ) #ifdef _DEBUG
{ m_bSELFILLUMFRESNEL = true;
Assert( i >= 0 && i <= 1 ); #endif
m_nSELFILLUM = i; }
#ifdef _DEBUG private:
m_bSELFILLUM = true; int m_nFLASHLIGHT;
#endif // _DEBUG #ifdef _DEBUG
} bool m_bFLASHLIGHT;
#endif
void SetSELFILLUMFRESNEL( int i ) public:
{ void SetFLASHLIGHT( int i )
Assert( i >= 0 && i <= 1 ); {
m_nSELFILLUMFRESNEL = i; Assert( i >= 0 && i <= 1 );
#ifdef _DEBUG m_nFLASHLIGHT = i;
m_bSELFILLUMFRESNEL = true; #ifdef _DEBUG
#endif // _DEBUG m_bFLASHLIGHT = true;
} #endif
}
void SetFLASHLIGHT( int i ) void SetFLASHLIGHT( bool i )
{ {
Assert( i >= 0 && i <= 1 ); m_nFLASHLIGHT = i ? 1 : 0;
m_nFLASHLIGHT = i; #ifdef _DEBUG
#ifdef _DEBUG m_bFLASHLIGHT = true;
m_bFLASHLIGHT = true; #endif
#endif // _DEBUG }
} private:
int m_nLIGHTWARPTEXTURE;
void SetLIGHTWARPTEXTURE( int i ) #ifdef _DEBUG
{ bool m_bLIGHTWARPTEXTURE;
Assert( i >= 0 && i <= 1 ); #endif
m_nLIGHTWARPTEXTURE = i; public:
#ifdef _DEBUG void SetLIGHTWARPTEXTURE( int i )
m_bLIGHTWARPTEXTURE = true; {
#endif // _DEBUG Assert( i >= 0 && i <= 1 );
} m_nLIGHTWARPTEXTURE = i;
#ifdef _DEBUG
void SetPHONGWARPTEXTURE( int i ) m_bLIGHTWARPTEXTURE = true;
{ #endif
Assert( i >= 0 && i <= 1 ); }
m_nPHONGWARPTEXTURE = i; void SetLIGHTWARPTEXTURE( bool i )
#ifdef _DEBUG {
m_bPHONGWARPTEXTURE = true; m_nLIGHTWARPTEXTURE = i ? 1 : 0;
#endif // _DEBUG #ifdef _DEBUG
} m_bLIGHTWARPTEXTURE = true;
#endif
void SetWRINKLEMAP( int i ) }
{ private:
Assert( i >= 0 && i <= 1 ); int m_nPHONGWARPTEXTURE;
m_nWRINKLEMAP = i; #ifdef _DEBUG
#ifdef _DEBUG bool m_bPHONGWARPTEXTURE;
m_bWRINKLEMAP = true; #endif
#endif // _DEBUG public:
} void SetPHONGWARPTEXTURE( int i )
{
void SetDETAIL_BLEND_MODE( int i ) Assert( i >= 0 && i <= 1 );
{ m_nPHONGWARPTEXTURE = i;
Assert( i >= 0 && i <= 6 ); #ifdef _DEBUG
m_nDETAIL_BLEND_MODE = i; m_bPHONGWARPTEXTURE = true;
#ifdef _DEBUG #endif
m_bDETAIL_BLEND_MODE = true; }
#endif // _DEBUG void SetPHONGWARPTEXTURE( bool i )
} {
m_nPHONGWARPTEXTURE = i ? 1 : 0;
void SetDETAILTEXTURE( int i ) #ifdef _DEBUG
{ m_bPHONGWARPTEXTURE = true;
Assert( i >= 0 && i <= 1 ); #endif
m_nDETAILTEXTURE = i; }
#ifdef _DEBUG private:
m_bDETAILTEXTURE = true; int m_nWRINKLEMAP;
#endif // _DEBUG #ifdef _DEBUG
} bool m_bWRINKLEMAP;
#endif
void SetRIMLIGHT( int i ) public:
{ void SetWRINKLEMAP( int i )
Assert( i >= 0 && i <= 1 ); {
m_nRIMLIGHT = i; Assert( i >= 0 && i <= 1 );
#ifdef _DEBUG m_nWRINKLEMAP = i;
m_bRIMLIGHT = true; #ifdef _DEBUG
#endif // _DEBUG m_bWRINKLEMAP = true;
} #endif
}
void SetFLASHLIGHTDEPTHFILTERMODE( int i ) void SetWRINKLEMAP( bool i )
{ {
Assert( i >= 0 && i <= 2 ); m_nWRINKLEMAP = i ? 1 : 0;
m_nFLASHLIGHTDEPTHFILTERMODE = i; #ifdef _DEBUG
#ifdef _DEBUG m_bWRINKLEMAP = true;
m_bFLASHLIGHTDEPTHFILTERMODE = true; #endif
#endif // _DEBUG }
} private:
int m_nDETAIL_BLEND_MODE;
void SetFASTPATH_NOBUMP( int i ) #ifdef _DEBUG
{ bool m_bDETAIL_BLEND_MODE;
Assert( i >= 0 && i <= 1 ); #endif
m_nFASTPATH_NOBUMP = i; public:
#ifdef _DEBUG void SetDETAIL_BLEND_MODE( int i )
m_bFASTPATH_NOBUMP = true; {
#endif // _DEBUG Assert( i >= 0 && i <= 6 );
} m_nDETAIL_BLEND_MODE = i;
#ifdef _DEBUG
void SetBLENDTINTBYBASEALPHA( int i ) m_bDETAIL_BLEND_MODE = true;
{ #endif
Assert( i >= 0 && i <= 1 ); }
m_nBLENDTINTBYBASEALPHA = i; void SetDETAIL_BLEND_MODE( bool i )
#ifdef _DEBUG {
m_bBLENDTINTBYBASEALPHA = true; m_nDETAIL_BLEND_MODE = i ? 1 : 0;
#endif // _DEBUG #ifdef _DEBUG
} m_bDETAIL_BLEND_MODE = true;
#endif
skin_ps30_Static_Index() }
{ private:
m_nCONVERT_TO_SRGB = 0; int m_nDETAILTEXTURE;
m_nCUBEMAP = 0; #ifdef _DEBUG
m_nSELFILLUM = 0; bool m_bDETAILTEXTURE;
m_nSELFILLUMFRESNEL = 0; #endif
m_nFLASHLIGHT = 0; public:
m_nLIGHTWARPTEXTURE = 0; void SetDETAILTEXTURE( int i )
m_nPHONGWARPTEXTURE = 0; {
m_nWRINKLEMAP = 0; Assert( i >= 0 && i <= 1 );
m_nDETAIL_BLEND_MODE = 0; m_nDETAILTEXTURE = i;
m_nDETAILTEXTURE = 0; #ifdef _DEBUG
m_nRIMLIGHT = 0; m_bDETAILTEXTURE = true;
m_nFLASHLIGHTDEPTHFILTERMODE = 0; #endif
m_nFASTPATH_NOBUMP = 0; }
m_nBLENDTINTBYBASEALPHA = 0; void SetDETAILTEXTURE( bool i )
#ifdef _DEBUG {
m_bCONVERT_TO_SRGB = false; m_nDETAILTEXTURE = i ? 1 : 0;
m_bCUBEMAP = false; #ifdef _DEBUG
m_bSELFILLUM = false; m_bDETAILTEXTURE = true;
m_bSELFILLUMFRESNEL = false; #endif
m_bFLASHLIGHT = false; }
m_bLIGHTWARPTEXTURE = false; private:
m_bPHONGWARPTEXTURE = false; int m_nRIMLIGHT;
m_bWRINKLEMAP = false; #ifdef _DEBUG
m_bDETAIL_BLEND_MODE = false; bool m_bRIMLIGHT;
m_bDETAILTEXTURE = false; #endif
m_bRIMLIGHT = false; public:
m_bFLASHLIGHTDEPTHFILTERMODE = false; void SetRIMLIGHT( int i )
m_bFASTPATH_NOBUMP = false; {
m_bBLENDTINTBYBASEALPHA = false; Assert( i >= 0 && i <= 1 );
#endif // _DEBUG m_nRIMLIGHT = i;
} #ifdef _DEBUG
m_bRIMLIGHT = true;
int GetIndex() const #endif
{ }
Assert( m_bCONVERT_TO_SRGB && m_bCUBEMAP && m_bSELFILLUM && m_bSELFILLUMFRESNEL && m_bFLASHLIGHT && m_bLIGHTWARPTEXTURE && m_bPHONGWARPTEXTURE && m_bWRINKLEMAP && m_bDETAIL_BLEND_MODE && m_bDETAILTEXTURE && m_bRIMLIGHT && m_bFLASHLIGHTDEPTHFILTERMODE && m_bFASTPATH_NOBUMP && m_bBLENDTINTBYBASEALPHA ); void SetRIMLIGHT( bool i )
return ( 80 * m_nCONVERT_TO_SRGB ) + ( 80 * m_nCUBEMAP ) + ( 160 * m_nSELFILLUM ) + ( 320 * m_nSELFILLUMFRESNEL ) + ( 640 * m_nFLASHLIGHT ) + ( 1280 * m_nLIGHTWARPTEXTURE ) + ( 2560 * m_nPHONGWARPTEXTURE ) + ( 5120 * m_nWRINKLEMAP ) + ( 10240 * m_nDETAIL_BLEND_MODE ) + ( 71680 * m_nDETAILTEXTURE ) + ( 143360 * m_nRIMLIGHT ) + ( 286720 * m_nFLASHLIGHTDEPTHFILTERMODE ) + ( 860160 * m_nFASTPATH_NOBUMP ) + ( 1720320 * m_nBLENDTINTBYBASEALPHA ) + 0; {
} m_nRIMLIGHT = i ? 1 : 0;
}; #ifdef _DEBUG
m_bRIMLIGHT = true;
#define shaderStaticTest_skin_ps30 psh_forgot_to_set_static_CONVERT_TO_SRGB + psh_forgot_to_set_static_CUBEMAP + psh_forgot_to_set_static_SELFILLUM + psh_forgot_to_set_static_SELFILLUMFRESNEL + psh_forgot_to_set_static_FLASHLIGHT + psh_forgot_to_set_static_LIGHTWARPTEXTURE + psh_forgot_to_set_static_PHONGWARPTEXTURE + psh_forgot_to_set_static_WRINKLEMAP + psh_forgot_to_set_static_DETAIL_BLEND_MODE + psh_forgot_to_set_static_DETAILTEXTURE + psh_forgot_to_set_static_RIMLIGHT + psh_forgot_to_set_static_FLASHLIGHTDEPTHFILTERMODE + psh_forgot_to_set_static_FASTPATH_NOBUMP + psh_forgot_to_set_static_BLENDTINTBYBASEALPHA #endif
}
private:
class skin_ps30_Dynamic_Index int m_nFLASHLIGHTDEPTHFILTERMODE;
{ #ifdef _DEBUG
unsigned int m_nWRITEWATERFOGTODESTALPHA : 2; bool m_bFLASHLIGHTDEPTHFILTERMODE;
unsigned int m_nPIXELFOGTYPE : 2; #endif
unsigned int m_nNUM_LIGHTS : 3; public:
unsigned int m_nWRITE_DEPTH_TO_DESTALPHA : 2; void SetFLASHLIGHTDEPTHFILTERMODE( int i )
unsigned int m_nFLASHLIGHTSHADOWS : 2; {
#ifdef _DEBUG Assert( i >= 0 && i <= 2 );
bool m_bWRITEWATERFOGTODESTALPHA : 1; m_nFLASHLIGHTDEPTHFILTERMODE = i;
bool m_bPIXELFOGTYPE : 1; #ifdef _DEBUG
bool m_bNUM_LIGHTS : 1; m_bFLASHLIGHTDEPTHFILTERMODE = true;
bool m_bWRITE_DEPTH_TO_DESTALPHA : 1; #endif
bool m_bFLASHLIGHTSHADOWS : 1; }
#endif // _DEBUG void SetFLASHLIGHTDEPTHFILTERMODE( bool i )
public: {
void SetWRITEWATERFOGTODESTALPHA( int i ) m_nFLASHLIGHTDEPTHFILTERMODE = i ? 1 : 0;
{ #ifdef _DEBUG
Assert( i >= 0 && i <= 1 ); m_bFLASHLIGHTDEPTHFILTERMODE = true;
m_nWRITEWATERFOGTODESTALPHA = i; #endif
#ifdef _DEBUG }
m_bWRITEWATERFOGTODESTALPHA = true; private:
#endif // _DEBUG int m_nFASTPATH_NOBUMP;
} #ifdef _DEBUG
bool m_bFASTPATH_NOBUMP;
void SetPIXELFOGTYPE( int i ) #endif
{ public:
Assert( i >= 0 && i <= 1 ); void SetFASTPATH_NOBUMP( int i )
m_nPIXELFOGTYPE = i; {
#ifdef _DEBUG Assert( i >= 0 && i <= 1 );
m_bPIXELFOGTYPE = true; m_nFASTPATH_NOBUMP = i;
#endif // _DEBUG #ifdef _DEBUG
} m_bFASTPATH_NOBUMP = true;
#endif
void SetNUM_LIGHTS( int i ) }
{ void SetFASTPATH_NOBUMP( bool i )
Assert( i >= 0 && i <= 4 ); {
m_nNUM_LIGHTS = i; m_nFASTPATH_NOBUMP = i ? 1 : 0;
#ifdef _DEBUG #ifdef _DEBUG
m_bNUM_LIGHTS = true; m_bFASTPATH_NOBUMP = true;
#endif // _DEBUG #endif
} }
private:
void SetWRITE_DEPTH_TO_DESTALPHA( int i ) int m_nBLENDTINTBYBASEALPHA;
{ #ifdef _DEBUG
Assert( i >= 0 && i <= 1 ); bool m_bBLENDTINTBYBASEALPHA;
m_nWRITE_DEPTH_TO_DESTALPHA = i; #endif
#ifdef _DEBUG public:
m_bWRITE_DEPTH_TO_DESTALPHA = true; void SetBLENDTINTBYBASEALPHA( int i )
#endif // _DEBUG {
} Assert( i >= 0 && i <= 1 );
m_nBLENDTINTBYBASEALPHA = i;
void SetFLASHLIGHTSHADOWS( int i ) #ifdef _DEBUG
{ m_bBLENDTINTBYBASEALPHA = true;
Assert( i >= 0 && i <= 1 ); #endif
m_nFLASHLIGHTSHADOWS = i; }
#ifdef _DEBUG void SetBLENDTINTBYBASEALPHA( bool i )
m_bFLASHLIGHTSHADOWS = true; {
#endif // _DEBUG m_nBLENDTINTBYBASEALPHA = i ? 1 : 0;
} #ifdef _DEBUG
m_bBLENDTINTBYBASEALPHA = true;
skin_ps30_Dynamic_Index() #endif
{ }
m_nWRITEWATERFOGTODESTALPHA = 0; public:
m_nPIXELFOGTYPE = 0; skin_ps30_Static_Index( )
m_nNUM_LIGHTS = 0; {
m_nWRITE_DEPTH_TO_DESTALPHA = 0; #ifdef _DEBUG
m_nFLASHLIGHTSHADOWS = 0; m_bCONVERT_TO_SRGB = false;
#ifdef _DEBUG #endif // _DEBUG
m_bWRITEWATERFOGTODESTALPHA = false; m_nCONVERT_TO_SRGB = 0;
m_bPIXELFOGTYPE = false; #ifdef _DEBUG
m_bNUM_LIGHTS = false; m_bCUBEMAP = false;
m_bWRITE_DEPTH_TO_DESTALPHA = false; #endif // _DEBUG
m_bFLASHLIGHTSHADOWS = false; m_nCUBEMAP = 0;
#endif // _DEBUG #ifdef _DEBUG
} m_bSELFILLUM = false;
#endif // _DEBUG
int GetIndex() const m_nSELFILLUM = 0;
{ #ifdef _DEBUG
Assert( m_bWRITEWATERFOGTODESTALPHA && m_bPIXELFOGTYPE && m_bNUM_LIGHTS && m_bWRITE_DEPTH_TO_DESTALPHA && m_bFLASHLIGHTSHADOWS ); m_bSELFILLUMFRESNEL = false;
return ( 1 * m_nWRITEWATERFOGTODESTALPHA ) + ( 2 * m_nPIXELFOGTYPE ) + ( 4 * m_nNUM_LIGHTS ) + ( 20 * m_nWRITE_DEPTH_TO_DESTALPHA ) + ( 40 * m_nFLASHLIGHTSHADOWS ) + 0; #endif // _DEBUG
} m_nSELFILLUMFRESNEL = 0;
}; #ifdef _DEBUG
m_bFLASHLIGHT = false;
#define shaderDynamicTest_skin_ps30 psh_forgot_to_set_dynamic_WRITEWATERFOGTODESTALPHA + psh_forgot_to_set_dynamic_PIXELFOGTYPE + psh_forgot_to_set_dynamic_NUM_LIGHTS + psh_forgot_to_set_dynamic_WRITE_DEPTH_TO_DESTALPHA + psh_forgot_to_set_dynamic_FLASHLIGHTSHADOWS #endif // _DEBUG
m_nFLASHLIGHT = 0;
#ifdef _DEBUG
#endif // SKIN_PS30_H m_bLIGHTWARPTEXTURE = false;
#endif // _DEBUG
m_nLIGHTWARPTEXTURE = 0;
#ifdef _DEBUG
m_bPHONGWARPTEXTURE = false;
#endif // _DEBUG
m_nPHONGWARPTEXTURE = 0;
#ifdef _DEBUG
m_bWRINKLEMAP = false;
#endif // _DEBUG
m_nWRINKLEMAP = 0;
#ifdef _DEBUG
m_bDETAIL_BLEND_MODE = false;
#endif // _DEBUG
m_nDETAIL_BLEND_MODE = 0;
#ifdef _DEBUG
m_bDETAILTEXTURE = false;
#endif // _DEBUG
m_nDETAILTEXTURE = 0;
#ifdef _DEBUG
m_bRIMLIGHT = false;
#endif // _DEBUG
m_nRIMLIGHT = 0;
#ifdef _DEBUG
m_bFLASHLIGHTDEPTHFILTERMODE = false;
#endif // _DEBUG
m_nFLASHLIGHTDEPTHFILTERMODE = 0;
#ifdef _DEBUG
m_bFASTPATH_NOBUMP = false;
#endif // _DEBUG
m_nFASTPATH_NOBUMP = 0;
#ifdef _DEBUG
m_bBLENDTINTBYBASEALPHA = false;
#endif // _DEBUG
m_nBLENDTINTBYBASEALPHA = 0;
}
int GetIndex()
{
// Asserts to make sure that we aren't using any skipped combinations.
// Asserts to make sure that we are setting all of the combination vars.
#ifdef _DEBUG
bool bAllStaticVarsDefined = m_bCONVERT_TO_SRGB && m_bCUBEMAP && m_bSELFILLUM && m_bSELFILLUMFRESNEL && m_bFLASHLIGHT && m_bLIGHTWARPTEXTURE && m_bPHONGWARPTEXTURE && m_bWRINKLEMAP && m_bDETAIL_BLEND_MODE && m_bDETAILTEXTURE && m_bRIMLIGHT && m_bFLASHLIGHTDEPTHFILTERMODE && m_bFASTPATH_NOBUMP && m_bBLENDTINTBYBASEALPHA;
Assert( bAllStaticVarsDefined );
#endif // _DEBUG
return ( 160 * m_nCONVERT_TO_SRGB ) + ( 160 * m_nCUBEMAP ) + ( 320 * m_nSELFILLUM ) + ( 640 * m_nSELFILLUMFRESNEL ) + ( 1280 * m_nFLASHLIGHT ) + ( 2560 * m_nLIGHTWARPTEXTURE ) + ( 5120 * m_nPHONGWARPTEXTURE ) + ( 10240 * m_nWRINKLEMAP ) + ( 20480 * m_nDETAIL_BLEND_MODE ) + ( 143360 * m_nDETAILTEXTURE ) + ( 286720 * m_nRIMLIGHT ) + ( 573440 * m_nFLASHLIGHTDEPTHFILTERMODE ) + ( 1720320 * m_nFASTPATH_NOBUMP ) + ( 3440640 * m_nBLENDTINTBYBASEALPHA ) + 0;
}
};
#define shaderStaticTest_skin_ps30 psh_forgot_to_set_static_CONVERT_TO_SRGB + psh_forgot_to_set_static_CUBEMAP + psh_forgot_to_set_static_SELFILLUM + psh_forgot_to_set_static_SELFILLUMFRESNEL + psh_forgot_to_set_static_FLASHLIGHT + psh_forgot_to_set_static_LIGHTWARPTEXTURE + psh_forgot_to_set_static_PHONGWARPTEXTURE + psh_forgot_to_set_static_WRINKLEMAP + psh_forgot_to_set_static_DETAIL_BLEND_MODE + psh_forgot_to_set_static_DETAILTEXTURE + psh_forgot_to_set_static_RIMLIGHT + psh_forgot_to_set_static_FLASHLIGHTDEPTHFILTERMODE + psh_forgot_to_set_static_FASTPATH_NOBUMP + psh_forgot_to_set_static_BLENDTINTBYBASEALPHA + 0
class skin_ps30_Dynamic_Index
{
private:
int m_nWRITEWATERFOGTODESTALPHA;
#ifdef _DEBUG
bool m_bWRITEWATERFOGTODESTALPHA;
#endif
public:
void SetWRITEWATERFOGTODESTALPHA( int i )
{
Assert( i >= 0 && i <= 1 );
m_nWRITEWATERFOGTODESTALPHA = i;
#ifdef _DEBUG
m_bWRITEWATERFOGTODESTALPHA = true;
#endif
}
void SetWRITEWATERFOGTODESTALPHA( bool i )
{
m_nWRITEWATERFOGTODESTALPHA = i ? 1 : 0;
#ifdef _DEBUG
m_bWRITEWATERFOGTODESTALPHA = true;
#endif
}
private:
int m_nPIXELFOGTYPE;
#ifdef _DEBUG
bool m_bPIXELFOGTYPE;
#endif
public:
void SetPIXELFOGTYPE( int i )
{
Assert( i >= 0 && i <= 1 );
m_nPIXELFOGTYPE = i;
#ifdef _DEBUG
m_bPIXELFOGTYPE = true;
#endif
}
void SetPIXELFOGTYPE( bool i )
{
m_nPIXELFOGTYPE = i ? 1 : 0;
#ifdef _DEBUG
m_bPIXELFOGTYPE = true;
#endif
}
private:
int m_nNUM_LIGHTS;
#ifdef _DEBUG
bool m_bNUM_LIGHTS;
#endif
public:
void SetNUM_LIGHTS( int i )
{
Assert( i >= 0 && i <= 4 );
m_nNUM_LIGHTS = i;
#ifdef _DEBUG
m_bNUM_LIGHTS = true;
#endif
}
void SetNUM_LIGHTS( bool i )
{
m_nNUM_LIGHTS = i ? 1 : 0;
#ifdef _DEBUG
m_bNUM_LIGHTS = true;
#endif
}
private:
int m_nWRITE_DEPTH_TO_DESTALPHA;
#ifdef _DEBUG
bool m_bWRITE_DEPTH_TO_DESTALPHA;
#endif
public:
void SetWRITE_DEPTH_TO_DESTALPHA( int i )
{
Assert( i >= 0 && i <= 1 );
m_nWRITE_DEPTH_TO_DESTALPHA = i;
#ifdef _DEBUG
m_bWRITE_DEPTH_TO_DESTALPHA = true;
#endif
}
void SetWRITE_DEPTH_TO_DESTALPHA( bool i )
{
m_nWRITE_DEPTH_TO_DESTALPHA = i ? 1 : 0;
#ifdef _DEBUG
m_bWRITE_DEPTH_TO_DESTALPHA = true;
#endif
}
private:
int m_nFLASHLIGHTSHADOWS;
#ifdef _DEBUG
bool m_bFLASHLIGHTSHADOWS;
#endif
public:
void SetFLASHLIGHTSHADOWS( int i )
{
Assert( i >= 0 && i <= 1 );
m_nFLASHLIGHTSHADOWS = i;
#ifdef _DEBUG
m_bFLASHLIGHTSHADOWS = true;
#endif
}
void SetFLASHLIGHTSHADOWS( bool i )
{
m_nFLASHLIGHTSHADOWS = i ? 1 : 0;
#ifdef _DEBUG
m_bFLASHLIGHTSHADOWS = true;
#endif
}
private:
int m_nPHONG_USE_EXPONENT_FACTOR;
#ifdef _DEBUG
bool m_bPHONG_USE_EXPONENT_FACTOR;
#endif
public:
void SetPHONG_USE_EXPONENT_FACTOR( int i )
{
Assert( i >= 0 && i <= 1 );
m_nPHONG_USE_EXPONENT_FACTOR = i;
#ifdef _DEBUG
m_bPHONG_USE_EXPONENT_FACTOR = true;
#endif
}
void SetPHONG_USE_EXPONENT_FACTOR( bool i )
{
m_nPHONG_USE_EXPONENT_FACTOR = i ? 1 : 0;
#ifdef _DEBUG
m_bPHONG_USE_EXPONENT_FACTOR = true;
#endif
}
public:
skin_ps30_Dynamic_Index()
{
#ifdef _DEBUG
m_bWRITEWATERFOGTODESTALPHA = false;
#endif // _DEBUG
m_nWRITEWATERFOGTODESTALPHA = 0;
#ifdef _DEBUG
m_bPIXELFOGTYPE = false;
#endif // _DEBUG
m_nPIXELFOGTYPE = 0;
#ifdef _DEBUG
m_bNUM_LIGHTS = false;
#endif // _DEBUG
m_nNUM_LIGHTS = 0;
#ifdef _DEBUG
m_bWRITE_DEPTH_TO_DESTALPHA = false;
#endif // _DEBUG
m_nWRITE_DEPTH_TO_DESTALPHA = 0;
#ifdef _DEBUG
m_bFLASHLIGHTSHADOWS = false;
#endif // _DEBUG
m_nFLASHLIGHTSHADOWS = 0;
#ifdef _DEBUG
m_bPHONG_USE_EXPONENT_FACTOR = false;
#endif // _DEBUG
m_nPHONG_USE_EXPONENT_FACTOR = 0;
}
int GetIndex()
{
// Asserts to make sure that we aren't using any skipped combinations.
// Asserts to make sure that we are setting all of the combination vars.
#ifdef _DEBUG
bool bAllDynamicVarsDefined = m_bWRITEWATERFOGTODESTALPHA && m_bPIXELFOGTYPE && m_bNUM_LIGHTS && m_bWRITE_DEPTH_TO_DESTALPHA && m_bFLASHLIGHTSHADOWS && m_bPHONG_USE_EXPONENT_FACTOR;
Assert( bAllDynamicVarsDefined );
#endif // _DEBUG
return ( 1 * m_nWRITEWATERFOGTODESTALPHA ) + ( 2 * m_nPIXELFOGTYPE ) + ( 4 * m_nNUM_LIGHTS ) + ( 20 * m_nWRITE_DEPTH_TO_DESTALPHA ) + ( 40 * m_nFLASHLIGHTSHADOWS ) + ( 80 * m_nPHONG_USE_EXPONENT_FACTOR ) + 0;
}
};
#define shaderDynamicTest_skin_ps30 psh_forgot_to_set_dynamic_WRITEWATERFOGTODESTALPHA + psh_forgot_to_set_dynamic_PIXELFOGTYPE + psh_forgot_to_set_dynamic_NUM_LIGHTS + psh_forgot_to_set_dynamic_WRITE_DEPTH_TO_DESTALPHA + psh_forgot_to_set_dynamic_FLASHLIGHTSHADOWS + psh_forgot_to_set_dynamic_PHONG_USE_EXPONENT_FACTOR + 0

View file

@ -1,132 +1,187 @@
// ALL SKIP STATEMENTS THAT AFFECT THIS SHADER!!! #include "shaderlib/cshader.h"
// $USE_STATIC_CONTROL_FLOW && ( $NUM_LIGHTS > 0 ) class skin_vs20_Static_Index
// defined $LIGHTING_PREVIEW && defined $FASTPATH && $LIGHTING_PREVIEW && $FASTPATH {
private:
#ifndef SKIN_VS20_H int m_nUSE_STATIC_CONTROL_FLOW;
#define SKIN_VS20_H #ifdef _DEBUG
bool m_bUSE_STATIC_CONTROL_FLOW;
#include "shaderapi/ishaderapi.h" #endif
#include "shaderapi/ishadershadow.h" public:
#include "materialsystem/imaterialvar.h" void SetUSE_STATIC_CONTROL_FLOW( int i )
{
class skin_vs20_Static_Index Assert( i >= 0 && i <= 1 );
{ m_nUSE_STATIC_CONTROL_FLOW = i;
unsigned int m_nUSE_STATIC_CONTROL_FLOW : 2; #ifdef _DEBUG
#ifdef _DEBUG m_bUSE_STATIC_CONTROL_FLOW = true;
bool m_bUSE_STATIC_CONTROL_FLOW : 1; #endif
#endif // _DEBUG }
public: void SetUSE_STATIC_CONTROL_FLOW( bool i )
void SetUSE_STATIC_CONTROL_FLOW( int i ) {
{ m_nUSE_STATIC_CONTROL_FLOW = i ? 1 : 0;
Assert( i >= 0 && i <= 1 ); #ifdef _DEBUG
m_nUSE_STATIC_CONTROL_FLOW = i; m_bUSE_STATIC_CONTROL_FLOW = true;
#ifdef _DEBUG #endif
m_bUSE_STATIC_CONTROL_FLOW = true; }
#endif // _DEBUG public:
} skin_vs20_Static_Index( )
{
skin_vs20_Static_Index() #ifdef _DEBUG
{ m_bUSE_STATIC_CONTROL_FLOW = false;
m_nUSE_STATIC_CONTROL_FLOW = 0; #endif // _DEBUG
#ifdef _DEBUG m_nUSE_STATIC_CONTROL_FLOW = 0;
m_bUSE_STATIC_CONTROL_FLOW = false; }
#endif // _DEBUG int GetIndex()
} {
// Asserts to make sure that we aren't using any skipped combinations.
int GetIndex() const // Asserts to make sure that we are setting all of the combination vars.
{ #ifdef _DEBUG
Assert( m_bUSE_STATIC_CONTROL_FLOW ); bool bAllStaticVarsDefined = m_bUSE_STATIC_CONTROL_FLOW;
return ( 48 * m_nUSE_STATIC_CONTROL_FLOW ) + 0; Assert( bAllStaticVarsDefined );
} #endif // _DEBUG
}; return ( 48 * m_nUSE_STATIC_CONTROL_FLOW ) + 0;
}
#define shaderStaticTest_skin_vs20 vsh_forgot_to_set_static_USE_STATIC_CONTROL_FLOW };
#define shaderStaticTest_skin_vs20 vsh_forgot_to_set_static_USE_STATIC_CONTROL_FLOW + 0
class skin_vs20_Dynamic_Index
class skin_vs20_Dynamic_Index {
{ private:
unsigned int m_nCOMPRESSED_VERTS : 2; int m_nCOMPRESSED_VERTS;
unsigned int m_nDOWATERFOG : 2; #ifdef _DEBUG
unsigned int m_nSKINNING : 2; bool m_bCOMPRESSED_VERTS;
unsigned int m_nLIGHTING_PREVIEW : 2; #endif
unsigned int m_nNUM_LIGHTS : 2; public:
#ifdef _DEBUG void SetCOMPRESSED_VERTS( int i )
bool m_bCOMPRESSED_VERTS : 1; {
bool m_bDOWATERFOG : 1; Assert( i >= 0 && i <= 1 );
bool m_bSKINNING : 1; m_nCOMPRESSED_VERTS = i;
bool m_bLIGHTING_PREVIEW : 1; #ifdef _DEBUG
bool m_bNUM_LIGHTS : 1; m_bCOMPRESSED_VERTS = true;
#endif // _DEBUG #endif
public: }
void SetCOMPRESSED_VERTS( int i ) void SetCOMPRESSED_VERTS( bool i )
{ {
Assert( i >= 0 && i <= 1 ); m_nCOMPRESSED_VERTS = i ? 1 : 0;
m_nCOMPRESSED_VERTS = i; #ifdef _DEBUG
#ifdef _DEBUG m_bCOMPRESSED_VERTS = true;
m_bCOMPRESSED_VERTS = true; #endif
#endif // _DEBUG }
} private:
int m_nDOWATERFOG;
void SetDOWATERFOG( int i ) #ifdef _DEBUG
{ bool m_bDOWATERFOG;
Assert( i >= 0 && i <= 1 ); #endif
m_nDOWATERFOG = i; public:
#ifdef _DEBUG void SetDOWATERFOG( int i )
m_bDOWATERFOG = true; {
#endif // _DEBUG Assert( i >= 0 && i <= 1 );
} m_nDOWATERFOG = i;
#ifdef _DEBUG
void SetSKINNING( int i ) m_bDOWATERFOG = true;
{ #endif
Assert( i >= 0 && i <= 1 ); }
m_nSKINNING = i; void SetDOWATERFOG( bool i )
#ifdef _DEBUG {
m_bSKINNING = true; m_nDOWATERFOG = i ? 1 : 0;
#endif // _DEBUG #ifdef _DEBUG
} m_bDOWATERFOG = true;
#endif
void SetLIGHTING_PREVIEW( int i ) }
{ private:
Assert( i >= 0 && i <= 1 ); int m_nSKINNING;
m_nLIGHTING_PREVIEW = i; #ifdef _DEBUG
#ifdef _DEBUG bool m_bSKINNING;
m_bLIGHTING_PREVIEW = true; #endif
#endif // _DEBUG public:
} void SetSKINNING( int i )
{
void SetNUM_LIGHTS( int i ) Assert( i >= 0 && i <= 1 );
{ m_nSKINNING = i;
Assert( i >= 0 && i <= 2 ); #ifdef _DEBUG
m_nNUM_LIGHTS = i; m_bSKINNING = true;
#ifdef _DEBUG #endif
m_bNUM_LIGHTS = true; }
#endif // _DEBUG void SetSKINNING( bool i )
} {
m_nSKINNING = i ? 1 : 0;
skin_vs20_Dynamic_Index() #ifdef _DEBUG
{ m_bSKINNING = true;
m_nCOMPRESSED_VERTS = 0; #endif
m_nDOWATERFOG = 0; }
m_nSKINNING = 0; private:
m_nLIGHTING_PREVIEW = 0; int m_nLIGHTING_PREVIEW;
m_nNUM_LIGHTS = 0; #ifdef _DEBUG
#ifdef _DEBUG bool m_bLIGHTING_PREVIEW;
m_bCOMPRESSED_VERTS = false; #endif
m_bDOWATERFOG = false; public:
m_bSKINNING = false; void SetLIGHTING_PREVIEW( int i )
m_bLIGHTING_PREVIEW = false; {
m_bNUM_LIGHTS = false; Assert( i >= 0 && i <= 1 );
#endif // _DEBUG m_nLIGHTING_PREVIEW = i;
} #ifdef _DEBUG
m_bLIGHTING_PREVIEW = true;
int GetIndex() const #endif
{ }
Assert( m_bCOMPRESSED_VERTS && m_bDOWATERFOG && m_bSKINNING && m_bLIGHTING_PREVIEW && m_bNUM_LIGHTS ); void SetLIGHTING_PREVIEW( bool i )
return ( 1 * m_nCOMPRESSED_VERTS ) + ( 2 * m_nDOWATERFOG ) + ( 4 * m_nSKINNING ) + ( 8 * m_nLIGHTING_PREVIEW ) + ( 16 * m_nNUM_LIGHTS ) + 0; {
} m_nLIGHTING_PREVIEW = i ? 1 : 0;
}; #ifdef _DEBUG
m_bLIGHTING_PREVIEW = true;
#define shaderDynamicTest_skin_vs20 vsh_forgot_to_set_dynamic_COMPRESSED_VERTS + vsh_forgot_to_set_dynamic_DOWATERFOG + vsh_forgot_to_set_dynamic_SKINNING + vsh_forgot_to_set_dynamic_LIGHTING_PREVIEW + vsh_forgot_to_set_dynamic_NUM_LIGHTS #endif
}
private:
#endif // SKIN_VS20_H int m_nNUM_LIGHTS;
#ifdef _DEBUG
bool m_bNUM_LIGHTS;
#endif
public:
void SetNUM_LIGHTS( int i )
{
Assert( i >= 0 && i <= 2 );
m_nNUM_LIGHTS = i;
#ifdef _DEBUG
m_bNUM_LIGHTS = true;
#endif
}
void SetNUM_LIGHTS( bool i )
{
m_nNUM_LIGHTS = i ? 1 : 0;
#ifdef _DEBUG
m_bNUM_LIGHTS = true;
#endif
}
public:
skin_vs20_Dynamic_Index()
{
#ifdef _DEBUG
m_bCOMPRESSED_VERTS = false;
#endif // _DEBUG
m_nCOMPRESSED_VERTS = 0;
#ifdef _DEBUG
m_bDOWATERFOG = false;
#endif // _DEBUG
m_nDOWATERFOG = 0;
#ifdef _DEBUG
m_bSKINNING = false;
#endif // _DEBUG
m_nSKINNING = 0;
#ifdef _DEBUG
m_bLIGHTING_PREVIEW = false;
#endif // _DEBUG
m_nLIGHTING_PREVIEW = 0;
#ifdef _DEBUG
m_bNUM_LIGHTS = false;
#endif // _DEBUG
m_nNUM_LIGHTS = 0;
}
int GetIndex()
{
// Asserts to make sure that we aren't using any skipped combinations.
// Asserts to make sure that we are setting all of the combination vars.
#ifdef _DEBUG
bool bAllDynamicVarsDefined = m_bCOMPRESSED_VERTS && m_bDOWATERFOG && m_bSKINNING && m_bLIGHTING_PREVIEW && m_bNUM_LIGHTS;
Assert( bAllDynamicVarsDefined );
#endif // _DEBUG
return ( 1 * m_nCOMPRESSED_VERTS ) + ( 2 * m_nDOWATERFOG ) + ( 4 * m_nSKINNING ) + ( 8 * m_nLIGHTING_PREVIEW ) + ( 16 * m_nNUM_LIGHTS ) + 0;
}
};
#define shaderDynamicTest_skin_vs20 vsh_forgot_to_set_dynamic_COMPRESSED_VERTS + vsh_forgot_to_set_dynamic_DOWATERFOG + vsh_forgot_to_set_dynamic_SKINNING + vsh_forgot_to_set_dynamic_LIGHTING_PREVIEW + vsh_forgot_to_set_dynamic_NUM_LIGHTS + 0

View file

@ -536,6 +536,27 @@ public:
m_bLIGHTING_PREVIEW = true; m_bLIGHTING_PREVIEW = true;
#endif #endif
} }
private:
int m_nSTATIC_LIGHT_LIGHTMAP;
#ifdef _DEBUG
bool m_bSTATIC_LIGHT_LIGHTMAP;
#endif
public:
void SetSTATIC_LIGHT_LIGHTMAP( int i )
{
Assert( i >= 0 && i <= 0 );
m_nSTATIC_LIGHT_LIGHTMAP = i;
#ifdef _DEBUG
m_bSTATIC_LIGHT_LIGHTMAP = true;
#endif
}
void SetSTATIC_LIGHT_LIGHTMAP( bool i )
{
m_nSTATIC_LIGHT_LIGHTMAP = i ? 1 : 0;
#ifdef _DEBUG
m_bSTATIC_LIGHT_LIGHTMAP = true;
#endif
}
public: public:
vertexlit_and_unlit_generic_ps20_Dynamic_Index() vertexlit_and_unlit_generic_ps20_Dynamic_Index()
{ {
@ -547,6 +568,10 @@ public:
m_bLIGHTING_PREVIEW = false; m_bLIGHTING_PREVIEW = false;
#endif // _DEBUG #endif // _DEBUG
m_nLIGHTING_PREVIEW = 0; m_nLIGHTING_PREVIEW = 0;
#ifdef _DEBUG
m_bSTATIC_LIGHT_LIGHTMAP = false;
#endif // _DEBUG
m_nSTATIC_LIGHT_LIGHTMAP = 0;
} }
int GetIndex() int GetIndex()
{ {
@ -556,7 +581,7 @@ public:
bool bAllDynamicVarsDefined = m_bPIXELFOGTYPE && m_bLIGHTING_PREVIEW && m_bSTATIC_LIGHT_LIGHTMAP; bool bAllDynamicVarsDefined = m_bPIXELFOGTYPE && m_bLIGHTING_PREVIEW && m_bSTATIC_LIGHT_LIGHTMAP;
Assert( bAllDynamicVarsDefined ); Assert( bAllDynamicVarsDefined );
#endif // _DEBUG #endif // _DEBUG
return ( 1 * m_nPIXELFOGTYPE ) + ( 2 * m_nLIGHTING_PREVIEW ) + 0; return ( 1 * m_nPIXELFOGTYPE ) + ( 2 * m_nLIGHTING_PREVIEW ) + ( 6 * m_nSTATIC_LIGHT_LIGHTMAP ) + 0;
} }
}; };
#define shaderDynamicTest_vertexlit_and_unlit_generic_ps20 psh_forgot_to_set_dynamic_PIXELFOGTYPE + psh_forgot_to_set_dynamic_LIGHTING_PREVIEW + 0 #define shaderDynamicTest_vertexlit_and_unlit_generic_ps20 psh_forgot_to_set_dynamic_PIXELFOGTYPE + psh_forgot_to_set_dynamic_LIGHTING_PREVIEW + psh_forgot_to_set_dynamic_STATIC_LIGHT_LIGHTMAP + 0

View file

@ -1,263 +1,462 @@
// ALL SKIP STATEMENTS THAT AFFECT THIS SHADER!!! #include "shaderlib/cshader.h"
// ($SEPARATE_DETAIL_UVS) && ($SEAMLESS_DETAIL) class vertexlit_and_unlit_generic_vs30_Static_Index
// ($DONT_GAMMA_CONVERT_VERTEX_COLOR && ( ! $VERTEXCOLOR ) ) {
// defined $LIGHTING_PREVIEW && defined $FASTPATH && $LIGHTING_PREVIEW && $FASTPATH private:
int m_nVERTEXCOLOR;
#ifndef VERTEXLIT_AND_UNLIT_GENERIC_VS30_H #ifdef _DEBUG
#define VERTEXLIT_AND_UNLIT_GENERIC_VS30_H bool m_bVERTEXCOLOR;
#endif
#include "shaderapi/ishaderapi.h" public:
#include "shaderapi/ishadershadow.h" void SetVERTEXCOLOR( int i )
#include "materialsystem/imaterialvar.h" {
Assert( i >= 0 && i <= 1 );
class vertexlit_and_unlit_generic_vs30_Static_Index m_nVERTEXCOLOR = i;
{ #ifdef _DEBUG
unsigned int m_nVERTEXCOLOR : 2; m_bVERTEXCOLOR = true;
unsigned int m_nCUBEMAP : 2; #endif
unsigned int m_nHALFLAMBERT : 2; }
unsigned int m_nFLASHLIGHT : 2; void SetVERTEXCOLOR( bool i )
unsigned int m_nSEAMLESS_BASE : 2; {
unsigned int m_nSEAMLESS_DETAIL : 2; m_nVERTEXCOLOR = i ? 1 : 0;
unsigned int m_nSEPARATE_DETAIL_UVS : 2; #ifdef _DEBUG
unsigned int m_nDECAL : 2; m_bVERTEXCOLOR = true;
unsigned int m_nDONT_GAMMA_CONVERT_VERTEX_COLOR : 2; #endif
#ifdef _DEBUG }
bool m_bVERTEXCOLOR : 1; private:
bool m_bCUBEMAP : 1; int m_nCUBEMAP;
bool m_bHALFLAMBERT : 1; #ifdef _DEBUG
bool m_bFLASHLIGHT : 1; bool m_bCUBEMAP;
bool m_bSEAMLESS_BASE : 1; #endif
bool m_bSEAMLESS_DETAIL : 1; public:
bool m_bSEPARATE_DETAIL_UVS : 1; void SetCUBEMAP( int i )
bool m_bDECAL : 1; {
bool m_bDONT_GAMMA_CONVERT_VERTEX_COLOR : 1; Assert( i >= 0 && i <= 1 );
#endif // _DEBUG m_nCUBEMAP = i;
public: #ifdef _DEBUG
void SetVERTEXCOLOR( int i ) m_bCUBEMAP = true;
{ #endif
Assert( i >= 0 && i <= 1 ); }
m_nVERTEXCOLOR = i; void SetCUBEMAP( bool i )
#ifdef _DEBUG {
m_bVERTEXCOLOR = true; m_nCUBEMAP = i ? 1 : 0;
#endif // _DEBUG #ifdef _DEBUG
} m_bCUBEMAP = true;
#endif
void SetCUBEMAP( int i ) }
{ private:
Assert( i >= 0 && i <= 1 ); int m_nHALFLAMBERT;
m_nCUBEMAP = i; #ifdef _DEBUG
#ifdef _DEBUG bool m_bHALFLAMBERT;
m_bCUBEMAP = true; #endif
#endif // _DEBUG public:
} void SetHALFLAMBERT( int i )
{
void SetHALFLAMBERT( int i ) Assert( i >= 0 && i <= 1 );
{ m_nHALFLAMBERT = i;
Assert( i >= 0 && i <= 1 ); #ifdef _DEBUG
m_nHALFLAMBERT = i; m_bHALFLAMBERT = true;
#ifdef _DEBUG #endif
m_bHALFLAMBERT = true; }
#endif // _DEBUG void SetHALFLAMBERT( bool i )
} {
m_nHALFLAMBERT = i ? 1 : 0;
void SetFLASHLIGHT( int i ) #ifdef _DEBUG
{ m_bHALFLAMBERT = true;
Assert( i >= 0 && i <= 1 ); #endif
m_nFLASHLIGHT = i; }
#ifdef _DEBUG private:
m_bFLASHLIGHT = true; int m_nFLASHLIGHT;
#endif // _DEBUG #ifdef _DEBUG
} bool m_bFLASHLIGHT;
#endif
void SetSEAMLESS_BASE( int i ) public:
{ void SetFLASHLIGHT( int i )
Assert( i >= 0 && i <= 1 ); {
m_nSEAMLESS_BASE = i; Assert( i >= 0 && i <= 1 );
#ifdef _DEBUG m_nFLASHLIGHT = i;
m_bSEAMLESS_BASE = true; #ifdef _DEBUG
#endif // _DEBUG m_bFLASHLIGHT = true;
} #endif
}
void SetSEAMLESS_DETAIL( int i ) void SetFLASHLIGHT( bool i )
{ {
Assert( i >= 0 && i <= 1 ); m_nFLASHLIGHT = i ? 1 : 0;
m_nSEAMLESS_DETAIL = i; #ifdef _DEBUG
#ifdef _DEBUG m_bFLASHLIGHT = true;
m_bSEAMLESS_DETAIL = true; #endif
#endif // _DEBUG }
} private:
int m_nSEAMLESS_BASE;
void SetSEPARATE_DETAIL_UVS( int i ) #ifdef _DEBUG
{ bool m_bSEAMLESS_BASE;
Assert( i >= 0 && i <= 1 ); #endif
m_nSEPARATE_DETAIL_UVS = i; public:
#ifdef _DEBUG void SetSEAMLESS_BASE( int i )
m_bSEPARATE_DETAIL_UVS = true; {
#endif // _DEBUG Assert( i >= 0 && i <= 1 );
} m_nSEAMLESS_BASE = i;
#ifdef _DEBUG
void SetDECAL( int i ) m_bSEAMLESS_BASE = true;
{ #endif
Assert( i >= 0 && i <= 1 ); }
m_nDECAL = i; void SetSEAMLESS_BASE( bool i )
#ifdef _DEBUG {
m_bDECAL = true; m_nSEAMLESS_BASE = i ? 1 : 0;
#endif // _DEBUG #ifdef _DEBUG
} m_bSEAMLESS_BASE = true;
#endif
void SetDONT_GAMMA_CONVERT_VERTEX_COLOR( int i ) }
{ private:
Assert( i >= 0 && i <= 1 ); int m_nSEAMLESS_DETAIL;
m_nDONT_GAMMA_CONVERT_VERTEX_COLOR = i; #ifdef _DEBUG
#ifdef _DEBUG bool m_bSEAMLESS_DETAIL;
m_bDONT_GAMMA_CONVERT_VERTEX_COLOR = true; #endif
#endif // _DEBUG public:
} void SetSEAMLESS_DETAIL( int i )
{
vertexlit_and_unlit_generic_vs30_Static_Index() Assert( i >= 0 && i <= 1 );
{ m_nSEAMLESS_DETAIL = i;
m_nVERTEXCOLOR = 0; #ifdef _DEBUG
m_nCUBEMAP = 0; m_bSEAMLESS_DETAIL = true;
m_nHALFLAMBERT = 0; #endif
m_nFLASHLIGHT = 0; }
m_nSEAMLESS_BASE = 0; void SetSEAMLESS_DETAIL( bool i )
m_nSEAMLESS_DETAIL = 0; {
m_nSEPARATE_DETAIL_UVS = 0; m_nSEAMLESS_DETAIL = i ? 1 : 0;
m_nDECAL = 0; #ifdef _DEBUG
m_nDONT_GAMMA_CONVERT_VERTEX_COLOR = 0; m_bSEAMLESS_DETAIL = true;
#ifdef _DEBUG #endif
m_bVERTEXCOLOR = false; }
m_bCUBEMAP = false; private:
m_bHALFLAMBERT = false; int m_nSEPARATE_DETAIL_UVS;
m_bFLASHLIGHT = false; #ifdef _DEBUG
m_bSEAMLESS_BASE = false; bool m_bSEPARATE_DETAIL_UVS;
m_bSEAMLESS_DETAIL = false; #endif
m_bSEPARATE_DETAIL_UVS = false; public:
m_bDECAL = false; void SetSEPARATE_DETAIL_UVS( int i )
m_bDONT_GAMMA_CONVERT_VERTEX_COLOR = false; {
#endif // _DEBUG Assert( i >= 0 && i <= 1 );
} m_nSEPARATE_DETAIL_UVS = i;
#ifdef _DEBUG
int GetIndex() const m_bSEPARATE_DETAIL_UVS = true;
{ #endif
Assert( m_bVERTEXCOLOR && m_bCUBEMAP && m_bHALFLAMBERT && m_bFLASHLIGHT && m_bSEAMLESS_BASE && m_bSEAMLESS_DETAIL && m_bSEPARATE_DETAIL_UVS && m_bDECAL && m_bDONT_GAMMA_CONVERT_VERTEX_COLOR ); }
return ( 128 * m_nVERTEXCOLOR ) + ( 256 * m_nCUBEMAP ) + ( 512 * m_nHALFLAMBERT ) + ( 1024 * m_nFLASHLIGHT ) + ( 2048 * m_nSEAMLESS_BASE ) + ( 4096 * m_nSEAMLESS_DETAIL ) + ( 8192 * m_nSEPARATE_DETAIL_UVS ) + ( 16384 * m_nDECAL ) + ( 32768 * m_nDONT_GAMMA_CONVERT_VERTEX_COLOR ) + 0; void SetSEPARATE_DETAIL_UVS( bool i )
} {
}; m_nSEPARATE_DETAIL_UVS = i ? 1 : 0;
#ifdef _DEBUG
#define shaderStaticTest_vertexlit_and_unlit_generic_vs30 vsh_forgot_to_set_static_VERTEXCOLOR + vsh_forgot_to_set_static_CUBEMAP + vsh_forgot_to_set_static_HALFLAMBERT + vsh_forgot_to_set_static_FLASHLIGHT + vsh_forgot_to_set_static_SEAMLESS_BASE + vsh_forgot_to_set_static_SEAMLESS_DETAIL + vsh_forgot_to_set_static_SEPARATE_DETAIL_UVS + vsh_forgot_to_set_static_DECAL + vsh_forgot_to_set_static_DONT_GAMMA_CONVERT_VERTEX_COLOR m_bSEPARATE_DETAIL_UVS = true;
#endif
}
class vertexlit_and_unlit_generic_vs30_Dynamic_Index private:
{ int m_nDECAL;
unsigned int m_nCOMPRESSED_VERTS : 2; #ifdef _DEBUG
unsigned int m_nDYNAMIC_LIGHT : 2; bool m_bDECAL;
unsigned int m_nSTATIC_LIGHT : 2; #endif
unsigned int m_nDOWATERFOG : 2; public:
unsigned int m_nSKINNING : 2; void SetDECAL( int i )
unsigned int m_nLIGHTING_PREVIEW : 2; {
unsigned int m_nMORPHING : 2; Assert( i >= 0 && i <= 1 );
#ifdef _DEBUG m_nDECAL = i;
bool m_bCOMPRESSED_VERTS : 1; #ifdef _DEBUG
bool m_bDYNAMIC_LIGHT : 1; m_bDECAL = true;
bool m_bSTATIC_LIGHT : 1; #endif
bool m_bDOWATERFOG : 1; }
bool m_bSKINNING : 1; void SetDECAL( bool i )
bool m_bLIGHTING_PREVIEW : 1; {
bool m_bMORPHING : 1; m_nDECAL = i ? 1 : 0;
#endif // _DEBUG #ifdef _DEBUG
public: m_bDECAL = true;
void SetCOMPRESSED_VERTS( int i ) #endif
{ }
Assert( i >= 0 && i <= 1 ); private:
m_nCOMPRESSED_VERTS = i; int m_nDONT_GAMMA_CONVERT_VERTEX_COLOR;
#ifdef _DEBUG #ifdef _DEBUG
m_bCOMPRESSED_VERTS = true; bool m_bDONT_GAMMA_CONVERT_VERTEX_COLOR;
#endif // _DEBUG #endif
} public:
void SetDONT_GAMMA_CONVERT_VERTEX_COLOR( int i )
void SetDYNAMIC_LIGHT( int i ) {
{ Assert( i >= 0 && i <= 1 );
Assert( i >= 0 && i <= 1 ); m_nDONT_GAMMA_CONVERT_VERTEX_COLOR = i;
m_nDYNAMIC_LIGHT = i; #ifdef _DEBUG
#ifdef _DEBUG m_bDONT_GAMMA_CONVERT_VERTEX_COLOR = true;
m_bDYNAMIC_LIGHT = true; #endif
#endif // _DEBUG }
} void SetDONT_GAMMA_CONVERT_VERTEX_COLOR( bool i )
{
void SetSTATIC_LIGHT( int i ) m_nDONT_GAMMA_CONVERT_VERTEX_COLOR = i ? 1 : 0;
{ #ifdef _DEBUG
Assert( i >= 0 && i <= 1 ); m_bDONT_GAMMA_CONVERT_VERTEX_COLOR = true;
m_nSTATIC_LIGHT = i; #endif
#ifdef _DEBUG }
m_bSTATIC_LIGHT = true; public:
#endif // _DEBUG vertexlit_and_unlit_generic_vs30_Static_Index( )
} {
#ifdef _DEBUG
void SetDOWATERFOG( int i ) m_bVERTEXCOLOR = false;
{ #endif // _DEBUG
Assert( i >= 0 && i <= 1 ); m_nVERTEXCOLOR = 0;
m_nDOWATERFOG = i; #ifdef _DEBUG
#ifdef _DEBUG m_bCUBEMAP = false;
m_bDOWATERFOG = true; #endif // _DEBUG
#endif // _DEBUG m_nCUBEMAP = 0;
} #ifdef _DEBUG
m_bHALFLAMBERT = false;
void SetSKINNING( int i ) #endif // _DEBUG
{ m_nHALFLAMBERT = 0;
Assert( i >= 0 && i <= 1 ); #ifdef _DEBUG
m_nSKINNING = i; m_bFLASHLIGHT = false;
#ifdef _DEBUG #endif // _DEBUG
m_bSKINNING = true; m_nFLASHLIGHT = 0;
#endif // _DEBUG #ifdef _DEBUG
} m_bSEAMLESS_BASE = false;
#endif // _DEBUG
void SetLIGHTING_PREVIEW( int i ) m_nSEAMLESS_BASE = 0;
{ #ifdef _DEBUG
Assert( i >= 0 && i <= 1 ); m_bSEAMLESS_DETAIL = false;
m_nLIGHTING_PREVIEW = i; #endif // _DEBUG
#ifdef _DEBUG m_nSEAMLESS_DETAIL = 0;
m_bLIGHTING_PREVIEW = true; #ifdef _DEBUG
#endif // _DEBUG m_bSEPARATE_DETAIL_UVS = false;
} #endif // _DEBUG
m_nSEPARATE_DETAIL_UVS = 0;
void SetMORPHING( int i ) #ifdef _DEBUG
{ m_bDECAL = false;
Assert( i >= 0 && i <= 1 ); #endif // _DEBUG
m_nMORPHING = i; m_nDECAL = 0;
#ifdef _DEBUG #ifdef _DEBUG
m_bMORPHING = true; m_bDONT_GAMMA_CONVERT_VERTEX_COLOR = false;
#endif // _DEBUG #endif // _DEBUG
} m_nDONT_GAMMA_CONVERT_VERTEX_COLOR = 0;
}
vertexlit_and_unlit_generic_vs30_Dynamic_Index() int GetIndex()
{ {
m_nCOMPRESSED_VERTS = 0; // Asserts to make sure that we aren't using any skipped combinations.
m_nDYNAMIC_LIGHT = 0; // Asserts to make sure that we are setting all of the combination vars.
m_nSTATIC_LIGHT = 0; #ifdef _DEBUG
m_nDOWATERFOG = 0; bool bAllStaticVarsDefined = m_bVERTEXCOLOR && m_bCUBEMAP && m_bHALFLAMBERT && m_bFLASHLIGHT && m_bSEAMLESS_BASE && m_bSEAMLESS_DETAIL && m_bSEPARATE_DETAIL_UVS && m_bDECAL && m_bDONT_GAMMA_CONVERT_VERTEX_COLOR;
m_nSKINNING = 0; Assert( bAllStaticVarsDefined );
m_nLIGHTING_PREVIEW = 0; #endif // _DEBUG
m_nMORPHING = 0; return ( 256 * m_nVERTEXCOLOR ) + ( 512 * m_nCUBEMAP ) + ( 1024 * m_nHALFLAMBERT ) + ( 2048 * m_nFLASHLIGHT ) + ( 4096 * m_nSEAMLESS_BASE ) + ( 8192 * m_nSEAMLESS_DETAIL ) + ( 16384 * m_nSEPARATE_DETAIL_UVS ) + ( 32768 * m_nDECAL ) + ( 65536 * m_nDONT_GAMMA_CONVERT_VERTEX_COLOR ) + 0;
#ifdef _DEBUG }
m_bCOMPRESSED_VERTS = false; };
m_bDYNAMIC_LIGHT = false; #define shaderStaticTest_vertexlit_and_unlit_generic_vs30 vsh_forgot_to_set_static_VERTEXCOLOR + vsh_forgot_to_set_static_CUBEMAP + vsh_forgot_to_set_static_HALFLAMBERT + vsh_forgot_to_set_static_FLASHLIGHT + vsh_forgot_to_set_static_SEAMLESS_BASE + vsh_forgot_to_set_static_SEAMLESS_DETAIL + vsh_forgot_to_set_static_SEPARATE_DETAIL_UVS + vsh_forgot_to_set_static_DECAL + vsh_forgot_to_set_static_DONT_GAMMA_CONVERT_VERTEX_COLOR + 0
m_bSTATIC_LIGHT = false; class vertexlit_and_unlit_generic_vs30_Dynamic_Index
m_bDOWATERFOG = false; {
m_bSKINNING = false; private:
m_bLIGHTING_PREVIEW = false; int m_nCOMPRESSED_VERTS;
m_bMORPHING = false; #ifdef _DEBUG
#endif // _DEBUG bool m_bCOMPRESSED_VERTS;
} #endif
public:
int GetIndex() const void SetCOMPRESSED_VERTS( int i )
{ {
Assert( m_bCOMPRESSED_VERTS && m_bDYNAMIC_LIGHT && m_bSTATIC_LIGHT && m_bDOWATERFOG && m_bSKINNING && m_bLIGHTING_PREVIEW && m_bMORPHING ); Assert( i >= 0 && i <= 1 );
return ( 1 * m_nCOMPRESSED_VERTS ) + ( 2 * m_nDYNAMIC_LIGHT ) + ( 4 * m_nSTATIC_LIGHT ) + ( 8 * m_nDOWATERFOG ) + ( 16 * m_nSKINNING ) + ( 32 * m_nLIGHTING_PREVIEW ) + ( 64 * m_nMORPHING ) + 0; m_nCOMPRESSED_VERTS = i;
} #ifdef _DEBUG
}; m_bCOMPRESSED_VERTS = true;
#endif
#define shaderDynamicTest_vertexlit_and_unlit_generic_vs30 vsh_forgot_to_set_dynamic_COMPRESSED_VERTS + vsh_forgot_to_set_dynamic_DYNAMIC_LIGHT + vsh_forgot_to_set_dynamic_STATIC_LIGHT + vsh_forgot_to_set_dynamic_DOWATERFOG + vsh_forgot_to_set_dynamic_SKINNING + vsh_forgot_to_set_dynamic_LIGHTING_PREVIEW + vsh_forgot_to_set_dynamic_MORPHING }
void SetCOMPRESSED_VERTS( bool i )
{
#endif // VERTEXLIT_AND_UNLIT_GENERIC_VS30_H m_nCOMPRESSED_VERTS = i ? 1 : 0;
#ifdef _DEBUG
m_bCOMPRESSED_VERTS = true;
#endif
}
private:
int m_nDYNAMIC_LIGHT;
#ifdef _DEBUG
bool m_bDYNAMIC_LIGHT;
#endif
public:
void SetDYNAMIC_LIGHT( int i )
{
Assert( i >= 0 && i <= 1 );
m_nDYNAMIC_LIGHT = i;
#ifdef _DEBUG
m_bDYNAMIC_LIGHT = true;
#endif
}
void SetDYNAMIC_LIGHT( bool i )
{
m_nDYNAMIC_LIGHT = i ? 1 : 0;
#ifdef _DEBUG
m_bDYNAMIC_LIGHT = true;
#endif
}
private:
int m_nSTATIC_LIGHT_VERTEX;
#ifdef _DEBUG
bool m_bSTATIC_LIGHT_VERTEX;
#endif
public:
void SetSTATIC_LIGHT_VERTEX( int i )
{
Assert( i >= 0 && i <= 1 );
m_nSTATIC_LIGHT_VERTEX = i;
#ifdef _DEBUG
m_bSTATIC_LIGHT_VERTEX = true;
#endif
}
void SetSTATIC_LIGHT_VERTEX( bool i )
{
m_nSTATIC_LIGHT_VERTEX = i ? 1 : 0;
#ifdef _DEBUG
m_bSTATIC_LIGHT_VERTEX = true;
#endif
}
private:
int m_nSTATIC_LIGHT_LIGHTMAP;
#ifdef _DEBUG
bool m_bSTATIC_LIGHT_LIGHTMAP;
#endif
public:
void SetSTATIC_LIGHT_LIGHTMAP( int i )
{
Assert( i >= 0 && i <= 1 );
m_nSTATIC_LIGHT_LIGHTMAP = i;
#ifdef _DEBUG
m_bSTATIC_LIGHT_LIGHTMAP = true;
#endif
}
void SetSTATIC_LIGHT_LIGHTMAP( bool i )
{
m_nSTATIC_LIGHT_LIGHTMAP = i ? 1 : 0;
#ifdef _DEBUG
m_bSTATIC_LIGHT_LIGHTMAP = true;
#endif
}
private:
int m_nDOWATERFOG;
#ifdef _DEBUG
bool m_bDOWATERFOG;
#endif
public:
void SetDOWATERFOG( int i )
{
Assert( i >= 0 && i <= 1 );
m_nDOWATERFOG = i;
#ifdef _DEBUG
m_bDOWATERFOG = true;
#endif
}
void SetDOWATERFOG( bool i )
{
m_nDOWATERFOG = i ? 1 : 0;
#ifdef _DEBUG
m_bDOWATERFOG = true;
#endif
}
private:
int m_nSKINNING;
#ifdef _DEBUG
bool m_bSKINNING;
#endif
public:
void SetSKINNING( int i )
{
Assert( i >= 0 && i <= 1 );
m_nSKINNING = i;
#ifdef _DEBUG
m_bSKINNING = true;
#endif
}
void SetSKINNING( bool i )
{
m_nSKINNING = i ? 1 : 0;
#ifdef _DEBUG
m_bSKINNING = true;
#endif
}
private:
int m_nLIGHTING_PREVIEW;
#ifdef _DEBUG
bool m_bLIGHTING_PREVIEW;
#endif
public:
void SetLIGHTING_PREVIEW( int i )
{
Assert( i >= 0 && i <= 1 );
m_nLIGHTING_PREVIEW = i;
#ifdef _DEBUG
m_bLIGHTING_PREVIEW = true;
#endif
}
void SetLIGHTING_PREVIEW( bool i )
{
m_nLIGHTING_PREVIEW = i ? 1 : 0;
#ifdef _DEBUG
m_bLIGHTING_PREVIEW = true;
#endif
}
private:
int m_nMORPHING;
#ifdef _DEBUG
bool m_bMORPHING;
#endif
public:
void SetMORPHING( int i )
{
Assert( i >= 0 && i <= 1 );
m_nMORPHING = i;
#ifdef _DEBUG
m_bMORPHING = true;
#endif
}
void SetMORPHING( bool i )
{
m_nMORPHING = i ? 1 : 0;
#ifdef _DEBUG
m_bMORPHING = true;
#endif
}
public:
vertexlit_and_unlit_generic_vs30_Dynamic_Index()
{
#ifdef _DEBUG
m_bCOMPRESSED_VERTS = false;
#endif // _DEBUG
m_nCOMPRESSED_VERTS = 0;
#ifdef _DEBUG
m_bDYNAMIC_LIGHT = false;
#endif // _DEBUG
m_nDYNAMIC_LIGHT = 0;
#ifdef _DEBUG
m_bSTATIC_LIGHT_VERTEX = false;
#endif // _DEBUG
m_nSTATIC_LIGHT_VERTEX = 0;
#ifdef _DEBUG
m_bSTATIC_LIGHT_LIGHTMAP = false;
#endif // _DEBUG
m_nSTATIC_LIGHT_LIGHTMAP = 0;
#ifdef _DEBUG
m_bDOWATERFOG = false;
#endif // _DEBUG
m_nDOWATERFOG = 0;
#ifdef _DEBUG
m_bSKINNING = false;
#endif // _DEBUG
m_nSKINNING = 0;
#ifdef _DEBUG
m_bLIGHTING_PREVIEW = false;
#endif // _DEBUG
m_nLIGHTING_PREVIEW = 0;
#ifdef _DEBUG
m_bMORPHING = false;
#endif // _DEBUG
m_nMORPHING = 0;
}
int GetIndex()
{
// Asserts to make sure that we aren't using any skipped combinations.
// Asserts to make sure that we are setting all of the combination vars.
#ifdef _DEBUG
bool bAllDynamicVarsDefined = m_bCOMPRESSED_VERTS && m_bDYNAMIC_LIGHT && m_bSTATIC_LIGHT_VERTEX && m_bSTATIC_LIGHT_LIGHTMAP && m_bDOWATERFOG && m_bSKINNING && m_bLIGHTING_PREVIEW && m_bMORPHING;
Assert( bAllDynamicVarsDefined );
#endif // _DEBUG
return ( 1 * m_nCOMPRESSED_VERTS ) + ( 2 * m_nDYNAMIC_LIGHT ) + ( 4 * m_nSTATIC_LIGHT_VERTEX ) + ( 8 * m_nSTATIC_LIGHT_LIGHTMAP ) + ( 16 * m_nDOWATERFOG ) + ( 32 * m_nSKINNING ) + ( 64 * m_nLIGHTING_PREVIEW ) + ( 128 * m_nMORPHING ) + 0;
}
};
#define shaderDynamicTest_vertexlit_and_unlit_generic_vs30 vsh_forgot_to_set_dynamic_COMPRESSED_VERTS + vsh_forgot_to_set_dynamic_DYNAMIC_LIGHT + vsh_forgot_to_set_dynamic_STATIC_LIGHT_VERTEX + vsh_forgot_to_set_dynamic_STATIC_LIGHT_LIGHTMAP + vsh_forgot_to_set_dynamic_DOWATERFOG + vsh_forgot_to_set_dynamic_SKINNING + vsh_forgot_to_set_dynamic_LIGHTING_PREVIEW + vsh_forgot_to_set_dynamic_MORPHING + 0

View file

@ -350,36 +350,6 @@ void DrawLightmappedGeneric_DX9_Internal(CBaseVSShader *pShader, IMaterialVar**
pContextData->m_bFullyOpaque = bFullyOpaque; pContextData->m_bFullyOpaque = bFullyOpaque;
pContextData->m_bFullyOpaqueWithoutAlphaTest = bFullyOpaqueWithoutAlphaTest; pContextData->m_bFullyOpaqueWithoutAlphaTest = bFullyOpaqueWithoutAlphaTest;
NormalDecodeMode_t nNormalDecodeMode = NORMAL_DECODE_NONE;
if ( hasBump && g_pHardwareConfig->SupportsNormalMapCompression() && g_pHardwareConfig->SupportsPixelShaders_2_b() )
{
ITexture *pBumpTex = params[info.m_nBumpmap]->GetTextureValue();
if ( pBumpTex )
{
nNormalDecodeMode = pBumpTex->GetNormalDecodeMode();
if ( hasBump2 ) // Check encoding of secondary normal if there is oneg
{
ITexture *pBumpTex2 = params[info.m_nBumpmap]->GetTextureValue();
if ( pBumpTex2 && ( pBumpTex2->GetNormalDecodeMode() != nNormalDecodeMode ) )
{
DevMsg("LightmappedGeneric: Primary and Secondary normal map compression formats don't match. This is unsupported!\n");
Assert(0);
}
}
}
}
int nNormalMaskDecodeMode = 0;
if ( hasBumpMask && g_pHardwareConfig->SupportsNormalMapCompression() && g_pHardwareConfig->SupportsPixelShaders_2_b() )
{
ITexture *pBumpMaskTex = params[info.m_nBumpMask]->GetTextureValue();
if ( pBumpMaskTex )
{
nNormalMaskDecodeMode = pBumpMaskTex->GetNormalDecodeMode();
}
}
bool bHasOutline = IsBoolSet( info.m_nOutline, params ); bool bHasOutline = IsBoolSet( info.m_nOutline, params );
pContextData->m_bPixelShaderForceFastPathBecauseOutline = bHasOutline; pContextData->m_bPixelShaderForceFastPathBecauseOutline = bHasOutline;
bool bHasSoftEdges = IsBoolSet( info.m_nSoftEdges, params ); bool bHasSoftEdges = IsBoolSet( info.m_nSoftEdges, params );
@ -513,26 +483,14 @@ void DrawLightmappedGeneric_DX9_Internal(CBaseVSShader *pShader, IMaterialVar**
if( hasBump || hasNormalMapAlphaEnvmapMask ) if( hasBump || hasNormalMapAlphaEnvmapMask )
{ {
pShaderShadow->EnableTexture( SHADER_SAMPLER4, true ); pShaderShadow->EnableTexture( SHADER_SAMPLER4, true );
if ( nNormalDecodeMode == NORMAL_DECODE_ATI2N_ALPHA )
{
pShaderShadow->EnableTexture( SHADER_SAMPLER9, true ); // Normal map alpha, in the compressed normal case
}
} }
if( hasBump2 ) if( hasBump2 )
{ {
pShaderShadow->EnableTexture( SHADER_SAMPLER5, true ); pShaderShadow->EnableTexture( SHADER_SAMPLER5, true );
if ( nNormalDecodeMode == NORMAL_DECODE_ATI2N_ALPHA )
{
pShaderShadow->EnableTexture( SHADER_SAMPLER10, true ); // Secondary normal alpha, in the compressed normal case
}
} }
if( hasBumpMask ) if( hasBumpMask )
{ {
pShaderShadow->EnableTexture( SHADER_SAMPLER8, true ); pShaderShadow->EnableTexture( SHADER_SAMPLER8, true );
if ( nNormalMaskDecodeMode == NORMAL_DECODE_ATI2N_ALPHA )
{
pShaderShadow->EnableTexture( SHADER_SAMPLER11, true ); // Normal mask alpha, in the compressed normal case
}
} }
if( hasEnvmapMask ) if( hasEnvmapMask )
{ {
@ -611,8 +569,8 @@ void DrawLightmappedGeneric_DX9_Internal(CBaseVSShader *pShader, IMaterialVar**
SET_STATIC_PIXEL_SHADER_COMBO( OUTLINE, bHasOutline ); SET_STATIC_PIXEL_SHADER_COMBO( OUTLINE, bHasOutline );
SET_STATIC_PIXEL_SHADER_COMBO( SOFTEDGES, bHasSoftEdges ); SET_STATIC_PIXEL_SHADER_COMBO( SOFTEDGES, bHasSoftEdges );
SET_STATIC_PIXEL_SHADER_COMBO( DETAIL_BLEND_MODE, nDetailBlendMode ); SET_STATIC_PIXEL_SHADER_COMBO( DETAIL_BLEND_MODE, nDetailBlendMode );
SET_STATIC_PIXEL_SHADER_COMBO( NORMAL_DECODE_MODE, (int) nNormalDecodeMode ); SET_STATIC_PIXEL_SHADER_COMBO( NORMAL_DECODE_MODE, (int) NORMAL_DECODE_NONE );
SET_STATIC_PIXEL_SHADER_COMBO( NORMALMASK_DECODE_MODE, (int) nNormalMaskDecodeMode ); SET_STATIC_PIXEL_SHADER_COMBO( NORMALMASK_DECODE_MODE, (int) NORMAL_DECODE_NONE );
#ifdef _X360 #ifdef _X360
SET_STATIC_PIXEL_SHADER_COMBO( FLASHLIGHT, hasFlashlight); SET_STATIC_PIXEL_SHADER_COMBO( FLASHLIGHT, hasFlashlight);
#endif #endif
@ -854,14 +812,7 @@ void DrawLightmappedGeneric_DX9_Internal(CBaseVSShader *pShader, IMaterialVar**
{ {
if( !g_pConfig->m_bFastNoBump ) if( !g_pConfig->m_bFastNoBump )
{ {
if ( nNormalDecodeMode == NORMAL_DECODE_ATI2N_ALPHA ) pContextData->m_SemiStaticCmdsOut.BindTexture( pShader, SHADER_SAMPLER4, info.m_nBumpmap, info.m_nBumpFrame );
{
pContextData->m_SemiStaticCmdsOut.BindMultiTexture( pShader, SHADER_SAMPLER4, SHADER_SAMPLER9, info.m_nBumpmap, info.m_nBumpFrame );
}
else
{
pContextData->m_SemiStaticCmdsOut.BindTexture( pShader, SHADER_SAMPLER4, info.m_nBumpmap, info.m_nBumpFrame );
}
} }
else else
{ {
@ -872,14 +823,7 @@ void DrawLightmappedGeneric_DX9_Internal(CBaseVSShader *pShader, IMaterialVar**
{ {
if( !g_pConfig->m_bFastNoBump ) if( !g_pConfig->m_bFastNoBump )
{ {
if ( nNormalDecodeMode == NORMAL_DECODE_ATI2N_ALPHA ) pContextData->m_SemiStaticCmdsOut.BindTexture( pShader, SHADER_SAMPLER5, info.m_nBumpmap2, info.m_nBumpFrame2 );
{
pContextData->m_SemiStaticCmdsOut.BindMultiTexture( pShader, SHADER_SAMPLER5, SHADER_SAMPLER10, info.m_nBumpmap2, info.m_nBumpFrame2 );
}
else
{
pContextData->m_SemiStaticCmdsOut.BindTexture( pShader, SHADER_SAMPLER5, info.m_nBumpmap2, info.m_nBumpFrame2 );
}
} }
else else
{ {
@ -890,15 +834,7 @@ void DrawLightmappedGeneric_DX9_Internal(CBaseVSShader *pShader, IMaterialVar**
{ {
if( !g_pConfig->m_bFastNoBump ) if( !g_pConfig->m_bFastNoBump )
{ {
if ( nNormalMaskDecodeMode == NORMAL_DECODE_ATI2N_ALPHA ) pContextData->m_SemiStaticCmdsOut.BindTexture( pShader, SHADER_SAMPLER8, info.m_nBumpMask, -1 );
{
Assert(0);
//pContextData->m_SemiStaticCmdsOut.BindTexture( SHADER_SAMPLER8, SHADER_SAMPLER11, info.m_nBumpMask );
}
else
{
pContextData->m_SemiStaticCmdsOut.BindTexture( pShader, SHADER_SAMPLER8, info.m_nBumpMask, -1 );
}
} }
else else
{ {

View file

@ -112,26 +112,6 @@ void DrawRefract_DX9( CBaseVSShader *pShader, IMaterialVar** params, IShaderDyna
bool bTranslucentNormal = pShader->TextureIsTranslucent( info.m_nNormalMap, false ); bool bTranslucentNormal = pShader->TextureIsTranslucent( info.m_nNormalMap, false );
bFullyOpaque &= (! bTranslucentNormal ); bFullyOpaque &= (! bTranslucentNormal );
NormalDecodeMode_t nNormalDecodeMode = NORMAL_DECODE_NONE;
if ( g_pHardwareConfig->SupportsNormalMapCompression() )
{
ITexture *pBumpTex = params[info.m_nNormalMap]->GetTextureValue();
if ( pBumpTex )
{
nNormalDecodeMode = pBumpTex->GetNormalDecodeMode();
if ( bSecondaryNormal ) // Check encoding of secondary normal if there is one
{
ITexture *pBumpTex2 = params[info.m_nNormalMap2]->GetTextureValue();
if ( pBumpTex2 && ( pBumpTex2->GetNormalDecodeMode() != nNormalDecodeMode ) )
{
DevMsg("Refract: Primary and Secondary normal map compression formats don't match. This is unsupported!\n");
Assert(0);
}
}
}
}
SHADOW_STATE SHADOW_STATE
{ {
pShader->SetInitialShadowState( ); pShader->SetInitialShadowState( );
@ -154,19 +134,9 @@ void DrawRefract_DX9( CBaseVSShader *pShader, IMaterialVar** params, IShaderDyna
// normal map // normal map
pShaderShadow->EnableTexture( SHADER_SAMPLER3, true ); pShaderShadow->EnableTexture( SHADER_SAMPLER3, true );
if ( nNormalDecodeMode == NORMAL_DECODE_ATI2N_ALPHA )
{
pShaderShadow->EnableTexture( SHADER_SAMPLER6, true ); // Normal map alpha, in the compressed normal case
}
if ( bSecondaryNormal ) if ( bSecondaryNormal )
{ {
pShaderShadow->EnableTexture( SHADER_SAMPLER1, true ); pShaderShadow->EnableTexture( SHADER_SAMPLER1, true );
if ( nNormalDecodeMode == NORMAL_DECODE_ATI2N_ALPHA )
{
pShaderShadow->EnableTexture( SHADER_SAMPLER7, true ); // Secondary normal map alpha, in the compressed normal case
}
} }
if( bHasEnvmap ) if( bHasEnvmap )
@ -223,7 +193,7 @@ void DrawRefract_DX9( CBaseVSShader *pShader, IMaterialVar** params, IShaderDyna
SET_STATIC_PIXEL_SHADER_COMBO( MASKED, bMasked ); SET_STATIC_PIXEL_SHADER_COMBO( MASKED, bMasked );
SET_STATIC_PIXEL_SHADER_COMBO( COLORMODULATE, bColorModulate ); SET_STATIC_PIXEL_SHADER_COMBO( COLORMODULATE, bColorModulate );
SET_STATIC_PIXEL_SHADER_COMBO( SECONDARY_NORMAL, bSecondaryNormal ); SET_STATIC_PIXEL_SHADER_COMBO( SECONDARY_NORMAL, bSecondaryNormal );
SET_STATIC_PIXEL_SHADER_COMBO( NORMAL_DECODE_MODE, (int) nNormalDecodeMode ); SET_STATIC_PIXEL_SHADER_COMBO( NORMAL_DECODE_MODE, (int) NORMAL_DECODE_NONE );
SET_STATIC_PIXEL_SHADER_COMBO( SHADER_SRGB_READ, bShaderSRGBConvert ); SET_STATIC_PIXEL_SHADER_COMBO( SHADER_SRGB_READ, bShaderSRGBConvert );
SET_STATIC_PIXEL_SHADER( refract_ps20b ); SET_STATIC_PIXEL_SHADER( refract_ps20b );
} }
@ -237,7 +207,7 @@ void DrawRefract_DX9( CBaseVSShader *pShader, IMaterialVar** params, IShaderDyna
SET_STATIC_PIXEL_SHADER_COMBO( MASKED, bMasked ); SET_STATIC_PIXEL_SHADER_COMBO( MASKED, bMasked );
SET_STATIC_PIXEL_SHADER_COMBO( COLORMODULATE, bColorModulate ); SET_STATIC_PIXEL_SHADER_COMBO( COLORMODULATE, bColorModulate );
SET_STATIC_PIXEL_SHADER_COMBO( SECONDARY_NORMAL, bSecondaryNormal ); SET_STATIC_PIXEL_SHADER_COMBO( SECONDARY_NORMAL, bSecondaryNormal );
SET_STATIC_PIXEL_SHADER_COMBO( NORMAL_DECODE_MODE, (int) nNormalDecodeMode ); SET_STATIC_PIXEL_SHADER_COMBO( NORMAL_DECODE_MODE, (int) NORMAL_DECODE_NONE );
SET_STATIC_PIXEL_SHADER( refract_ps20 ); SET_STATIC_PIXEL_SHADER( refract_ps20 );
} }
pShader->DefaultFog(); pShader->DefaultFog();
@ -262,25 +232,11 @@ void DrawRefract_DX9( CBaseVSShader *pShader, IMaterialVar** params, IShaderDyna
pShaderAPI->BindStandardTexture( SHADER_SAMPLER2, TEXTURE_FRAME_BUFFER_FULL_TEXTURE_0 ); pShaderAPI->BindStandardTexture( SHADER_SAMPLER2, TEXTURE_FRAME_BUFFER_FULL_TEXTURE_0 );
} }
if ( nNormalDecodeMode == NORMAL_DECODE_ATI2N_ALPHA ) pShader->BindTexture( SHADER_SAMPLER3, info.m_nNormalMap, info.m_nBumpFrame );
{
pShader->BindTexture( SHADER_SAMPLER3, SHADER_SAMPLER6, info.m_nNormalMap, info.m_nBumpFrame );
}
else
{
pShader->BindTexture( SHADER_SAMPLER3, info.m_nNormalMap, info.m_nBumpFrame );
}
if ( bSecondaryNormal ) if ( bSecondaryNormal )
{ {
if ( nNormalDecodeMode == NORMAL_DECODE_ATI2N_ALPHA ) pShader->BindTexture( SHADER_SAMPLER1, info.m_nNormalMap2, info.m_nBumpFrame2 );
{
pShader->BindTexture( SHADER_SAMPLER1, SHADER_SAMPLER7, info.m_nNormalMap2, info.m_nBumpFrame2 );
}
else
{
pShader->BindTexture( SHADER_SAMPLER1, info.m_nNormalMap2, info.m_nBumpFrame2 );
}
} }
if( bHasEnvmap ) if( bHasEnvmap )

View file

@ -1,4 +1,4 @@
//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============// //========= Copyright Valve Corporation, All rights reserved. ============//
// //
// Purpose: // Purpose:
// //
@ -31,6 +31,8 @@ BEGIN_VS_SHADER_FLAGS( screenspace_general_dx9, "Help for screenspace_general",
SHADER_PARAM( PIXSHADER, SHADER_PARAM_TYPE_STRING, "", "Name of the pixel shader to use" ) SHADER_PARAM( PIXSHADER, SHADER_PARAM_TYPE_STRING, "", "Name of the pixel shader to use" )
SHADER_PARAM( DISABLE_COLOR_WRITES,SHADER_PARAM_TYPE_INTEGER,"0","") SHADER_PARAM( DISABLE_COLOR_WRITES,SHADER_PARAM_TYPE_INTEGER,"0","")
SHADER_PARAM( ALPHATESTED,SHADER_PARAM_TYPE_FLOAT,"0","") SHADER_PARAM( ALPHATESTED,SHADER_PARAM_TYPE_FLOAT,"0","")
SHADER_PARAM( ALPHA_BLEND_COLOR_OVERLAY, SHADER_PARAM_TYPE_INTEGER, "0", "")
SHADER_PARAM( ALPHA_BLEND, SHADER_PARAM_TYPE_INTEGER, "0", "")
SHADER_PARAM( TEXTURE1, SHADER_PARAM_TYPE_TEXTURE, "", "" ) SHADER_PARAM( TEXTURE1, SHADER_PARAM_TYPE_TEXTURE, "", "" )
SHADER_PARAM( TEXTURE2, SHADER_PARAM_TYPE_TEXTURE, "", "" ) SHADER_PARAM( TEXTURE2, SHADER_PARAM_TYPE_TEXTURE, "", "" )
SHADER_PARAM( TEXTURE3, SHADER_PARAM_TYPE_TEXTURE, "", "" ) SHADER_PARAM( TEXTURE3, SHADER_PARAM_TYPE_TEXTURE, "", "" )
@ -40,25 +42,66 @@ BEGIN_VS_SHADER_FLAGS( screenspace_general_dx9, "Help for screenspace_general",
SHADER_PARAM( LINEARREAD_TEXTURE3, SHADER_PARAM_TYPE_INTEGER, "0", "" ) SHADER_PARAM( LINEARREAD_TEXTURE3, SHADER_PARAM_TYPE_INTEGER, "0", "" )
SHADER_PARAM( LINEARWRITE,SHADER_PARAM_TYPE_INTEGER,"0","") SHADER_PARAM( LINEARWRITE,SHADER_PARAM_TYPE_INTEGER,"0","")
SHADER_PARAM( X360APPCHOOSER, SHADER_PARAM_TYPE_INTEGER, "0", "Needed for movies in 360 launcher" ) SHADER_PARAM( X360APPCHOOSER, SHADER_PARAM_TYPE_INTEGER, "0", "Needed for movies in 360 launcher" )
SHADER_PARAM( COPYALPHA, SHADER_PARAM_TYPE_INTEGER, "0", "")
END_SHADER_PARAMS END_SHADER_PARAMS
SHADER_INIT SHADER_INIT
{ {
if ( params[BASETEXTURE]->IsDefined() ) if ( params[BASETEXTURE]->IsDefined() )
{ {
#ifdef POSIX
ImageFormat fmt = params[BASETEXTURE]->GetTextureValue()->GetImageFormat();
bool bSRGB;
if ( ( fmt == IMAGE_FORMAT_RGBA16161616F ) || ( fmt == IMAGE_FORMAT_RGBA16161616 ) )
bSRGB = false;
else
bSRGB = !params[LINEARREAD_BASETEXTURE]->IsDefined() || !params[LINEARREAD_BASETEXTURE]->GetIntValue();
LoadTexture( BASETEXTURE, bSRGB ? TEXTUREFLAGS_SRGB : 0 );
#else
LoadTexture( BASETEXTURE ); LoadTexture( BASETEXTURE );
#endif // POSIX
} }
if ( params[TEXTURE1]->IsDefined() ) if ( params[TEXTURE1]->IsDefined() )
{ {
#ifdef POSIX
ImageFormat fmt = params[TEXTURE1]->GetTextureValue()->GetImageFormat();
bool bSRGB;
if ( ( fmt == IMAGE_FORMAT_RGBA16161616F ) || ( fmt == IMAGE_FORMAT_RGBA16161616 ) )
bSRGB = false;
else
bSRGB = !params[LINEARREAD_TEXTURE1]->IsDefined() || !params[LINEARREAD_TEXTURE1]->GetIntValue();
LoadTexture( TEXTURE1, bSRGB ? TEXTUREFLAGS_SRGB : 0 );
#else
LoadTexture( TEXTURE1 ); LoadTexture( TEXTURE1 );
#endif // POSIX
} }
if ( params[TEXTURE2]->IsDefined() ) if ( params[TEXTURE2]->IsDefined() )
{ {
#ifdef POSIX
ImageFormat fmt = params[TEXTURE2]->GetTextureValue()->GetImageFormat();
bool bSRGB;
if ( ( fmt == IMAGE_FORMAT_RGBA16161616F ) || ( fmt == IMAGE_FORMAT_RGBA16161616 ) )
bSRGB = false;
else
bSRGB = !params[LINEARREAD_TEXTURE2]->IsDefined() || !params[LINEARREAD_TEXTURE2]->GetIntValue();
LoadTexture( TEXTURE2, bSRGB ? TEXTUREFLAGS_SRGB : 0 );
#else
LoadTexture( TEXTURE2 ); LoadTexture( TEXTURE2 );
#endif // POSIX
} }
if ( params[TEXTURE3]->IsDefined() ) if ( params[TEXTURE3]->IsDefined() )
{ {
#ifdef POSIX
ImageFormat fmt = params[TEXTURE3]->GetTextureValue()->GetImageFormat();
bool bSRGB;
if ( ( fmt == IMAGE_FORMAT_RGBA16161616F ) || ( fmt == IMAGE_FORMAT_RGBA16161616 ) )
bSRGB = false;
else
bSRGB = !params[LINEARREAD_TEXTURE3]->IsDefined() || !params[LINEARREAD_TEXTURE3]->GetIntValue();
LoadTexture( TEXTURE3, bSRGB ? TEXTUREFLAGS_SRGB : 0 );
#else
LoadTexture( TEXTURE3 ); LoadTexture( TEXTURE3 );
#endif // POSIX
} }
} }
@ -152,8 +195,24 @@ BEGIN_VS_SHADER_FLAGS( screenspace_general_dx9, "Help for screenspace_general",
{ {
EnableAlphaBlending( SHADER_BLEND_ONE, SHADER_BLEND_ONE ); EnableAlphaBlending( SHADER_BLEND_ONE, SHADER_BLEND_ONE );
} }
if ( params[ ALPHA_BLEND_COLOR_OVERLAY ]->GetIntValue() )
{
// Used for adding L4D-style halos
EnableAlphaBlending( SHADER_BLEND_ONE, SHADER_BLEND_ONE_MINUS_SRC_ALPHA );
}
if ( params[ ALPHA_BLEND ]->GetIntValue() )
{
// Used for adding L4D-style halos
EnableAlphaBlending( SHADER_BLEND_SRC_ALPHA, SHADER_BLEND_ONE_MINUS_SRC_ALPHA );
}
if( g_pHardwareConfig->SupportsPixelShaders_2_b() ) if( params[ COPYALPHA ]->GetIntValue() )
{
pShaderShadow->EnableBlending( false );
pShaderShadow->AlphaFunc( SHADER_ALPHAFUNC_ALWAYS, 0.0f );
}
if ( g_pHardwareConfig->SupportsPixelShaders_2_b() )
{ {
const char *szPixelShader = params[PIXSHADER]->GetStringValue(); const char *szPixelShader = params[PIXSHADER]->GetStringValue();
size_t iLength = Q_strlen( szPixelShader ); size_t iLength = Q_strlen( szPixelShader );
@ -180,23 +239,44 @@ BEGIN_VS_SHADER_FLAGS( screenspace_general_dx9, "Help for screenspace_general",
DYNAMIC_STATE DYNAMIC_STATE
{ {
// Using c4-c7 to store the pixel sizes of each texture
if (params[BASETEXTURE]->IsDefined()) if (params[BASETEXTURE]->IsDefined())
{ {
BindTexture( SHADER_SAMPLER0, BASETEXTURE, -1 ); BindTexture( SHADER_SAMPLER0, BASETEXTURE, -1 );
ITexture *pTarget = params[ BASETEXTURE ]->GetTextureValue();
float vPixelSize[4] = { 1.0f / pTarget->GetActualWidth(), 1.0f / pTarget->GetActualHeight(), 0.0f, 0.0f };
pShaderAPI->SetPixelShaderConstant( 4, vPixelSize, 1 );
} }
if (params[TEXTURE1]->IsDefined()) if (params[TEXTURE1]->IsDefined())
{ {
BindTexture( SHADER_SAMPLER1, TEXTURE1, -1 ); BindTexture( SHADER_SAMPLER1, TEXTURE1, -1 );
ITexture *pTarget = params[ TEXTURE1 ]->GetTextureValue();
float vPixelSize[4] = { 1.0f / pTarget->GetActualWidth(), 1.0f / pTarget->GetActualHeight(), 0.0f, 0.0f };
pShaderAPI->SetPixelShaderConstant( 5, vPixelSize, 1 );
} }
if (params[TEXTURE2]->IsDefined()) if (params[TEXTURE2]->IsDefined())
{ {
BindTexture( SHADER_SAMPLER2, TEXTURE2, -1 ); BindTexture( SHADER_SAMPLER2, TEXTURE2, -1 );
ITexture *pTarget = params[ TEXTURE2 ]->GetTextureValue();
float vPixelSize[4] = { 1.0f / pTarget->GetActualWidth(), 1.0f / pTarget->GetActualHeight(), 0.0f, 0.0f };
pShaderAPI->SetPixelShaderConstant( 6, vPixelSize, 1 );
} }
if (params[TEXTURE3]->IsDefined()) if (params[TEXTURE3]->IsDefined())
{ {
BindTexture( SHADER_SAMPLER3, TEXTURE3, -1 ); BindTexture( SHADER_SAMPLER3, TEXTURE3, -1 );
ITexture *pTarget = params[ TEXTURE3 ]->GetTextureValue();
float vPixelSize[4] = { 1.0f / pTarget->GetActualWidth(), 1.0f / pTarget->GetActualHeight(), 0.0f, 0.0f };
pShaderAPI->SetPixelShaderConstant( 7, vPixelSize, 1 );
} }
float c0[]={
float c0[] = {
params[C0_X]->GetFloatValue(), params[C0_X]->GetFloatValue(),
params[C0_Y]->GetFloatValue(), params[C0_Y]->GetFloatValue(),
params[C0_Z]->GetFloatValue(), params[C0_Z]->GetFloatValue(),
@ -215,6 +295,7 @@ BEGIN_VS_SHADER_FLAGS( screenspace_general_dx9, "Help for screenspace_general",
params[C3_W]->GetFloatValue() params[C3_W]->GetFloatValue()
}; };
// c0-c3
pShaderAPI->SetPixelShaderConstant( 0, c0, ARRAYSIZE(c0)/4 ); pShaderAPI->SetPixelShaderConstant( 0, c0, ARRAYSIZE(c0)/4 );
float eyePos[4]; float eyePos[4];

View file

@ -23,7 +23,7 @@
static ConVar mat_fullbright( "mat_fullbright", "0", FCVAR_CHEAT ); static ConVar mat_fullbright( "mat_fullbright", "0", FCVAR_CHEAT );
static ConVar r_lightwarpidentity( "r_lightwarpidentity", "0", FCVAR_CHEAT ); static ConVar r_lightwarpidentity( "r_lightwarpidentity", "0", FCVAR_CHEAT );
static ConVar r_rimlight( "r_rimlight", "1", FCVAR_CHEAT ); static ConVar r_rimlight( "r_rimlight", "1", FCVAR_NONE );
// Textures may be bound to the following samplers: // Textures may be bound to the following samplers:
// SHADER_SAMPLER0 Base (Albedo) / Gloss in alpha // SHADER_SAMPLER0 Base (Albedo) / Gloss in alpha
@ -270,6 +270,9 @@ void DrawSkin_DX9_Internal( CBaseVSShader *pShader, IMaterialVar** params, IShad
float flTintReplacementAmount = GetFloatParam( info.m_nTintReplacesBaseColor, params ); float flTintReplacementAmount = GetFloatParam( info.m_nTintReplacesBaseColor, params );
float flPhongExponentFactor = ( info.m_nPhongExponentFactor != -1 ) ? GetFloatParam( info.m_nPhongExponentFactor, params ) : 0.0f;
const bool bHasPhongExponentFactor = flPhongExponentFactor != 0.0f;
BlendType_t nBlendType= pShader->EvaluateBlendRequirements( bBlendTintByBaseAlpha ? -1 : info.m_nBaseTexture, true ); BlendType_t nBlendType= pShader->EvaluateBlendRequirements( bBlendTintByBaseAlpha ? -1 : info.m_nBaseTexture, true );
bool bFullyOpaque = (nBlendType != BT_BLENDADD) && (nBlendType != BT_BLEND) && !bIsAlphaTested && !bHasFlashlight; //dest alpha is free for special use bool bFullyOpaque = (nBlendType != BT_BLENDADD) && (nBlendType != BT_BLEND) && !bIsAlphaTested && !bHasFlashlight; //dest alpha is free for special use
@ -676,6 +679,7 @@ void DrawSkin_DX9_Internal( CBaseVSShader *pShader, IMaterialVar** params, IShad
SET_DYNAMIC_PIXEL_SHADER_COMBO( WRITE_DEPTH_TO_DESTALPHA, bWriteDepthToAlpha ); SET_DYNAMIC_PIXEL_SHADER_COMBO( WRITE_DEPTH_TO_DESTALPHA, bWriteDepthToAlpha );
SET_DYNAMIC_PIXEL_SHADER_COMBO( PIXELFOGTYPE, pShaderAPI->GetPixelFogCombo() ); SET_DYNAMIC_PIXEL_SHADER_COMBO( PIXELFOGTYPE, pShaderAPI->GetPixelFogCombo() );
SET_DYNAMIC_PIXEL_SHADER_COMBO( FLASHLIGHTSHADOWS, bFlashlightShadows ); SET_DYNAMIC_PIXEL_SHADER_COMBO( FLASHLIGHTSHADOWS, bFlashlightShadows );
SET_DYNAMIC_PIXEL_SHADER_COMBO( PHONG_USE_EXPONENT_FACTOR, bHasPhongExponentFactor );
SET_DYNAMIC_PIXEL_SHADER( skin_ps20b ); SET_DYNAMIC_PIXEL_SHADER( skin_ps20b );
} }
#ifndef _X360 #ifndef _X360
@ -697,6 +701,7 @@ void DrawSkin_DX9_Internal( CBaseVSShader *pShader, IMaterialVar** params, IShad
SET_DYNAMIC_PIXEL_SHADER_COMBO( WRITE_DEPTH_TO_DESTALPHA, bWriteDepthToAlpha ); SET_DYNAMIC_PIXEL_SHADER_COMBO( WRITE_DEPTH_TO_DESTALPHA, bWriteDepthToAlpha );
SET_DYNAMIC_PIXEL_SHADER_COMBO( PIXELFOGTYPE, pShaderAPI->GetPixelFogCombo() ); SET_DYNAMIC_PIXEL_SHADER_COMBO( PIXELFOGTYPE, pShaderAPI->GetPixelFogCombo() );
SET_DYNAMIC_PIXEL_SHADER_COMBO( FLASHLIGHTSHADOWS, bFlashlightShadows ); SET_DYNAMIC_PIXEL_SHADER_COMBO( FLASHLIGHTSHADOWS, bFlashlightShadows );
SET_DYNAMIC_PIXEL_SHADER_COMBO( PHONG_USE_EXPONENT_FACTOR, bHasPhongExponentFactor );
SET_DYNAMIC_PIXEL_SHADER( skin_ps30 ); SET_DYNAMIC_PIXEL_SHADER( skin_ps30 );
bool bUnusedTexCoords[3] = { false, false, !pShaderAPI->IsHWMorphingEnabled() || !bIsDecal }; bool bUnusedTexCoords[3] = { false, false, !pShaderAPI->IsHWMorphingEnabled() || !bIsDecal };
@ -806,15 +811,23 @@ void DrawSkin_DX9_Internal( CBaseVSShader *pShader, IMaterialVar** params, IShad
float vSpecularTint[4] = {1, 1, 1, 4}; float vSpecularTint[4] = {1, 1, 1, 4};
pShaderAPI->GetWorldSpaceCameraPosition( vEyePos_SpecExponent ); pShaderAPI->GetWorldSpaceCameraPosition( vEyePos_SpecExponent );
// Use the alpha channel of the normal map for the exponent by default // If we have a phong exponent factor, then use that as a multiplier against the texture.
vEyePos_SpecExponent[3] = -1.f; if ( bHasPhongExponentFactor )
if ( (info.m_nPhongExponent != -1) && params[info.m_nPhongExponent]->IsDefined() )
{ {
float fValue = params[info.m_nPhongExponent]->GetFloatValue(); vEyePos_SpecExponent[3] = flPhongExponentFactor;
if ( fValue > 0.f ) }
else
{
// Use the alpha channel of the normal map for the exponent by default
vEyePos_SpecExponent[3] = -1.f;
if ( (info.m_nPhongExponent != -1) && params[info.m_nPhongExponent]->IsDefined() )
{ {
// Nonzero value in material overrides map channel float fValue = params[info.m_nPhongExponent]->GetFloatValue();
vEyePos_SpecExponent[3] = fValue; if ( fValue > 0.f )
{
// Nonzero value in material overrides map channel
vEyePos_SpecExponent[3] = fValue;
}
} }
} }

View file

@ -24,6 +24,8 @@
// DYNAMIC: "WRITE_DEPTH_TO_DESTALPHA" "0..1" [ps30] // DYNAMIC: "WRITE_DEPTH_TO_DESTALPHA" "0..1" [ps30]
// DYNAMIC: "FLASHLIGHTSHADOWS" "0..1" [ps20b] // DYNAMIC: "FLASHLIGHTSHADOWS" "0..1" [ps20b]
// DYNAMIC: "FLASHLIGHTSHADOWS" "0..1" [ps30] // DYNAMIC: "FLASHLIGHTSHADOWS" "0..1" [ps30]
// DYNAMIC: "PHONG_USE_EXPONENT_FACTOR" "0..0" [ps20]
// DYNAMIC: "PHONG_USE_EXPONENT_FACTOR" "0..1" [ps20b] [ps30] [PC]
// SKIP: ($PIXELFOGTYPE == 0) && ($WRITEWATERFOGTODESTALPHA != 0) // SKIP: ($PIXELFOGTYPE == 0) && ($WRITEWATERFOGTODESTALPHA != 0)
@ -76,7 +78,9 @@ const float4 g_EyePos_SpecExponent : register( PSREG_EYEPOS_SPEC_EXPONENT );
const float4 g_FogParams : register( PSREG_FOG_PARAMS ); const float4 g_FogParams : register( PSREG_FOG_PARAMS );
const float4 g_FlashlightAttenuationFactors_RimMask : register( PSREG_FLASHLIGHT_ATTENUATION ); // On non-flashlight pass, x has rim mask control const float4 g_FlashlightAttenuationFactors_RimMask : register( PSREG_FLASHLIGHT_ATTENUATION ); // On non-flashlight pass, x has rim mask control
const float4 g_FlashlightPos_RimBoost : register( PSREG_FLASHLIGHT_POSITION_RIM_BOOST ); const float4 g_FlashlightPos_RimBoost : register( PSREG_FLASHLIGHT_POSITION_RIM_BOOST );
const float4x4 g_FlashlightWorldToTexture : register( PSREG_FLASHLIGHT_TO_WORLD_TEXTURE ); #if FLASHLIGHT
const float4x4 g_FlashlightWorldToTexture : register( PSREG_FLASHLIGHT_TO_WORLD_TEXTURE );
#endif
const float4 g_FresnelSpecParams : register( PSREG_FRESNEL_SPEC_PARAMS ); // xyz are fresnel, w is specular boost const float4 g_FresnelSpecParams : register( PSREG_FRESNEL_SPEC_PARAMS ); // xyz are fresnel, w is specular boost
const float4 g_SpecularRimParams : register( PSREG_SPEC_RIM_PARAMS ); // xyz are specular tint color, w is rim power const float4 g_SpecularRimParams : register( PSREG_SPEC_RIM_PARAMS ); // xyz are specular tint color, w is rim power
PixelShaderLightInfo cLightInfo[3] : register( PSREG_LIGHT_INFO_ARRAY ); // 2 registers each - 6 registers total (4th light spread across w's) PixelShaderLightInfo cLightInfo[3] : register( PSREG_LIGHT_INFO_ARRAY ); // 2 registers each - 6 registers total (4th light spread across w's)
@ -96,6 +100,7 @@ const float4 g_ShaderControls : register( PSREG_CONSTANT_27 ); // x is
#define g_fTintReplacementControl g_ShaderControls.z #define g_fTintReplacementControl g_ShaderControls.z
#define g_fInvertPhongMask g_ShaderControls.w #define g_fInvertPhongMask g_ShaderControls.w
sampler BaseTextureSampler : register( s0 ); // Base map, selfillum in alpha sampler BaseTextureSampler : register( s0 ); // Base map, selfillum in alpha
sampler SpecularWarpSampler : register( s1 ); // Specular warp sampler (for iridescence etc) sampler SpecularWarpSampler : register( s1 ); // Specular warp sampler (for iridescence etc)
sampler DiffuseWarpSampler : register( s2 ); // Lighting warp sampler (1D texture for diffuse lighting modification) sampler DiffuseWarpSampler : register( s2 ); // Lighting warp sampler (1D texture for diffuse lighting modification)
@ -119,7 +124,6 @@ sampler DetailSampler : register( s13 ); // detail texture
sampler SelfIllumMaskSampler : register( s14 ); // selfillummask sampler SelfIllumMaskSampler : register( s14 ); // selfillummask
struct PS_INPUT struct PS_INPUT
{ {
float4 baseTexCoordDetailTexCoord : TEXCOORD0; // xy=base zw=detail float4 baseTexCoordDetailTexCoord : TEXCOORD0; // xy=base zw=detail
@ -258,7 +262,11 @@ float4 main( PS_INPUT i ) : COLOR
[flatten] [flatten]
#endif #endif
#if ( PHONG_USE_EXPONENT_FACTOR )
fSpecExp = ( 1.0f + g_EyePos_SpecExponent.w * vSpecExpMap.r );
#else
fSpecExp = (g_EyePos_SpecExponent.w >= 0.0) ? g_EyePos_SpecExponent.w : (1.0f + 149.0f * vSpecExpMap.r); fSpecExp = (g_EyePos_SpecExponent.w >= 0.0) ? g_EyePos_SpecExponent.w : (1.0f + 149.0f * vSpecExpMap.r);
#endif
// If constant tint is negative, tint with albedo, based upon scalar tint map // If constant tint is negative, tint with albedo, based upon scalar tint map
#if defined( _X360 ) #if defined( _X360 )
@ -286,15 +294,17 @@ float4 main( PS_INPUT i ) : COLOR
} }
else else
{ {
float4 flashlightSpacePosition = mul( float4( vWorldPos, 1.0f ), g_FlashlightWorldToTexture ); #if FLASHLIGHT
float4 flashlightSpacePosition = mul( float4( vWorldPos, 1.0f ), g_FlashlightWorldToTexture );
DoSpecularFlashlight( g_FlashlightPos, vWorldPos, flashlightSpacePosition, worldSpaceNormal, DoSpecularFlashlight( g_FlashlightPos, vWorldPos, flashlightSpacePosition, worldSpaceNormal,
g_FlashlightAttenuationFactors.xyz, g_FlashlightAttenuationFactors.w, g_FlashlightAttenuationFactors.xyz, g_FlashlightAttenuationFactors.w,
FlashlightSampler, ShadowDepthSampler, NormalizeRandRotSampler, FLASHLIGHTDEPTHFILTERMODE, FLASHLIGHTSHADOWS, true, vProjPos.xy / vProjPos.z, FlashlightSampler, ShadowDepthSampler, NormalizeRandRotSampler, FLASHLIGHTDEPTHFILTERMODE, FLASHLIGHTSHADOWS, true, vProjPos.xy / vProjPos.z,
fSpecExp, vEyeDir, bDoSpecularWarp, SpecularWarpSampler, fFresnelRanges, g_EnvmapTint_ShadowTweaks, fSpecExp, vEyeDir, bDoSpecularWarp, SpecularWarpSampler, fFresnelRanges, g_EnvmapTint_ShadowTweaks,
// These two values are output // These two values are output
diffuseLighting, specularLighting ); diffuseLighting, specularLighting );
#endif
} }
// If we didn't already apply Fresnel to specular warp, modulate the specular // If we didn't already apply Fresnel to specular warp, modulate the specular

View file

@ -220,7 +220,7 @@ BEGIN_VS_SHADER( Sky_HDR_DX9, "Help for Sky_HDR_DX9 shader" )
float w=txtr->GetActualWidth(); float w=txtr->GetActualWidth();
float h=txtr->GetActualHeight(); float h=txtr->GetActualHeight();
float FUDGE=0.01/max(w,h); // per ATI float FUDGE=0.01/max(w,h); // per ATI
float c1[4]={0.5/w-FUDGE, 0.5/h-FUDGE, w, h }; float c1[4]={(float)(0.5/w-FUDGE), (float)(0.5/h-FUDGE), w, h };
pShaderAPI->SetVertexShaderConstant( VERTEX_SHADER_SHADER_SPECIFIC_CONST_0, c1); pShaderAPI->SetVertexShaderConstant( VERTEX_SHADER_SHADER_SPECIFIC_CONST_0, c1);
BindTexture( SHADER_SAMPLER0, HDRCOMPRESSEDTEXTURE, FRAME ); BindTexture( SHADER_SAMPLER0, HDRCOMPRESSEDTEXTURE, FRAME );

View file

@ -417,7 +417,7 @@ SHADER_DRAW
if ( bZoomSeq2 ) if ( bZoomSeq2 )
{ {
float flZScale=1.0/(params[ZOOMANIMATESEQ2]->GetFloatValue()); float flZScale=1.0/(params[ZOOMANIMATESEQ2]->GetFloatValue());
float C0[4]={ 0.5*(1.0+flZScale), flZScale, 0, 0 }; float C0[4]={ (float)(0.5*(1.0+flZScale)), flZScale, 0, 0 };
pShaderAPI->SetVertexShaderConstant( VERTEX_SHADER_SHADER_SPECIFIC_CONST_7, C0, pShaderAPI->SetVertexShaderConstant( VERTEX_SHADER_SHADER_SPECIFIC_CONST_7, C0,
ARRAYSIZE(C0)/4 ); ARRAYSIZE(C0)/4 );
} }
@ -428,7 +428,7 @@ SHADER_DRAW
float VC0[8]={ params[MINSIZE]->GetFloatValue(), params[MAXSIZE]->GetFloatValue(), float VC0[8]={ params[MINSIZE]->GetFloatValue(), params[MAXSIZE]->GetFloatValue(),
params[STARTFADESIZE]->GetFloatValue(), params[ENDFADESIZE]->GetFloatValue(), params[STARTFADESIZE]->GetFloatValue(), params[ENDFADESIZE]->GetFloatValue(),
flStartFade, 1.0/(flMaxDistance-flStartFade), flStartFade, (float)(1.0/(flMaxDistance-flStartFade)),
0,0 }; 0,0 };
pShaderAPI->SetVertexShaderConstant( VERTEX_SHADER_SHADER_SPECIFIC_CONST_8, VC0, ARRAYSIZE(VC0)/4 ); pShaderAPI->SetVertexShaderConstant( VERTEX_SHADER_SHADER_SPECIFIC_CONST_8, VC0, ARRAYSIZE(VC0)/4 );

View file

@ -236,7 +236,7 @@ BEGIN_VS_SHADER( Teeth_DX9, "Help for Teeth_DX9" )
DECLARE_DYNAMIC_VERTEX_SHADER( teeth_bump_vs20 ); DECLARE_DYNAMIC_VERTEX_SHADER( teeth_bump_vs20 );
SET_DYNAMIC_VERTEX_SHADER_COMBO( DOWATERFOG, pShaderAPI->GetSceneFogMode() == MATERIAL_FOG_LINEAR_BELOW_FOG_Z ); SET_DYNAMIC_VERTEX_SHADER_COMBO( DOWATERFOG, pShaderAPI->GetSceneFogMode() == MATERIAL_FOG_LINEAR_BELOW_FOG_Z );
SET_DYNAMIC_VERTEX_SHADER_COMBO( SKINNING, pShaderAPI->GetCurrentNumBones() > 0 ); SET_DYNAMIC_VERTEX_SHADER_COMBO( SKINNING, pShaderAPI->GetCurrentNumBones() > 0 );
SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT, lightState.m_bStaticLight ? 1 : 0 ); SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT, lightState.m_bStaticLightVertex ? 1 : 0 );
SET_DYNAMIC_VERTEX_SHADER_COMBO( COMPRESSED_VERTS, (int)vertexCompression ); SET_DYNAMIC_VERTEX_SHADER_COMBO( COMPRESSED_VERTS, (int)vertexCompression );
SET_DYNAMIC_VERTEX_SHADER_COMBO( NUM_LIGHTS, bUseStaticControlFlow ? 0 : lightState.m_nNumLights ); SET_DYNAMIC_VERTEX_SHADER_COMBO( NUM_LIGHTS, bUseStaticControlFlow ? 0 : lightState.m_nNumLights );
SET_DYNAMIC_VERTEX_SHADER( teeth_bump_vs20 ); SET_DYNAMIC_VERTEX_SHADER( teeth_bump_vs20 );
@ -273,7 +273,7 @@ BEGIN_VS_SHADER( Teeth_DX9, "Help for Teeth_DX9" )
DECLARE_DYNAMIC_VERTEX_SHADER( teeth_bump_vs30 ); DECLARE_DYNAMIC_VERTEX_SHADER( teeth_bump_vs30 );
SET_DYNAMIC_VERTEX_SHADER_COMBO( DOWATERFOG, pShaderAPI->GetSceneFogMode() == MATERIAL_FOG_LINEAR_BELOW_FOG_Z ); SET_DYNAMIC_VERTEX_SHADER_COMBO( DOWATERFOG, pShaderAPI->GetSceneFogMode() == MATERIAL_FOG_LINEAR_BELOW_FOG_Z );
SET_DYNAMIC_VERTEX_SHADER_COMBO( SKINNING, pShaderAPI->GetCurrentNumBones() > 0 ); SET_DYNAMIC_VERTEX_SHADER_COMBO( SKINNING, pShaderAPI->GetCurrentNumBones() > 0 );
SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT, lightState.m_bStaticLight ? 1 : 0 ); SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT, lightState.m_bStaticLightVertex ? 1 : 0 );
SET_DYNAMIC_VERTEX_SHADER_COMBO( MORPHING, pShaderAPI->IsHWMorphingEnabled() ); SET_DYNAMIC_VERTEX_SHADER_COMBO( MORPHING, pShaderAPI->IsHWMorphingEnabled() );
SET_DYNAMIC_VERTEX_SHADER_COMBO( COMPRESSED_VERTS, (int)vertexCompression ); SET_DYNAMIC_VERTEX_SHADER_COMBO( COMPRESSED_VERTS, (int)vertexCompression );
SET_DYNAMIC_VERTEX_SHADER( teeth_bump_vs30 ); SET_DYNAMIC_VERTEX_SHADER( teeth_bump_vs30 );
@ -306,7 +306,7 @@ BEGIN_VS_SHADER( Teeth_DX9, "Help for Teeth_DX9" )
SET_DYNAMIC_VERTEX_SHADER_COMBO( DOWATERFOG, pShaderAPI->GetSceneFogMode() == MATERIAL_FOG_LINEAR_BELOW_FOG_Z ); SET_DYNAMIC_VERTEX_SHADER_COMBO( DOWATERFOG, pShaderAPI->GetSceneFogMode() == MATERIAL_FOG_LINEAR_BELOW_FOG_Z );
SET_DYNAMIC_VERTEX_SHADER_COMBO( SKINNING, pShaderAPI->GetCurrentNumBones() > 0 ); SET_DYNAMIC_VERTEX_SHADER_COMBO( SKINNING, pShaderAPI->GetCurrentNumBones() > 0 );
SET_DYNAMIC_VERTEX_SHADER_COMBO( DYNAMIC_LIGHT, lightState.HasDynamicLight() ); SET_DYNAMIC_VERTEX_SHADER_COMBO( DYNAMIC_LIGHT, lightState.HasDynamicLight() );
SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT, lightState.m_bStaticLight ? 1 : 0 ); SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT, lightState.m_bStaticLightVertex ? 1 : 0 );
SET_DYNAMIC_VERTEX_SHADER_COMBO( COMPRESSED_VERTS, (int)vertexCompression ); SET_DYNAMIC_VERTEX_SHADER_COMBO( COMPRESSED_VERTS, (int)vertexCompression );
SET_DYNAMIC_VERTEX_SHADER_COMBO( NUM_LIGHTS, bUseStaticControlFlow ? 0 : lightState.m_nNumLights ); SET_DYNAMIC_VERTEX_SHADER_COMBO( NUM_LIGHTS, bUseStaticControlFlow ? 0 : lightState.m_nNumLights );
SET_DYNAMIC_VERTEX_SHADER( teeth_vs20 ); SET_DYNAMIC_VERTEX_SHADER( teeth_vs20 );
@ -334,7 +334,7 @@ BEGIN_VS_SHADER( Teeth_DX9, "Help for Teeth_DX9" )
SET_DYNAMIC_VERTEX_SHADER_COMBO( DOWATERFOG, pShaderAPI->GetSceneFogMode() == MATERIAL_FOG_LINEAR_BELOW_FOG_Z ); SET_DYNAMIC_VERTEX_SHADER_COMBO( DOWATERFOG, pShaderAPI->GetSceneFogMode() == MATERIAL_FOG_LINEAR_BELOW_FOG_Z );
SET_DYNAMIC_VERTEX_SHADER_COMBO( SKINNING, pShaderAPI->GetCurrentNumBones() > 0 ); SET_DYNAMIC_VERTEX_SHADER_COMBO( SKINNING, pShaderAPI->GetCurrentNumBones() > 0 );
SET_DYNAMIC_VERTEX_SHADER_COMBO( DYNAMIC_LIGHT, lightState.HasDynamicLight() ); SET_DYNAMIC_VERTEX_SHADER_COMBO( DYNAMIC_LIGHT, lightState.HasDynamicLight() );
SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT, lightState.m_bStaticLight ? 1 : 0 ); SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT, lightState.m_bStaticLightVertex ? 1 : 0 );
SET_DYNAMIC_VERTEX_SHADER_COMBO( MORPHING, pShaderAPI->IsHWMorphingEnabled() ); SET_DYNAMIC_VERTEX_SHADER_COMBO( MORPHING, pShaderAPI->IsHWMorphingEnabled() );
SET_DYNAMIC_VERTEX_SHADER_COMBO( COMPRESSED_VERTS, (int)vertexCompression ); SET_DYNAMIC_VERTEX_SHADER_COMBO( COMPRESSED_VERTS, (int)vertexCompression );
SET_DYNAMIC_VERTEX_SHADER( teeth_vs30 ); SET_DYNAMIC_VERTEX_SHADER( teeth_vs30 );

View file

@ -31,6 +31,9 @@
// DYNAMIC: "LIGHTING_PREVIEW" "0..0" [XBOX] // DYNAMIC: "LIGHTING_PREVIEW" "0..0" [XBOX]
// DYNAMIC: "FLASHLIGHTSHADOWS" "0..1" [ps20b] // DYNAMIC: "FLASHLIGHTSHADOWS" "0..1" [ps20b]
// DYNAMIC: "FLASHLIGHTSHADOWS" "0..1" [ps30] // DYNAMIC: "FLASHLIGHTSHADOWS" "0..1" [ps30]
// DYNAMIC: "STATIC_LIGHT_LIGHTMAP" "0..1" [ps20b] [ps30]
// DYNAMIC: "STATIC_LIGHT_LIGHTMAP" "0..0" [ps20]
// DYNAMIC: "DEBUG_LUXELS" "0..1" [ps20b] [ps30]
// detail blend mode 6 = ps20b only // detail blend mode 6 = ps20b only
// SKIP: $DETAIL_BLEND_MODE == 6 [ps20] // SKIP: $DETAIL_BLEND_MODE == 6 [ps20]
@ -71,6 +74,9 @@
// SKIP: $CUBEMAP_SPHERE_LEGACY && ($CUBEMAP == 0) // SKIP: $CUBEMAP_SPHERE_LEGACY && ($CUBEMAP == 0)
// Debugging luxels only makes sense if we have lightmaps on this geometry.
// SKIP: ($STATIC_LIGHT_LIGHTMAP == 0) && ($DEBUG_LUXELS == 1)
#include "common_flashlight_fxc.h" #include "common_flashlight_fxc.h"
#include "common_vertexlitgeneric_dx9.h" #include "common_vertexlitgeneric_dx9.h"
@ -105,6 +111,7 @@ sampler FlashlightSampler : register( s7 );
sampler ShadowDepthSampler : register( s8 ); // Flashlight shadow depth map sampler sampler ShadowDepthSampler : register( s8 ); // Flashlight shadow depth map sampler
sampler DepthSampler : register( s10 ); //depth buffer sampler for depth blending sampler DepthSampler : register( s10 ); //depth buffer sampler for depth blending
sampler SelfIllumMaskSampler : register( s11 ); // selfillummask sampler SelfIllumMaskSampler : register( s11 ); // selfillummask
sampler LightMapSampler : register( s12 );
struct PS_INPUT struct PS_INPUT
{ {
@ -167,6 +174,10 @@ const float4 g_OutlineParams : register( c9 );
const float3 g_DetailTint : register( c10 ); const float3 g_DetailTint : register( c10 );
#endif #endif
#if DEBUG_LUXELS
const float4 g_LuxelScale : register( c11 );
#endif
// Calculate unified fog // Calculate unified fog
float CalcPixelFogFactorConst( float fPixelFogType, const float4 fogParams, const float flEyePosZ, const float flWorldPosZ, const float flProjPosZ ) float CalcPixelFogFactorConst( float fPixelFogType, const float4 fogParams, const float flEyePosZ, const float flWorldPosZ, const float flProjPosZ )
@ -331,12 +342,24 @@ float4 main( PS_INPUT i ) : COLOR
} }
float3 diffuseLighting = float3( 1.0f, 1.0f, 1.0f ); float3 diffuseLighting = float3( 1.0f, 1.0f, 1.0f );
if( bDiffuseLighting || bVertexColor && !( bVertexColor && bDiffuseLighting ) ) if( bDiffuseLighting || bVertexColor )
{ {
diffuseLighting = i.color.rgb; diffuseLighting = i.color.rgb;
} }
#if STATIC_LIGHT_LIGHTMAP
// This matches the behavior of vertex lighting, which multiplies by cOverbright (which is not accessible here)
// And converts from Gamma space to Linear space before being used.
float2 lightmapTexCoords = i.baseTexCoord.xy;
#if DEBUG_LUXELS
lightmapTexCoords.xy *= g_LuxelScale.xy;
#endif
float3 f3LightmapColor = GammaToLinear( 2.0f * tex2D( LightMapSampler, lightmapTexCoords ).rgb );
diffuseLighting = f3LightmapColor;
#endif
float3 albedo = baseColor; float3 albedo = baseColor;
if (bBlendTintByBaseAlpha) if (bBlendTintByBaseAlpha)
{ {
float3 tintedColor = albedo * g_DiffuseModulation.rgb; float3 tintedColor = albedo * g_DiffuseModulation.rgb;

View file

@ -12,7 +12,8 @@
// STATIC: "DONT_GAMMA_CONVERT_VERTEX_COLOR" "0..1" // STATIC: "DONT_GAMMA_CONVERT_VERTEX_COLOR" "0..1"
// DYNAMIC: "COMPRESSED_VERTS" "0..1" // DYNAMIC: "COMPRESSED_VERTS" "0..1"
// DYNAMIC: "DYNAMIC_LIGHT" "0..1" // DYNAMIC: "DYNAMIC_LIGHT" "0..1"
// DYNAMIC: "STATIC_LIGHT" "0..1" // DYNAMIC: "STATIC_LIGHT_VERTEX" "0..1"
// DYNAMIC: "STATIC_LIGHT_LIGHTMAP" "0..1"
// DYNAMIC: "DOWATERFOG" "0..1" // DYNAMIC: "DOWATERFOG" "0..1"
// DYNAMIC: "SKINNING" "0..1" // DYNAMIC: "SKINNING" "0..1"
// DYNAMIC: "LIGHTING_PREVIEW" "0..1" [PC] // DYNAMIC: "LIGHTING_PREVIEW" "0..1" [PC]
@ -125,7 +126,7 @@ VS_OUTPUT main( const VS_INPUT v )
VS_OUTPUT o = ( VS_OUTPUT )0; VS_OUTPUT o = ( VS_OUTPUT )0;
bool bDynamicLight = DYNAMIC_LIGHT ? true : false; bool bDynamicLight = DYNAMIC_LIGHT ? true : false;
bool bStaticLight = STATIC_LIGHT ? true : false; bool bStaticLight = STATIC_LIGHT_VERTEX ? true : false;
bool bDoLighting = !g_bVertexColor && (bDynamicLight || bStaticLight); bool bDoLighting = !g_bVertexColor && (bDynamicLight || bStaticLight);
float4 vPosition = v.vPos; float4 vPosition = v.vPos;

View file

@ -41,6 +41,7 @@ BEGIN_VS_SHADER( VertexLitGeneric, "Help for VertexLitGeneric" )
SHADER_PARAM( SELFILLUMFRESNELMINMAXEXP, SHADER_PARAM_TYPE_VEC4, "0", "Self illum fresnel min, max, exp" ) SHADER_PARAM( SELFILLUMFRESNELMINMAXEXP, SHADER_PARAM_TYPE_VEC4, "0", "Self illum fresnel min, max, exp" )
SHADER_PARAM( ALPHATESTREFERENCE, SHADER_PARAM_TYPE_FLOAT, "0.0", "" ) SHADER_PARAM( ALPHATESTREFERENCE, SHADER_PARAM_TYPE_FLOAT, "0.0", "" )
SHADER_PARAM( FLASHLIGHTNOLAMBERT, SHADER_PARAM_TYPE_BOOL, "0", "Flashlight pass sets N.L=1.0" ) SHADER_PARAM( FLASHLIGHTNOLAMBERT, SHADER_PARAM_TYPE_BOOL, "0", "Flashlight pass sets N.L=1.0" )
SHADER_PARAM( LIGHTMAP, SHADER_PARAM_TYPE_TEXTURE, "shadertest/BaseTexture", "lightmap texture--will be bound by the engine")
// Debugging term for visualizing ambient data on its own // Debugging term for visualizing ambient data on its own
SHADER_PARAM( AMBIENTONLY, SHADER_PARAM_TYPE_INTEGER, "0", "Control drawing of non-ambient light ()" ) SHADER_PARAM( AMBIENTONLY, SHADER_PARAM_TYPE_INTEGER, "0", "Control drawing of non-ambient light ()" )
@ -53,6 +54,7 @@ BEGIN_VS_SHADER( VertexLitGeneric, "Help for VertexLitGeneric" )
SHADER_PARAM( PHONGFRESNELRANGES, SHADER_PARAM_TYPE_VEC3, "[0 0.5 1]", "Parameters for remapping fresnel output" ) SHADER_PARAM( PHONGFRESNELRANGES, SHADER_PARAM_TYPE_VEC3, "[0 0.5 1]", "Parameters for remapping fresnel output" )
SHADER_PARAM( PHONGBOOST, SHADER_PARAM_TYPE_FLOAT, "1.0", "Phong overbrightening factor (specular mask channel should be authored to account for this)" ) SHADER_PARAM( PHONGBOOST, SHADER_PARAM_TYPE_FLOAT, "1.0", "Phong overbrightening factor (specular mask channel should be authored to account for this)" )
SHADER_PARAM( PHONGEXPONENTTEXTURE, SHADER_PARAM_TYPE_TEXTURE, "shadertest/BaseTexture", "Phong Exponent map" ) SHADER_PARAM( PHONGEXPONENTTEXTURE, SHADER_PARAM_TYPE_TEXTURE, "shadertest/BaseTexture", "Phong Exponent map" )
SHADER_PARAM( PHONGEXPONENTFACTOR, SHADER_PARAM_TYPE_FLOAT, "0.0", "When using a phong exponent texture, this will be multiplied by the 0..1 that comes out of the texture." )
SHADER_PARAM( PHONG, SHADER_PARAM_TYPE_BOOL, "0", "enables phong lighting" ) SHADER_PARAM( PHONG, SHADER_PARAM_TYPE_BOOL, "0", "enables phong lighting" )
SHADER_PARAM( BASEMAPALPHAPHONGMASK, SHADER_PARAM_TYPE_INTEGER, "0", "indicates that there is no normal map and that the phong mask is in base alpha" ) SHADER_PARAM( BASEMAPALPHAPHONGMASK, SHADER_PARAM_TYPE_INTEGER, "0", "indicates that there is no normal map and that the phong mask is in base alpha" )
SHADER_PARAM( INVERTPHONGMASK, SHADER_PARAM_TYPE_INTEGER, "0", "invert the phong mask (0=full phong, 1=no phong)" ) SHADER_PARAM( INVERTPHONGMASK, SHADER_PARAM_TYPE_INTEGER, "0", "invert the phong mask (0=full phong, 1=no phong)" )
@ -163,6 +165,7 @@ BEGIN_VS_SHADER( VertexLitGeneric, "Help for VertexLitGeneric" )
info.m_nEnvmapSaturation = ENVMAPSATURATION; info.m_nEnvmapSaturation = ENVMAPSATURATION;
info.m_nAlphaTestReference = ALPHATESTREFERENCE; info.m_nAlphaTestReference = ALPHATESTREFERENCE;
info.m_nFlashlightNoLambert = FLASHLIGHTNOLAMBERT; info.m_nFlashlightNoLambert = FLASHLIGHTNOLAMBERT;
info.m_nLightmap = LIGHTMAP;
info.m_nFlashlightTexture = FLASHLIGHTTEXTURE; info.m_nFlashlightTexture = FLASHLIGHTTEXTURE;
info.m_nFlashlightTextureFrame = FLASHLIGHTTEXTUREFRAME; info.m_nFlashlightTextureFrame = FLASHLIGHTTEXTUREFRAME;
@ -178,6 +181,7 @@ BEGIN_VS_SHADER( VertexLitGeneric, "Help for VertexLitGeneric" )
info.m_nDiffuseWarpTexture = LIGHTWARPTEXTURE; info.m_nDiffuseWarpTexture = LIGHTWARPTEXTURE;
info.m_nPhongWarpTexture = PHONGWARPTEXTURE; info.m_nPhongWarpTexture = PHONGWARPTEXTURE;
info.m_nPhongBoost = PHONGBOOST; info.m_nPhongBoost = PHONGBOOST;
info.m_nPhongExponentFactor = PHONGEXPONENTFACTOR;
info.m_nPhongFresnelRanges = PHONGFRESNELRANGES; info.m_nPhongFresnelRanges = PHONGFRESNELRANGES;
info.m_nPhong = PHONG; info.m_nPhong = PHONG;
info.m_nBaseMapAlphaPhongMask = BASEMAPALPHAPHONGMASK; info.m_nBaseMapAlphaPhongMask = BASEMAPALPHAPHONGMASK;

View file

@ -32,6 +32,7 @@
static ConVar mat_fullbright( "mat_fullbright","0", FCVAR_CHEAT ); static ConVar mat_fullbright( "mat_fullbright","0", FCVAR_CHEAT );
static ConVar r_lightwarpidentity( "r_lightwarpidentity","0", FCVAR_CHEAT ); static ConVar r_lightwarpidentity( "r_lightwarpidentity","0", FCVAR_CHEAT );
static ConVar mat_luxels( "mat_luxels", "0", FCVAR_CHEAT );
static inline bool WantsSkinShader( IMaterialVar** params, const VertexLitGeneric_DX9_Vars_t &info ) static inline bool WantsSkinShader( IMaterialVar** params, const VertexLitGeneric_DX9_Vars_t &info )
@ -382,7 +383,8 @@ static void DrawVertexLitGeneric_DX9_Internal( CBaseVSShader *pShader, IMaterial
bool bIsAlphaTested = IS_FLAG_SET( MATERIAL_VAR_ALPHATEST ) != 0; bool bIsAlphaTested = IS_FLAG_SET( MATERIAL_VAR_ALPHATEST ) != 0;
bool bHasDiffuseWarp = (!bHasFlashlight || IsX360() ) && hasDiffuseLighting && (info.m_nDiffuseWarpTexture != -1) && params[info.m_nDiffuseWarpTexture]->IsTexture(); bool bHasDiffuseWarp = (!bHasFlashlight || IsX360() ) && hasDiffuseLighting && (info.m_nDiffuseWarpTexture != -1) && params[info.m_nDiffuseWarpTexture]->IsTexture();
bool bHasLightmapTexture = IsTextureSet( info.m_nLightmap, params );
bool bHasMatLuxel = bHasLightmapTexture && mat_luxels.GetBool();
//bool bNoCull = IS_FLAG_SET( MATERIAL_VAR_NOCULL ); //bool bNoCull = IS_FLAG_SET( MATERIAL_VAR_NOCULL );
bool bFlashlightNoLambert = false; bool bFlashlightNoLambert = false;
@ -431,7 +433,7 @@ static void DrawVertexLitGeneric_DX9_Internal( CBaseVSShader *pShader, IMaterial
bool bHasVertexAlpha = bVertexLitGeneric ? false : IS_FLAG_SET( MATERIAL_VAR_VERTEXALPHA ); bool bHasVertexAlpha = bVertexLitGeneric ? false : IS_FLAG_SET( MATERIAL_VAR_VERTEXALPHA );
/*^*/ // printf("\t\t[%d] bHasVertexColor\n",(int)bHasVertexColor); /*^*/ // printf("\t\t[%d] bHasVertexColor\n",(int)bHasVertexColor);
/*^*/ // printf("\t\t[%d] bHasVertexAlpha\n",(int)bHasVertexAlpha); /*^*/ // printf("\t\t[%d] bHasVertexAlpha\n",(int)bHasVertexAlpha);
if ( pShader->IsSnapshotting() || (! pContextData ) || ( pContextData->m_bMaterialVarsChanged ) ) if ( pShader->IsSnapshotting() || (! pContextData ) || ( pContextData->m_bMaterialVarsChanged ) )
{ {
/*^*/ // printf("\t\t[1] snapshotting=%d pContextData=%08x pContextData->m_bMaterialVarsChanged=%d \n",(int)pShader->IsSnapshotting(), (int)pContextData, pContextData ? (int)pContextData->m_bMaterialVarsChanged : -1 ); /*^*/ // printf("\t\t[1] snapshotting=%d pContextData=%08x pContextData->m_bMaterialVarsChanged=%d \n",(int)pShader->IsSnapshotting(), (int)pContextData, pContextData ? (int)pContextData->m_bMaterialVarsChanged : -1 );
@ -622,6 +624,11 @@ static void DrawVertexLitGeneric_DX9_Internal( CBaseVSShader *pShader, IMaterial
pShaderShadow->EnableTexture( SHADER_SAMPLER11, true ); // self illum mask pShaderShadow->EnableTexture( SHADER_SAMPLER11, true ); // self illum mask
} }
// Always enable this sampler, used for lightmaps depending on the dynamic combo.
// Lightmaps are generated in gamma space, but not sRGB, so leave that disabled. Conversion is done in the shader.
pShaderShadow->EnableTexture( SHADER_SAMPLER12, true );
bool bSRGBWrite = true; bool bSRGBWrite = true;
if( (info.m_nLinearWrite != -1) && (params[info.m_nLinearWrite]->GetIntValue() == 1) ) if( (info.m_nLinearWrite != -1) && (params[info.m_nLinearWrite]->GetIntValue() == 1) )
{ {
@ -1188,12 +1195,32 @@ static void DrawVertexLitGeneric_DX9_Internal( CBaseVSShader *pShader, IMaterial
// Set up light combo state // Set up light combo state
LightState_t lightState = {0, false, false}; LightState_t lightState = { 0, false, false, false };
if ( bVertexLitGeneric && (!bHasFlashlight || IsX360() ) ) if ( bVertexLitGeneric && (!bHasFlashlight || IsX360() ) )
{ {
pShaderAPI->GetDX9LightState( &lightState ); pShaderAPI->GetDX9LightState( &lightState );
} }
// Override the lighting desired if we have a lightmap set!
if ( bHasLightmapTexture )
{
lightState.m_bStaticLightVertex = false;
lightState.m_bStaticLightTexel = true;
// Usual case, not debugging.
if (!bHasMatLuxel)
{
pShader->BindTexture(SHADER_SAMPLER12, info.m_nLightmap);
}
else
{
float dimensions[] = { 0.0f, 0.0f, 0.0f, 0.0f };
DynamicCmdsOut.BindStandardTexture( SHADER_SAMPLER12, TEXTURE_DEBUG_LUXELS );
pShader->GetTextureDimensions( &dimensions[0], &dimensions[1], info.m_nLightmap );
DynamicCmdsOut.SetPixelShaderConstant( 11, dimensions, 1 );
}
}
MaterialFogMode_t fogType = pShaderAPI->GetSceneFogMode(); MaterialFogMode_t fogType = pShaderAPI->GetSceneFogMode();
int fogIndex = ( fogType == MATERIAL_FOG_LINEAR_BELOW_FOG_Z ) ? 1 : 0; int fogIndex = ( fogType == MATERIAL_FOG_LINEAR_BELOW_FOG_Z ) ? 1 : 0;
int numBones = pShaderAPI->GetCurrentNumBones(); int numBones = pShaderAPI->GetCurrentNumBones();
@ -1277,7 +1304,7 @@ static void DrawVertexLitGeneric_DX9_Internal( CBaseVSShader *pShader, IMaterial
if ( bAmbientOnly ) // Override selected light combo to be ambient only if ( bAmbientOnly ) // Override selected light combo to be ambient only
{ {
lightState.m_bAmbientLight = true; lightState.m_bAmbientLight = true;
lightState.m_bStaticLight = false; lightState.m_bStaticLightVertex = false;
lightState.m_nNumLights = 0; lightState.m_nNumLights = 0;
} }
@ -1289,7 +1316,8 @@ static void DrawVertexLitGeneric_DX9_Internal( CBaseVSShader *pShader, IMaterial
DECLARE_DYNAMIC_VERTEX_SHADER( vertexlit_and_unlit_generic_vs20 ); DECLARE_DYNAMIC_VERTEX_SHADER( vertexlit_and_unlit_generic_vs20 );
SET_DYNAMIC_VERTEX_SHADER_COMBO( DYNAMIC_LIGHT, lightState.HasDynamicLight() ); SET_DYNAMIC_VERTEX_SHADER_COMBO( DYNAMIC_LIGHT, lightState.HasDynamicLight() );
SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT, lightState.m_bStaticLight ? 1 : 0 ); SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT_VERTEX, lightState.m_bStaticLightVertex ? 1 : 0 );
SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT_LIGHTMAP, lightState.m_bStaticLightTexel ? 1 : 0);
SET_DYNAMIC_VERTEX_SHADER_COMBO( DOWATERFOG, fogIndex ); SET_DYNAMIC_VERTEX_SHADER_COMBO( DOWATERFOG, fogIndex );
SET_DYNAMIC_VERTEX_SHADER_COMBO( SKINNING, numBones > 0 ); SET_DYNAMIC_VERTEX_SHADER_COMBO( SKINNING, numBones > 0 );
SET_DYNAMIC_VERTEX_SHADER_COMBO( SET_DYNAMIC_VERTEX_SHADER_COMBO(
@ -1306,6 +1334,8 @@ static void DrawVertexLitGeneric_DX9_Internal( CBaseVSShader *pShader, IMaterial
// SET_DYNAMIC_PIXEL_SHADER_COMBO( PIXELFOGTYPE, pShaderAPI->GetPixelFogCombo() ); // SET_DYNAMIC_PIXEL_SHADER_COMBO( PIXELFOGTYPE, pShaderAPI->GetPixelFogCombo() );
SET_DYNAMIC_PIXEL_SHADER_COMBO( FLASHLIGHTSHADOWS, bFlashlightShadows ); SET_DYNAMIC_PIXEL_SHADER_COMBO( FLASHLIGHTSHADOWS, bFlashlightShadows );
SET_DYNAMIC_PIXEL_SHADER_COMBO( STATIC_LIGHT_LIGHTMAP, lightState.m_bStaticLightTexel ? 1 : 0 );
SET_DYNAMIC_PIXEL_SHADER_COMBO( DEBUG_LUXELS, bHasMatLuxel ? 1 : 0 );
SET_DYNAMIC_PIXEL_SHADER_COMBO( SET_DYNAMIC_PIXEL_SHADER_COMBO(
LIGHTING_PREVIEW, LIGHTING_PREVIEW,
pShaderAPI->GetIntRenderingParameter(INT_RENDERPARM_ENABLE_FIXED_LIGHTING) ); pShaderAPI->GetIntRenderingParameter(INT_RENDERPARM_ENABLE_FIXED_LIGHTING) );
@ -1315,6 +1345,7 @@ static void DrawVertexLitGeneric_DX9_Internal( CBaseVSShader *pShader, IMaterial
{ {
DECLARE_DYNAMIC_PIXEL_SHADER( vertexlit_and_unlit_generic_ps20 ); DECLARE_DYNAMIC_PIXEL_SHADER( vertexlit_and_unlit_generic_ps20 );
SET_DYNAMIC_PIXEL_SHADER_COMBO( PIXELFOGTYPE, pShaderAPI->GetPixelFogCombo() ); SET_DYNAMIC_PIXEL_SHADER_COMBO( PIXELFOGTYPE, pShaderAPI->GetPixelFogCombo() );
SET_DYNAMIC_PIXEL_SHADER_COMBO( STATIC_LIGHT_LIGHTMAP, lightState.m_bStaticLightTexel ? 1 : 0 );
SET_DYNAMIC_PIXEL_SHADER_COMBO( SET_DYNAMIC_PIXEL_SHADER_COMBO(
LIGHTING_PREVIEW, LIGHTING_PREVIEW,
pShaderAPI->GetIntRenderingParameter(INT_RENDERPARM_ENABLE_FIXED_LIGHTING) ); pShaderAPI->GetIntRenderingParameter(INT_RENDERPARM_ENABLE_FIXED_LIGHTING) );
@ -1328,7 +1359,8 @@ static void DrawVertexLitGeneric_DX9_Internal( CBaseVSShader *pShader, IMaterial
DECLARE_DYNAMIC_VERTEX_SHADER( vertexlit_and_unlit_generic_vs30 ); DECLARE_DYNAMIC_VERTEX_SHADER( vertexlit_and_unlit_generic_vs30 );
SET_DYNAMIC_VERTEX_SHADER_COMBO( DYNAMIC_LIGHT, lightState.HasDynamicLight() ); SET_DYNAMIC_VERTEX_SHADER_COMBO( DYNAMIC_LIGHT, lightState.HasDynamicLight() );
SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT, lightState.m_bStaticLight ? 1 : 0 ); SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT_VERTEX, lightState.m_bStaticLightVertex ? 1 : 0 );
SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT_LIGHTMAP, lightState.m_bStaticLightTexel ? 1 : 0 );
SET_DYNAMIC_VERTEX_SHADER_COMBO( DOWATERFOG, fogIndex ); SET_DYNAMIC_VERTEX_SHADER_COMBO( DOWATERFOG, fogIndex );
SET_DYNAMIC_VERTEX_SHADER_COMBO( SKINNING, numBones > 0 ); SET_DYNAMIC_VERTEX_SHADER_COMBO( SKINNING, numBones > 0 );
SET_DYNAMIC_VERTEX_SHADER_COMBO( LIGHTING_PREVIEW, SET_DYNAMIC_VERTEX_SHADER_COMBO( LIGHTING_PREVIEW,
@ -1340,6 +1372,8 @@ static void DrawVertexLitGeneric_DX9_Internal( CBaseVSShader *pShader, IMaterial
DECLARE_DYNAMIC_PIXEL_SHADER( vertexlit_and_unlit_generic_ps30 ); DECLARE_DYNAMIC_PIXEL_SHADER( vertexlit_and_unlit_generic_ps30 );
// SET_DYNAMIC_PIXEL_SHADER_COMBO( PIXELFOGTYPE, pShaderAPI->GetPixelFogCombo() ); // SET_DYNAMIC_PIXEL_SHADER_COMBO( PIXELFOGTYPE, pShaderAPI->GetPixelFogCombo() );
SET_DYNAMIC_PIXEL_SHADER_COMBO( FLASHLIGHTSHADOWS, bFlashlightShadows ); SET_DYNAMIC_PIXEL_SHADER_COMBO( FLASHLIGHTSHADOWS, bFlashlightShadows );
SET_DYNAMIC_PIXEL_SHADER_COMBO( STATIC_LIGHT_LIGHTMAP, lightState.m_bStaticLightTexel ? 1 : 0 );
SET_DYNAMIC_PIXEL_SHADER_COMBO( DEBUG_LUXELS, bHasMatLuxel ? 1 : 0 );
SET_DYNAMIC_PIXEL_SHADER_COMBO( LIGHTING_PREVIEW, SET_DYNAMIC_PIXEL_SHADER_COMBO( LIGHTING_PREVIEW,
pShaderAPI->GetIntRenderingParameter(INT_RENDERPARM_ENABLE_FIXED_LIGHTING) ); pShaderAPI->GetIntRenderingParameter(INT_RENDERPARM_ENABLE_FIXED_LIGHTING) );
SET_DYNAMIC_PIXEL_SHADER_CMD( DynamicCmdsOut, vertexlit_and_unlit_generic_ps30 ); SET_DYNAMIC_PIXEL_SHADER_CMD( DynamicCmdsOut, vertexlit_and_unlit_generic_ps30 );

View file

@ -54,6 +54,7 @@ struct VertexLitGeneric_DX9_Vars_t
int m_nFlashlightNoLambert; int m_nFlashlightNoLambert;
int m_nFlashlightTexture; int m_nFlashlightTexture;
int m_nFlashlightTextureFrame; int m_nFlashlightTextureFrame;
int m_nLightmap;
int m_nSelfIllumTint; int m_nSelfIllumTint;
int m_nSelfIllumFresnel; int m_nSelfIllumFresnel;
@ -67,6 +68,7 @@ struct VertexLitGeneric_DX9_Vars_t
int m_nPhongWarpTexture; int m_nPhongWarpTexture;
int m_nPhongBoost; int m_nPhongBoost;
int m_nPhongFresnelRanges; int m_nPhongFresnelRanges;
int m_nPhongExponentFactor;
int m_nSelfIllumEnvMapMask_Alpha; int m_nSelfIllumEnvMapMask_Alpha;
int m_nAmbientOnly; int m_nAmbientOnly;
int m_nHDRColorScale; int m_nHDRColorScale;
@ -130,7 +132,6 @@ struct VertexLitGeneric_DX9_Vars_t
int m_nBlendTintByBaseAlpha; int m_nBlendTintByBaseAlpha;
int m_nTintReplacesBaseColor; int m_nTintReplacesBaseColor;
}; };
void InitParamsVertexLitGeneric_DX9( CBaseVSShader *pShader, IMaterialVar** params, const char *pMaterialName, bool bVertexLitGeneric, VertexLitGeneric_DX9_Vars_t &info ); void InitParamsVertexLitGeneric_DX9( CBaseVSShader *pShader, IMaterialVar** params, const char *pMaterialName, bool bVertexLitGeneric, VertexLitGeneric_DX9_Vars_t &info );

View file

@ -225,17 +225,6 @@ BEGIN_VS_SHADER( Water_DX90,
Vector4D Scroll1; Vector4D Scroll1;
params[SCROLL1]->GetVecValue( Scroll1.Base(), 4 ); params[SCROLL1]->GetVecValue( Scroll1.Base(), 4 );
NormalDecodeMode_t nNormalDecodeMode = NORMAL_DECODE_NONE;
if ( params[NORMALMAP]->IsTexture() && g_pHardwareConfig->SupportsNormalMapCompression() )
{
ITexture *pNormalMap = params[NORMALMAP]->GetTextureValue();
if ( pNormalMap )
{
// Clamp this to 0 or 1 since that's how we've authored the water shader (i.e. no separate alpha map/channel)
nNormalDecodeMode = pNormalMap->GetNormalDecodeMode() == NORMAL_DECODE_NONE ? NORMAL_DECODE_NONE : NORMAL_DECODE_ATI2N;
}
}
DECLARE_STATIC_VERTEX_SHADER( water_vs20 ); DECLARE_STATIC_VERTEX_SHADER( water_vs20 );
SET_STATIC_VERTEX_SHADER_COMBO( MULTITEXTURE,fabs(Scroll1.x) > 0.0); SET_STATIC_VERTEX_SHADER_COMBO( MULTITEXTURE,fabs(Scroll1.x) > 0.0);
SET_STATIC_VERTEX_SHADER_COMBO( BASETEXTURE, params[BASETEXTURE]->IsTexture() ); SET_STATIC_VERTEX_SHADER_COMBO( BASETEXTURE, params[BASETEXTURE]->IsTexture() );
@ -253,7 +242,7 @@ BEGIN_VS_SHADER( Water_DX90,
SET_STATIC_PIXEL_SHADER_COMBO( MULTITEXTURE,fabs(Scroll1.x) > 0.0); SET_STATIC_PIXEL_SHADER_COMBO( MULTITEXTURE,fabs(Scroll1.x) > 0.0);
SET_STATIC_PIXEL_SHADER_COMBO( BASETEXTURE, params[BASETEXTURE]->IsTexture() ); SET_STATIC_PIXEL_SHADER_COMBO( BASETEXTURE, params[BASETEXTURE]->IsTexture() );
SET_STATIC_PIXEL_SHADER_COMBO( BLURRY_REFRACT, params[BLURREFRACT]->GetIntValue() ); SET_STATIC_PIXEL_SHADER_COMBO( BLURRY_REFRACT, params[BLURREFRACT]->GetIntValue() );
SET_STATIC_PIXEL_SHADER_COMBO( NORMAL_DECODE_MODE, (int) nNormalDecodeMode ); SET_STATIC_PIXEL_SHADER_COMBO( NORMAL_DECODE_MODE, (int) NORMAL_DECODE_NONE );
SET_STATIC_PIXEL_SHADER( water_ps20b ); SET_STATIC_PIXEL_SHADER( water_ps20b );
} }
else else
@ -264,7 +253,7 @@ BEGIN_VS_SHADER( Water_DX90,
SET_STATIC_PIXEL_SHADER_COMBO( ABOVEWATER, params[ABOVEWATER]->GetIntValue() ); SET_STATIC_PIXEL_SHADER_COMBO( ABOVEWATER, params[ABOVEWATER]->GetIntValue() );
SET_STATIC_PIXEL_SHADER_COMBO( MULTITEXTURE,fabs(Scroll1.x) > 0.0); SET_STATIC_PIXEL_SHADER_COMBO( MULTITEXTURE,fabs(Scroll1.x) > 0.0);
SET_STATIC_PIXEL_SHADER_COMBO( BASETEXTURE, params[BASETEXTURE]->IsTexture() ); SET_STATIC_PIXEL_SHADER_COMBO( BASETEXTURE, params[BASETEXTURE]->IsTexture() );
SET_STATIC_PIXEL_SHADER_COMBO( NORMAL_DECODE_MODE, (int) nNormalDecodeMode ); SET_STATIC_PIXEL_SHADER_COMBO( NORMAL_DECODE_MODE, (int) NORMAL_DECODE_NONE );
SET_STATIC_PIXEL_SHADER( water_ps20 ); SET_STATIC_PIXEL_SHADER( water_ps20 );
} }
@ -419,17 +408,6 @@ BEGIN_VS_SHADER( Water_DX90,
int fmt = VERTEX_POSITION | VERTEX_NORMAL | VERTEX_TANGENT_S | VERTEX_TANGENT_T; int fmt = VERTEX_POSITION | VERTEX_NORMAL | VERTEX_TANGENT_S | VERTEX_TANGENT_T;
pShaderShadow->VertexShaderVertexFormat( fmt, 1, 0, 0 ); pShaderShadow->VertexShaderVertexFormat( fmt, 1, 0, 0 );
NormalDecodeMode_t nNormalDecodeMode = NORMAL_DECODE_NONE;
if ( params[NORMALMAP]->IsTexture() && g_pHardwareConfig->SupportsNormalMapCompression() )
{
ITexture *pNormalMap = params[NORMALMAP]->GetTextureValue();
if ( pNormalMap )
{
// Clamp this to 0 or 1 since that's how we've authored the water shader (i.e. no separate alpha map/channel)
nNormalDecodeMode = pNormalMap->GetNormalDecodeMode() == NORMAL_DECODE_NONE ? NORMAL_DECODE_NONE : NORMAL_DECODE_ATI2N;
}
}
DECLARE_STATIC_VERTEX_SHADER( watercheap_vs20 ); DECLARE_STATIC_VERTEX_SHADER( watercheap_vs20 );
SET_STATIC_VERTEX_SHADER_COMBO( BLEND, bBlend && bRefraction ); SET_STATIC_VERTEX_SHADER_COMBO( BLEND, bBlend && bRefraction );
SET_STATIC_VERTEX_SHADER( watercheap_vs20 ); SET_STATIC_VERTEX_SHADER( watercheap_vs20 );
@ -444,7 +422,7 @@ BEGIN_VS_SHADER( Water_DX90,
Vector4D Scroll1; Vector4D Scroll1;
params[SCROLL1]->GetVecValue( Scroll1.Base(), 4 ); params[SCROLL1]->GetVecValue( Scroll1.Base(), 4 );
SET_STATIC_PIXEL_SHADER_COMBO( MULTITEXTURE,fabs(Scroll1.x) > 0.0); SET_STATIC_PIXEL_SHADER_COMBO( MULTITEXTURE,fabs(Scroll1.x) > 0.0);
SET_STATIC_PIXEL_SHADER_COMBO( NORMAL_DECODE_MODE, (int) nNormalDecodeMode ); SET_STATIC_PIXEL_SHADER_COMBO( NORMAL_DECODE_MODE, (int) NORMAL_DECODE_NONE );
SET_STATIC_PIXEL_SHADER( watercheap_ps20b ); SET_STATIC_PIXEL_SHADER( watercheap_ps20b );
} }
else else
@ -457,7 +435,7 @@ BEGIN_VS_SHADER( Water_DX90,
Vector4D Scroll1; Vector4D Scroll1;
params[SCROLL1]->GetVecValue( Scroll1.Base(), 4 ); params[SCROLL1]->GetVecValue( Scroll1.Base(), 4 );
SET_STATIC_PIXEL_SHADER_COMBO( MULTITEXTURE,fabs(Scroll1.x) > 0.0); SET_STATIC_PIXEL_SHADER_COMBO( MULTITEXTURE,fabs(Scroll1.x) > 0.0);
SET_STATIC_PIXEL_SHADER_COMBO( NORMAL_DECODE_MODE, (int) nNormalDecodeMode ); SET_STATIC_PIXEL_SHADER_COMBO( NORMAL_DECODE_MODE, (int) NORMAL_DECODE_NONE );
SET_STATIC_PIXEL_SHADER( watercheap_ps20 ); SET_STATIC_PIXEL_SHADER( watercheap_ps20 );
} }
@ -488,9 +466,9 @@ BEGIN_VS_SHADER( Water_DX90,
float cheapWaterEndDistance = params[CHEAPWATERENDDISTANCE]->GetFloatValue(); float cheapWaterEndDistance = params[CHEAPWATERENDDISTANCE]->GetFloatValue();
float cheapWaterParams[4] = float cheapWaterParams[4] =
{ {
cheapWaterStartDistance * VSHADER_VECT_SCALE, (float)(cheapWaterStartDistance * VSHADER_VECT_SCALE),
cheapWaterEndDistance * VSHADER_VECT_SCALE, (float)(cheapWaterEndDistance * VSHADER_VECT_SCALE),
PSHADER_VECT_SCALE / ( cheapWaterEndDistance - cheapWaterStartDistance ), (float)(PSHADER_VECT_SCALE / ( cheapWaterEndDistance - cheapWaterStartDistance )),
cheapWaterStartDistance / ( cheapWaterEndDistance - cheapWaterStartDistance ), cheapWaterStartDistance / ( cheapWaterEndDistance - cheapWaterStartDistance ),
}; };
pShaderAPI->SetPixelShaderConstant( 1, cheapWaterParams ); pShaderAPI->SetPixelShaderConstant( 1, cheapWaterParams );