mirror of
https://github.com/celisej567/source-sdk-2013.git
synced 2026-09-17 20:10:21 +03:00
Merged dev changes 10/24/2019
- Applied the nexttoken security fix (suggested by ficool2, important for MP port, no #ifdef MAPBASE because of volume of changes and irrelevance to readers) - Fixed a crash with the follower wait point start/stop using handlers - Fixed game_ui activator crash - Changed vphysics triggers to accept more entities - Fixed player squadmates not obeying hint node facing (e.g. wait points) - Fixed npc_snipers - prop_vehicle_jeep_old no longer changes classname - Restored and added the other CTakeDamageInfo fields for point_damageinfo - Fixed game_metadata not saving correctly - Fixed logic_measure_movement not functioning while possessing spawnflags - Added scripts/mapbase_rpc.txt script with choosable app ID and game image - Fixed some casing that broke Linux support - Added proper WorldVertexTransition blending to translucency and selfillum (translucency may need the translucent texture to be $basetexture, not $basetexture2) - Added modified parallax corrected cubemaps to shader code (although currently unusable) - Fixed Variant_ParseInput - Added/restored custom scanner speed (experimental, needs more work) - Several miscellaneous code changes/fixes and comment adjustments
This commit is contained in:
@@ -12,7 +12,7 @@
|
||||
// STATIC: "BASETEXTURENOENVMAP" "0..1"
|
||||
// STATIC: "BASETEXTURE2NOENVMAP" "0..1"
|
||||
// STATIC: "WARPLIGHTING" "0..1"
|
||||
// STATIC: "FANCY_BLENDING" "0..2"
|
||||
// STATIC: "FANCY_BLENDING" "0..1"
|
||||
// STATIC: "RELIEF_MAPPING" "0..0" [ps20b]
|
||||
// STATIC: "SEAMLESS" "0..1"
|
||||
// STATIC: "NORMAL_DECODE_MODE" "0..0" [XBOX]
|
||||
@@ -22,6 +22,8 @@
|
||||
// STATIC: "DETAIL_BLEND_MODE" "0..11"
|
||||
// STATIC: "FLASHLIGHT" "0..1" [ps20b] [XBOX]
|
||||
// STATIC: "BASETEXTURETRANSFORM2" "0..1"
|
||||
// STATIC: "SWAP_VERTEX_BLEND" "0..1"
|
||||
// STATIC: "PARALLAXCORRECT" "0..1"
|
||||
|
||||
// DYNAMIC: "FASTPATHENVMAPCONTRAST" "0..1"
|
||||
// DYNAMIC: "FASTPATH" "0..1"
|
||||
@@ -43,5 +45,7 @@
|
||||
// SKIP ($DETAIL_BLEND_MODE == 10 )
|
||||
// SKIP ($DETAIL_BLEND_MODE == 11 )
|
||||
|
||||
// SKIP: $PARALLAXCORRECT && !$CUBEMAP
|
||||
|
||||
#include "lightmappedgeneric_ps2_3_x.h"
|
||||
|
||||
|
||||
@@ -303,7 +303,7 @@ private:
|
||||
public:
|
||||
void SetFANCY_BLENDING( int i )
|
||||
{
|
||||
Assert( i >= 0 && i <= 2 );
|
||||
Assert( i >= 0 && i <= 1 );
|
||||
m_nFANCY_BLENDING = i;
|
||||
#ifdef _DEBUG
|
||||
m_bFANCY_BLENDING = true;
|
||||
@@ -442,6 +442,48 @@ public:
|
||||
m_bBASETEXTURETRANSFORM2 = true;
|
||||
#endif
|
||||
}
|
||||
private:
|
||||
int m_nSWAP_VERTEX_BLEND;
|
||||
#ifdef _DEBUG
|
||||
bool m_bSWAP_VERTEX_BLEND;
|
||||
#endif
|
||||
public:
|
||||
void SetSWAP_VERTEX_BLEND( int i )
|
||||
{
|
||||
Assert( i >= 0 && i <= 1 );
|
||||
m_nSWAP_VERTEX_BLEND = i;
|
||||
#ifdef _DEBUG
|
||||
m_bSWAP_VERTEX_BLEND = true;
|
||||
#endif
|
||||
}
|
||||
void SetSWAP_VERTEX_BLEND( bool i )
|
||||
{
|
||||
m_nSWAP_VERTEX_BLEND = i ? 1 : 0;
|
||||
#ifdef _DEBUG
|
||||
m_bSWAP_VERTEX_BLEND = true;
|
||||
#endif
|
||||
}
|
||||
private:
|
||||
int m_nPARALLAXCORRECT;
|
||||
#ifdef _DEBUG
|
||||
bool m_bPARALLAXCORRECT;
|
||||
#endif
|
||||
public:
|
||||
void SetPARALLAXCORRECT( int i )
|
||||
{
|
||||
Assert( i >= 0 && i <= 1 );
|
||||
m_nPARALLAXCORRECT = i;
|
||||
#ifdef _DEBUG
|
||||
m_bPARALLAXCORRECT = true;
|
||||
#endif
|
||||
}
|
||||
void SetPARALLAXCORRECT( bool i )
|
||||
{
|
||||
m_nPARALLAXCORRECT = i ? 1 : 0;
|
||||
#ifdef _DEBUG
|
||||
m_bPARALLAXCORRECT = true;
|
||||
#endif
|
||||
}
|
||||
public:
|
||||
sdk_lightmappedgeneric_ps20b_Static_Index( )
|
||||
{
|
||||
@@ -529,19 +571,27 @@ public:
|
||||
m_bBASETEXTURETRANSFORM2 = false;
|
||||
#endif // _DEBUG
|
||||
m_nBASETEXTURETRANSFORM2 = 0;
|
||||
#ifdef _DEBUG
|
||||
m_bSWAP_VERTEX_BLEND = false;
|
||||
#endif // _DEBUG
|
||||
m_nSWAP_VERTEX_BLEND = 0;
|
||||
#ifdef _DEBUG
|
||||
m_bPARALLAXCORRECT = false;
|
||||
#endif // _DEBUG
|
||||
m_nPARALLAXCORRECT = 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_bMASKEDBLENDING && m_bBASETEXTURE2 && m_bDETAILTEXTURE && m_bBUMPMAP && m_bBUMPMAP2 && m_bCUBEMAP && m_bENVMAPMASK && m_bBASEALPHAENVMAPMASK && m_bSELFILLUM && m_bNORMALMAPALPHAENVMAPMASK && m_bDIFFUSEBUMPMAP && m_bBASETEXTURENOENVMAP && m_bBASETEXTURE2NOENVMAP && m_bWARPLIGHTING && m_bFANCY_BLENDING && m_bRELIEF_MAPPING && m_bSEAMLESS && m_bNORMAL_DECODE_MODE && m_bNORMALMASK_DECODE_MODE && m_bDETAIL_BLEND_MODE && m_bBASETEXTURETRANSFORM2;
|
||||
bool bAllStaticVarsDefined = m_bMASKEDBLENDING && m_bBASETEXTURE2 && m_bDETAILTEXTURE && m_bBUMPMAP && m_bBUMPMAP2 && m_bCUBEMAP && m_bENVMAPMASK && m_bBASEALPHAENVMAPMASK && m_bSELFILLUM && m_bNORMALMAPALPHAENVMAPMASK && m_bDIFFUSEBUMPMAP && m_bBASETEXTURENOENVMAP && m_bBASETEXTURE2NOENVMAP && m_bWARPLIGHTING && m_bFANCY_BLENDING && m_bRELIEF_MAPPING && m_bSEAMLESS && m_bNORMAL_DECODE_MODE && m_bNORMALMASK_DECODE_MODE && m_bDETAIL_BLEND_MODE && m_bBASETEXTURETRANSFORM2 && m_bSWAP_VERTEX_BLEND && m_bPARALLAXCORRECT;
|
||||
Assert( bAllStaticVarsDefined );
|
||||
#endif // _DEBUG
|
||||
return ( 96 * m_nMASKEDBLENDING ) + ( 192 * m_nBASETEXTURE2 ) + ( 384 * m_nDETAILTEXTURE ) + ( 768 * m_nBUMPMAP ) + ( 2304 * m_nBUMPMAP2 ) + ( 4608 * m_nCUBEMAP ) + ( 9216 * m_nENVMAPMASK ) + ( 18432 * m_nBASEALPHAENVMAPMASK ) + ( 36864 * m_nSELFILLUM ) + ( 73728 * m_nNORMALMAPALPHAENVMAPMASK ) + ( 147456 * m_nDIFFUSEBUMPMAP ) + ( 294912 * m_nBASETEXTURENOENVMAP ) + ( 589824 * m_nBASETEXTURE2NOENVMAP ) + ( 1179648 * m_nWARPLIGHTING ) + ( 2359296 * m_nFANCY_BLENDING ) + ( 7077888 * m_nRELIEF_MAPPING ) + ( 7077888 * m_nSEAMLESS ) + ( 14155776 * m_nNORMAL_DECODE_MODE ) + ( 14155776 * m_nNORMALMASK_DECODE_MODE ) + ( 14155776 * m_nDETAIL_BLEND_MODE ) + ( 169869312 * m_nBASETEXTURETRANSFORM2 ) + 0;
|
||||
return ( 96 * m_nMASKEDBLENDING ) + ( 192 * m_nBASETEXTURE2 ) + ( 384 * m_nDETAILTEXTURE ) + ( 768 * m_nBUMPMAP ) + ( 2304 * m_nBUMPMAP2 ) + ( 4608 * m_nCUBEMAP ) + ( 9216 * m_nENVMAPMASK ) + ( 18432 * m_nBASEALPHAENVMAPMASK ) + ( 36864 * m_nSELFILLUM ) + ( 73728 * m_nNORMALMAPALPHAENVMAPMASK ) + ( 147456 * m_nDIFFUSEBUMPMAP ) + ( 294912 * m_nBASETEXTURENOENVMAP ) + ( 589824 * m_nBASETEXTURE2NOENVMAP ) + ( 1179648 * m_nWARPLIGHTING ) + ( 2359296 * m_nFANCY_BLENDING ) + ( 4718592 * m_nRELIEF_MAPPING ) + ( 4718592 * m_nSEAMLESS ) + ( 9437184 * m_nNORMAL_DECODE_MODE ) + ( 9437184 * m_nNORMALMASK_DECODE_MODE ) + ( 9437184 * m_nDETAIL_BLEND_MODE ) + ( 113246208 * m_nBASETEXTURETRANSFORM2 ) + ( 226492416 * m_nSWAP_VERTEX_BLEND ) + ( 452984832 * m_nPARALLAXCORRECT ) + 0;
|
||||
}
|
||||
};
|
||||
#define shaderStaticTest_sdk_lightmappedgeneric_ps20b psh_forgot_to_set_static_MASKEDBLENDING + psh_forgot_to_set_static_BASETEXTURE2 + psh_forgot_to_set_static_DETAILTEXTURE + psh_forgot_to_set_static_BUMPMAP + psh_forgot_to_set_static_BUMPMAP2 + psh_forgot_to_set_static_CUBEMAP + psh_forgot_to_set_static_ENVMAPMASK + psh_forgot_to_set_static_BASEALPHAENVMAPMASK + psh_forgot_to_set_static_SELFILLUM + psh_forgot_to_set_static_NORMALMAPALPHAENVMAPMASK + psh_forgot_to_set_static_DIFFUSEBUMPMAP + psh_forgot_to_set_static_BASETEXTURENOENVMAP + psh_forgot_to_set_static_BASETEXTURE2NOENVMAP + psh_forgot_to_set_static_WARPLIGHTING + psh_forgot_to_set_static_FANCY_BLENDING + psh_forgot_to_set_static_RELIEF_MAPPING + psh_forgot_to_set_static_SEAMLESS + psh_forgot_to_set_static_NORMAL_DECODE_MODE + psh_forgot_to_set_static_NORMALMASK_DECODE_MODE + psh_forgot_to_set_static_DETAIL_BLEND_MODE + psh_forgot_to_set_static_BASETEXTURETRANSFORM2 + 0
|
||||
#define shaderStaticTest_sdk_lightmappedgeneric_ps20b psh_forgot_to_set_static_MASKEDBLENDING + psh_forgot_to_set_static_BASETEXTURE2 + psh_forgot_to_set_static_DETAILTEXTURE + psh_forgot_to_set_static_BUMPMAP + psh_forgot_to_set_static_BUMPMAP2 + psh_forgot_to_set_static_CUBEMAP + psh_forgot_to_set_static_ENVMAPMASK + psh_forgot_to_set_static_BASEALPHAENVMAPMASK + psh_forgot_to_set_static_SELFILLUM + psh_forgot_to_set_static_NORMALMAPALPHAENVMAPMASK + psh_forgot_to_set_static_DIFFUSEBUMPMAP + psh_forgot_to_set_static_BASETEXTURENOENVMAP + psh_forgot_to_set_static_BASETEXTURE2NOENVMAP + psh_forgot_to_set_static_WARPLIGHTING + psh_forgot_to_set_static_FANCY_BLENDING + psh_forgot_to_set_static_RELIEF_MAPPING + psh_forgot_to_set_static_SEAMLESS + psh_forgot_to_set_static_NORMAL_DECODE_MODE + psh_forgot_to_set_static_NORMALMASK_DECODE_MODE + psh_forgot_to_set_static_DETAIL_BLEND_MODE + psh_forgot_to_set_static_BASETEXTURETRANSFORM2 + psh_forgot_to_set_static_SWAP_VERTEX_BLEND + psh_forgot_to_set_static_PARALLAXCORRECT + 0
|
||||
class sdk_lightmappedgeneric_ps20b_Dynamic_Index
|
||||
{
|
||||
private:
|
||||
|
||||
@@ -303,7 +303,7 @@ private:
|
||||
public:
|
||||
void SetFANCY_BLENDING( int i )
|
||||
{
|
||||
Assert( i >= 0 && i <= 2 );
|
||||
Assert( i >= 0 && i <= 1 );
|
||||
m_nFANCY_BLENDING = i;
|
||||
#ifdef _DEBUG
|
||||
m_bFANCY_BLENDING = true;
|
||||
@@ -421,6 +421,48 @@ public:
|
||||
m_bBASETEXTURETRANSFORM2 = true;
|
||||
#endif
|
||||
}
|
||||
private:
|
||||
int m_nSWAP_VERTEX_BLEND;
|
||||
#ifdef _DEBUG
|
||||
bool m_bSWAP_VERTEX_BLEND;
|
||||
#endif
|
||||
public:
|
||||
void SetSWAP_VERTEX_BLEND( int i )
|
||||
{
|
||||
Assert( i >= 0 && i <= 1 );
|
||||
m_nSWAP_VERTEX_BLEND = i;
|
||||
#ifdef _DEBUG
|
||||
m_bSWAP_VERTEX_BLEND = true;
|
||||
#endif
|
||||
}
|
||||
void SetSWAP_VERTEX_BLEND( bool i )
|
||||
{
|
||||
m_nSWAP_VERTEX_BLEND = i ? 1 : 0;
|
||||
#ifdef _DEBUG
|
||||
m_bSWAP_VERTEX_BLEND = true;
|
||||
#endif
|
||||
}
|
||||
private:
|
||||
int m_nPARALLAXCORRECT;
|
||||
#ifdef _DEBUG
|
||||
bool m_bPARALLAXCORRECT;
|
||||
#endif
|
||||
public:
|
||||
void SetPARALLAXCORRECT( int i )
|
||||
{
|
||||
Assert( i >= 0 && i <= 1 );
|
||||
m_nPARALLAXCORRECT = i;
|
||||
#ifdef _DEBUG
|
||||
m_bPARALLAXCORRECT = true;
|
||||
#endif
|
||||
}
|
||||
void SetPARALLAXCORRECT( bool i )
|
||||
{
|
||||
m_nPARALLAXCORRECT = i ? 1 : 0;
|
||||
#ifdef _DEBUG
|
||||
m_bPARALLAXCORRECT = true;
|
||||
#endif
|
||||
}
|
||||
public:
|
||||
sdk_lightmappedgeneric_ps30_Static_Index( )
|
||||
{
|
||||
@@ -504,19 +546,27 @@ public:
|
||||
m_bBASETEXTURETRANSFORM2 = false;
|
||||
#endif // _DEBUG
|
||||
m_nBASETEXTURETRANSFORM2 = 0;
|
||||
#ifdef _DEBUG
|
||||
m_bSWAP_VERTEX_BLEND = false;
|
||||
#endif // _DEBUG
|
||||
m_nSWAP_VERTEX_BLEND = 0;
|
||||
#ifdef _DEBUG
|
||||
m_bPARALLAXCORRECT = false;
|
||||
#endif // _DEBUG
|
||||
m_nPARALLAXCORRECT = 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_bMASKEDBLENDING && m_bBASETEXTURE2 && m_bDETAILTEXTURE && m_bBUMPMAP && m_bBUMPMAP2 && m_bCUBEMAP && m_bENVMAPMASK && m_bBASEALPHAENVMAPMASK && m_bSELFILLUM && m_bNORMALMAPALPHAENVMAPMASK && m_bDIFFUSEBUMPMAP && m_bBASETEXTURENOENVMAP && m_bBASETEXTURE2NOENVMAP && m_bWARPLIGHTING && m_bFANCY_BLENDING && m_bSEAMLESS && m_bNORMAL_DECODE_MODE && m_bNORMALMASK_DECODE_MODE && m_bDETAIL_BLEND_MODE && m_bBASETEXTURETRANSFORM2;
|
||||
bool bAllStaticVarsDefined = m_bMASKEDBLENDING && m_bBASETEXTURE2 && m_bDETAILTEXTURE && m_bBUMPMAP && m_bBUMPMAP2 && m_bCUBEMAP && m_bENVMAPMASK && m_bBASEALPHAENVMAPMASK && m_bSELFILLUM && m_bNORMALMAPALPHAENVMAPMASK && m_bDIFFUSEBUMPMAP && m_bBASETEXTURENOENVMAP && m_bBASETEXTURE2NOENVMAP && m_bWARPLIGHTING && m_bFANCY_BLENDING && m_bSEAMLESS && m_bNORMAL_DECODE_MODE && m_bNORMALMASK_DECODE_MODE && m_bDETAIL_BLEND_MODE && m_bBASETEXTURETRANSFORM2 && m_bSWAP_VERTEX_BLEND && m_bPARALLAXCORRECT;
|
||||
Assert( bAllStaticVarsDefined );
|
||||
#endif // _DEBUG
|
||||
return ( 96 * m_nMASKEDBLENDING ) + ( 192 * m_nBASETEXTURE2 ) + ( 384 * m_nDETAILTEXTURE ) + ( 768 * m_nBUMPMAP ) + ( 2304 * m_nBUMPMAP2 ) + ( 4608 * m_nCUBEMAP ) + ( 9216 * m_nENVMAPMASK ) + ( 18432 * m_nBASEALPHAENVMAPMASK ) + ( 36864 * m_nSELFILLUM ) + ( 73728 * m_nNORMALMAPALPHAENVMAPMASK ) + ( 147456 * m_nDIFFUSEBUMPMAP ) + ( 294912 * m_nBASETEXTURENOENVMAP ) + ( 589824 * m_nBASETEXTURE2NOENVMAP ) + ( 1179648 * m_nWARPLIGHTING ) + ( 2359296 * m_nFANCY_BLENDING ) + ( 7077888 * m_nSEAMLESS ) + ( 14155776 * m_nNORMAL_DECODE_MODE ) + ( 14155776 * m_nNORMALMASK_DECODE_MODE ) + ( 14155776 * m_nDETAIL_BLEND_MODE ) + ( 169869312 * m_nBASETEXTURETRANSFORM2 ) + 0;
|
||||
return ( 96 * m_nMASKEDBLENDING ) + ( 192 * m_nBASETEXTURE2 ) + ( 384 * m_nDETAILTEXTURE ) + ( 768 * m_nBUMPMAP ) + ( 2304 * m_nBUMPMAP2 ) + ( 4608 * m_nCUBEMAP ) + ( 9216 * m_nENVMAPMASK ) + ( 18432 * m_nBASEALPHAENVMAPMASK ) + ( 36864 * m_nSELFILLUM ) + ( 73728 * m_nNORMALMAPALPHAENVMAPMASK ) + ( 147456 * m_nDIFFUSEBUMPMAP ) + ( 294912 * m_nBASETEXTURENOENVMAP ) + ( 589824 * m_nBASETEXTURE2NOENVMAP ) + ( 1179648 * m_nWARPLIGHTING ) + ( 2359296 * m_nFANCY_BLENDING ) + ( 4718592 * m_nSEAMLESS ) + ( 9437184 * m_nNORMAL_DECODE_MODE ) + ( 9437184 * m_nNORMALMASK_DECODE_MODE ) + ( 9437184 * m_nDETAIL_BLEND_MODE ) + ( 113246208 * m_nBASETEXTURETRANSFORM2 ) + ( 226492416 * m_nSWAP_VERTEX_BLEND ) + ( 452984832 * m_nPARALLAXCORRECT ) + 0;
|
||||
}
|
||||
};
|
||||
#define shaderStaticTest_sdk_lightmappedgeneric_ps30 psh_forgot_to_set_static_MASKEDBLENDING + psh_forgot_to_set_static_BASETEXTURE2 + psh_forgot_to_set_static_DETAILTEXTURE + psh_forgot_to_set_static_BUMPMAP + psh_forgot_to_set_static_BUMPMAP2 + psh_forgot_to_set_static_CUBEMAP + psh_forgot_to_set_static_ENVMAPMASK + psh_forgot_to_set_static_BASEALPHAENVMAPMASK + psh_forgot_to_set_static_SELFILLUM + psh_forgot_to_set_static_NORMALMAPALPHAENVMAPMASK + psh_forgot_to_set_static_DIFFUSEBUMPMAP + psh_forgot_to_set_static_BASETEXTURENOENVMAP + psh_forgot_to_set_static_BASETEXTURE2NOENVMAP + psh_forgot_to_set_static_WARPLIGHTING + psh_forgot_to_set_static_FANCY_BLENDING + psh_forgot_to_set_static_SEAMLESS + psh_forgot_to_set_static_NORMAL_DECODE_MODE + psh_forgot_to_set_static_NORMALMASK_DECODE_MODE + psh_forgot_to_set_static_DETAIL_BLEND_MODE + psh_forgot_to_set_static_BASETEXTURETRANSFORM2 + 0
|
||||
#define shaderStaticTest_sdk_lightmappedgeneric_ps30 psh_forgot_to_set_static_MASKEDBLENDING + psh_forgot_to_set_static_BASETEXTURE2 + psh_forgot_to_set_static_DETAILTEXTURE + psh_forgot_to_set_static_BUMPMAP + psh_forgot_to_set_static_BUMPMAP2 + psh_forgot_to_set_static_CUBEMAP + psh_forgot_to_set_static_ENVMAPMASK + psh_forgot_to_set_static_BASEALPHAENVMAPMASK + psh_forgot_to_set_static_SELFILLUM + psh_forgot_to_set_static_NORMALMAPALPHAENVMAPMASK + psh_forgot_to_set_static_DIFFUSEBUMPMAP + psh_forgot_to_set_static_BASETEXTURENOENVMAP + psh_forgot_to_set_static_BASETEXTURE2NOENVMAP + psh_forgot_to_set_static_WARPLIGHTING + psh_forgot_to_set_static_FANCY_BLENDING + psh_forgot_to_set_static_SEAMLESS + psh_forgot_to_set_static_NORMAL_DECODE_MODE + psh_forgot_to_set_static_NORMALMASK_DECODE_MODE + psh_forgot_to_set_static_DETAIL_BLEND_MODE + psh_forgot_to_set_static_BASETEXTURETRANSFORM2 + psh_forgot_to_set_static_SWAP_VERTEX_BLEND + psh_forgot_to_set_static_PARALLAXCORRECT + 0
|
||||
class sdk_lightmappedgeneric_ps30_Dynamic_Index
|
||||
{
|
||||
private:
|
||||
|
||||
@@ -303,7 +303,7 @@ private:
|
||||
public:
|
||||
void SetFANCY_BLENDING( int i )
|
||||
{
|
||||
Assert( i >= 0 && i <= 2 );
|
||||
Assert( i >= 0 && i <= 1 );
|
||||
m_nFANCY_BLENDING = i;
|
||||
#ifdef _DEBUG
|
||||
m_bFANCY_BLENDING = true;
|
||||
@@ -442,6 +442,48 @@ public:
|
||||
m_bBASETEXTURETRANSFORM2 = true;
|
||||
#endif
|
||||
}
|
||||
private:
|
||||
int m_nSWAP_VERTEX_BLEND;
|
||||
#ifdef _DEBUG
|
||||
bool m_bSWAP_VERTEX_BLEND;
|
||||
#endif
|
||||
public:
|
||||
void SetSWAP_VERTEX_BLEND( int i )
|
||||
{
|
||||
Assert( i >= 0 && i <= 1 );
|
||||
m_nSWAP_VERTEX_BLEND = i;
|
||||
#ifdef _DEBUG
|
||||
m_bSWAP_VERTEX_BLEND = true;
|
||||
#endif
|
||||
}
|
||||
void SetSWAP_VERTEX_BLEND( bool i )
|
||||
{
|
||||
m_nSWAP_VERTEX_BLEND = i ? 1 : 0;
|
||||
#ifdef _DEBUG
|
||||
m_bSWAP_VERTEX_BLEND = true;
|
||||
#endif
|
||||
}
|
||||
private:
|
||||
int m_nPARALLAXCORRECT;
|
||||
#ifdef _DEBUG
|
||||
bool m_bPARALLAXCORRECT;
|
||||
#endif
|
||||
public:
|
||||
void SetPARALLAXCORRECT( int i )
|
||||
{
|
||||
Assert( i >= 0 && i <= 1 );
|
||||
m_nPARALLAXCORRECT = i;
|
||||
#ifdef _DEBUG
|
||||
m_bPARALLAXCORRECT = true;
|
||||
#endif
|
||||
}
|
||||
void SetPARALLAXCORRECT( bool i )
|
||||
{
|
||||
m_nPARALLAXCORRECT = i ? 1 : 0;
|
||||
#ifdef _DEBUG
|
||||
m_bPARALLAXCORRECT = true;
|
||||
#endif
|
||||
}
|
||||
public:
|
||||
sdk_lightmappedgeneric_ps20b_Static_Index( )
|
||||
{
|
||||
@@ -529,19 +571,27 @@ public:
|
||||
m_bBASETEXTURETRANSFORM2 = false;
|
||||
#endif // _DEBUG
|
||||
m_nBASETEXTURETRANSFORM2 = 0;
|
||||
#ifdef _DEBUG
|
||||
m_bSWAP_VERTEX_BLEND = false;
|
||||
#endif // _DEBUG
|
||||
m_nSWAP_VERTEX_BLEND = 0;
|
||||
#ifdef _DEBUG
|
||||
m_bPARALLAXCORRECT = false;
|
||||
#endif // _DEBUG
|
||||
m_nPARALLAXCORRECT = 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_bMASKEDBLENDING && m_bBASETEXTURE2 && m_bDETAILTEXTURE && m_bBUMPMAP && m_bBUMPMAP2 && m_bCUBEMAP && m_bENVMAPMASK && m_bBASEALPHAENVMAPMASK && m_bSELFILLUM && m_bNORMALMAPALPHAENVMAPMASK && m_bDIFFUSEBUMPMAP && m_bBASETEXTURENOENVMAP && m_bBASETEXTURE2NOENVMAP && m_bWARPLIGHTING && m_bFANCY_BLENDING && m_bRELIEF_MAPPING && m_bSEAMLESS && m_bNORMAL_DECODE_MODE && m_bNORMALMASK_DECODE_MODE && m_bDETAIL_BLEND_MODE && m_bBASETEXTURETRANSFORM2;
|
||||
bool bAllStaticVarsDefined = m_bMASKEDBLENDING && m_bBASETEXTURE2 && m_bDETAILTEXTURE && m_bBUMPMAP && m_bBUMPMAP2 && m_bCUBEMAP && m_bENVMAPMASK && m_bBASEALPHAENVMAPMASK && m_bSELFILLUM && m_bNORMALMAPALPHAENVMAPMASK && m_bDIFFUSEBUMPMAP && m_bBASETEXTURENOENVMAP && m_bBASETEXTURE2NOENVMAP && m_bWARPLIGHTING && m_bFANCY_BLENDING && m_bRELIEF_MAPPING && m_bSEAMLESS && m_bNORMAL_DECODE_MODE && m_bNORMALMASK_DECODE_MODE && m_bDETAIL_BLEND_MODE && m_bBASETEXTURETRANSFORM2 && m_bSWAP_VERTEX_BLEND && m_bPARALLAXCORRECT;
|
||||
Assert( bAllStaticVarsDefined );
|
||||
#endif // _DEBUG
|
||||
return ( 96 * m_nMASKEDBLENDING ) + ( 192 * m_nBASETEXTURE2 ) + ( 384 * m_nDETAILTEXTURE ) + ( 768 * m_nBUMPMAP ) + ( 2304 * m_nBUMPMAP2 ) + ( 4608 * m_nCUBEMAP ) + ( 9216 * m_nENVMAPMASK ) + ( 18432 * m_nBASEALPHAENVMAPMASK ) + ( 36864 * m_nSELFILLUM ) + ( 73728 * m_nNORMALMAPALPHAENVMAPMASK ) + ( 147456 * m_nDIFFUSEBUMPMAP ) + ( 294912 * m_nBASETEXTURENOENVMAP ) + ( 589824 * m_nBASETEXTURE2NOENVMAP ) + ( 1179648 * m_nWARPLIGHTING ) + ( 2359296 * m_nFANCY_BLENDING ) + ( 7077888 * m_nRELIEF_MAPPING ) + ( 7077888 * m_nSEAMLESS ) + ( 14155776 * m_nNORMAL_DECODE_MODE ) + ( 14155776 * m_nNORMALMASK_DECODE_MODE ) + ( 14155776 * m_nDETAIL_BLEND_MODE ) + ( 169869312 * m_nBASETEXTURETRANSFORM2 ) + 0;
|
||||
return ( 96 * m_nMASKEDBLENDING ) + ( 192 * m_nBASETEXTURE2 ) + ( 384 * m_nDETAILTEXTURE ) + ( 768 * m_nBUMPMAP ) + ( 2304 * m_nBUMPMAP2 ) + ( 4608 * m_nCUBEMAP ) + ( 9216 * m_nENVMAPMASK ) + ( 18432 * m_nBASEALPHAENVMAPMASK ) + ( 36864 * m_nSELFILLUM ) + ( 73728 * m_nNORMALMAPALPHAENVMAPMASK ) + ( 147456 * m_nDIFFUSEBUMPMAP ) + ( 294912 * m_nBASETEXTURENOENVMAP ) + ( 589824 * m_nBASETEXTURE2NOENVMAP ) + ( 1179648 * m_nWARPLIGHTING ) + ( 2359296 * m_nFANCY_BLENDING ) + ( 4718592 * m_nRELIEF_MAPPING ) + ( 4718592 * m_nSEAMLESS ) + ( 9437184 * m_nNORMAL_DECODE_MODE ) + ( 9437184 * m_nNORMALMASK_DECODE_MODE ) + ( 9437184 * m_nDETAIL_BLEND_MODE ) + ( 113246208 * m_nBASETEXTURETRANSFORM2 ) + ( 226492416 * m_nSWAP_VERTEX_BLEND ) + ( 452984832 * m_nPARALLAXCORRECT ) + 0;
|
||||
}
|
||||
};
|
||||
#define shaderStaticTest_sdk_lightmappedgeneric_ps20b psh_forgot_to_set_static_MASKEDBLENDING + psh_forgot_to_set_static_BASETEXTURE2 + psh_forgot_to_set_static_DETAILTEXTURE + psh_forgot_to_set_static_BUMPMAP + psh_forgot_to_set_static_BUMPMAP2 + psh_forgot_to_set_static_CUBEMAP + psh_forgot_to_set_static_ENVMAPMASK + psh_forgot_to_set_static_BASEALPHAENVMAPMASK + psh_forgot_to_set_static_SELFILLUM + psh_forgot_to_set_static_NORMALMAPALPHAENVMAPMASK + psh_forgot_to_set_static_DIFFUSEBUMPMAP + psh_forgot_to_set_static_BASETEXTURENOENVMAP + psh_forgot_to_set_static_BASETEXTURE2NOENVMAP + psh_forgot_to_set_static_WARPLIGHTING + psh_forgot_to_set_static_FANCY_BLENDING + psh_forgot_to_set_static_RELIEF_MAPPING + psh_forgot_to_set_static_SEAMLESS + psh_forgot_to_set_static_NORMAL_DECODE_MODE + psh_forgot_to_set_static_NORMALMASK_DECODE_MODE + psh_forgot_to_set_static_DETAIL_BLEND_MODE + psh_forgot_to_set_static_BASETEXTURETRANSFORM2 + 0
|
||||
#define shaderStaticTest_sdk_lightmappedgeneric_ps20b psh_forgot_to_set_static_MASKEDBLENDING + psh_forgot_to_set_static_BASETEXTURE2 + psh_forgot_to_set_static_DETAILTEXTURE + psh_forgot_to_set_static_BUMPMAP + psh_forgot_to_set_static_BUMPMAP2 + psh_forgot_to_set_static_CUBEMAP + psh_forgot_to_set_static_ENVMAPMASK + psh_forgot_to_set_static_BASEALPHAENVMAPMASK + psh_forgot_to_set_static_SELFILLUM + psh_forgot_to_set_static_NORMALMAPALPHAENVMAPMASK + psh_forgot_to_set_static_DIFFUSEBUMPMAP + psh_forgot_to_set_static_BASETEXTURENOENVMAP + psh_forgot_to_set_static_BASETEXTURE2NOENVMAP + psh_forgot_to_set_static_WARPLIGHTING + psh_forgot_to_set_static_FANCY_BLENDING + psh_forgot_to_set_static_RELIEF_MAPPING + psh_forgot_to_set_static_SEAMLESS + psh_forgot_to_set_static_NORMAL_DECODE_MODE + psh_forgot_to_set_static_NORMALMASK_DECODE_MODE + psh_forgot_to_set_static_DETAIL_BLEND_MODE + psh_forgot_to_set_static_BASETEXTURETRANSFORM2 + psh_forgot_to_set_static_SWAP_VERTEX_BLEND + psh_forgot_to_set_static_PARALLAXCORRECT + 0
|
||||
class sdk_lightmappedgeneric_ps20b_Dynamic_Index
|
||||
{
|
||||
private:
|
||||
|
||||
@@ -303,7 +303,7 @@ private:
|
||||
public:
|
||||
void SetFANCY_BLENDING( int i )
|
||||
{
|
||||
Assert( i >= 0 && i <= 2 );
|
||||
Assert( i >= 0 && i <= 1 );
|
||||
m_nFANCY_BLENDING = i;
|
||||
#ifdef _DEBUG
|
||||
m_bFANCY_BLENDING = true;
|
||||
@@ -421,6 +421,48 @@ public:
|
||||
m_bBASETEXTURETRANSFORM2 = true;
|
||||
#endif
|
||||
}
|
||||
private:
|
||||
int m_nSWAP_VERTEX_BLEND;
|
||||
#ifdef _DEBUG
|
||||
bool m_bSWAP_VERTEX_BLEND;
|
||||
#endif
|
||||
public:
|
||||
void SetSWAP_VERTEX_BLEND( int i )
|
||||
{
|
||||
Assert( i >= 0 && i <= 1 );
|
||||
m_nSWAP_VERTEX_BLEND = i;
|
||||
#ifdef _DEBUG
|
||||
m_bSWAP_VERTEX_BLEND = true;
|
||||
#endif
|
||||
}
|
||||
void SetSWAP_VERTEX_BLEND( bool i )
|
||||
{
|
||||
m_nSWAP_VERTEX_BLEND = i ? 1 : 0;
|
||||
#ifdef _DEBUG
|
||||
m_bSWAP_VERTEX_BLEND = true;
|
||||
#endif
|
||||
}
|
||||
private:
|
||||
int m_nPARALLAXCORRECT;
|
||||
#ifdef _DEBUG
|
||||
bool m_bPARALLAXCORRECT;
|
||||
#endif
|
||||
public:
|
||||
void SetPARALLAXCORRECT( int i )
|
||||
{
|
||||
Assert( i >= 0 && i <= 1 );
|
||||
m_nPARALLAXCORRECT = i;
|
||||
#ifdef _DEBUG
|
||||
m_bPARALLAXCORRECT = true;
|
||||
#endif
|
||||
}
|
||||
void SetPARALLAXCORRECT( bool i )
|
||||
{
|
||||
m_nPARALLAXCORRECT = i ? 1 : 0;
|
||||
#ifdef _DEBUG
|
||||
m_bPARALLAXCORRECT = true;
|
||||
#endif
|
||||
}
|
||||
public:
|
||||
sdk_lightmappedgeneric_ps30_Static_Index( )
|
||||
{
|
||||
@@ -504,19 +546,27 @@ public:
|
||||
m_bBASETEXTURETRANSFORM2 = false;
|
||||
#endif // _DEBUG
|
||||
m_nBASETEXTURETRANSFORM2 = 0;
|
||||
#ifdef _DEBUG
|
||||
m_bSWAP_VERTEX_BLEND = false;
|
||||
#endif // _DEBUG
|
||||
m_nSWAP_VERTEX_BLEND = 0;
|
||||
#ifdef _DEBUG
|
||||
m_bPARALLAXCORRECT = false;
|
||||
#endif // _DEBUG
|
||||
m_nPARALLAXCORRECT = 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_bMASKEDBLENDING && m_bBASETEXTURE2 && m_bDETAILTEXTURE && m_bBUMPMAP && m_bBUMPMAP2 && m_bCUBEMAP && m_bENVMAPMASK && m_bBASEALPHAENVMAPMASK && m_bSELFILLUM && m_bNORMALMAPALPHAENVMAPMASK && m_bDIFFUSEBUMPMAP && m_bBASETEXTURENOENVMAP && m_bBASETEXTURE2NOENVMAP && m_bWARPLIGHTING && m_bFANCY_BLENDING && m_bSEAMLESS && m_bNORMAL_DECODE_MODE && m_bNORMALMASK_DECODE_MODE && m_bDETAIL_BLEND_MODE && m_bBASETEXTURETRANSFORM2;
|
||||
bool bAllStaticVarsDefined = m_bMASKEDBLENDING && m_bBASETEXTURE2 && m_bDETAILTEXTURE && m_bBUMPMAP && m_bBUMPMAP2 && m_bCUBEMAP && m_bENVMAPMASK && m_bBASEALPHAENVMAPMASK && m_bSELFILLUM && m_bNORMALMAPALPHAENVMAPMASK && m_bDIFFUSEBUMPMAP && m_bBASETEXTURENOENVMAP && m_bBASETEXTURE2NOENVMAP && m_bWARPLIGHTING && m_bFANCY_BLENDING && m_bSEAMLESS && m_bNORMAL_DECODE_MODE && m_bNORMALMASK_DECODE_MODE && m_bDETAIL_BLEND_MODE && m_bBASETEXTURETRANSFORM2 && m_bSWAP_VERTEX_BLEND && m_bPARALLAXCORRECT;
|
||||
Assert( bAllStaticVarsDefined );
|
||||
#endif // _DEBUG
|
||||
return ( 96 * m_nMASKEDBLENDING ) + ( 192 * m_nBASETEXTURE2 ) + ( 384 * m_nDETAILTEXTURE ) + ( 768 * m_nBUMPMAP ) + ( 2304 * m_nBUMPMAP2 ) + ( 4608 * m_nCUBEMAP ) + ( 9216 * m_nENVMAPMASK ) + ( 18432 * m_nBASEALPHAENVMAPMASK ) + ( 36864 * m_nSELFILLUM ) + ( 73728 * m_nNORMALMAPALPHAENVMAPMASK ) + ( 147456 * m_nDIFFUSEBUMPMAP ) + ( 294912 * m_nBASETEXTURENOENVMAP ) + ( 589824 * m_nBASETEXTURE2NOENVMAP ) + ( 1179648 * m_nWARPLIGHTING ) + ( 2359296 * m_nFANCY_BLENDING ) + ( 7077888 * m_nSEAMLESS ) + ( 14155776 * m_nNORMAL_DECODE_MODE ) + ( 14155776 * m_nNORMALMASK_DECODE_MODE ) + ( 14155776 * m_nDETAIL_BLEND_MODE ) + ( 169869312 * m_nBASETEXTURETRANSFORM2 ) + 0;
|
||||
return ( 96 * m_nMASKEDBLENDING ) + ( 192 * m_nBASETEXTURE2 ) + ( 384 * m_nDETAILTEXTURE ) + ( 768 * m_nBUMPMAP ) + ( 2304 * m_nBUMPMAP2 ) + ( 4608 * m_nCUBEMAP ) + ( 9216 * m_nENVMAPMASK ) + ( 18432 * m_nBASEALPHAENVMAPMASK ) + ( 36864 * m_nSELFILLUM ) + ( 73728 * m_nNORMALMAPALPHAENVMAPMASK ) + ( 147456 * m_nDIFFUSEBUMPMAP ) + ( 294912 * m_nBASETEXTURENOENVMAP ) + ( 589824 * m_nBASETEXTURE2NOENVMAP ) + ( 1179648 * m_nWARPLIGHTING ) + ( 2359296 * m_nFANCY_BLENDING ) + ( 4718592 * m_nSEAMLESS ) + ( 9437184 * m_nNORMAL_DECODE_MODE ) + ( 9437184 * m_nNORMALMASK_DECODE_MODE ) + ( 9437184 * m_nDETAIL_BLEND_MODE ) + ( 113246208 * m_nBASETEXTURETRANSFORM2 ) + ( 226492416 * m_nSWAP_VERTEX_BLEND ) + ( 452984832 * m_nPARALLAXCORRECT ) + 0;
|
||||
}
|
||||
};
|
||||
#define shaderStaticTest_sdk_lightmappedgeneric_ps30 psh_forgot_to_set_static_MASKEDBLENDING + psh_forgot_to_set_static_BASETEXTURE2 + psh_forgot_to_set_static_DETAILTEXTURE + psh_forgot_to_set_static_BUMPMAP + psh_forgot_to_set_static_BUMPMAP2 + psh_forgot_to_set_static_CUBEMAP + psh_forgot_to_set_static_ENVMAPMASK + psh_forgot_to_set_static_BASEALPHAENVMAPMASK + psh_forgot_to_set_static_SELFILLUM + psh_forgot_to_set_static_NORMALMAPALPHAENVMAPMASK + psh_forgot_to_set_static_DIFFUSEBUMPMAP + psh_forgot_to_set_static_BASETEXTURENOENVMAP + psh_forgot_to_set_static_BASETEXTURE2NOENVMAP + psh_forgot_to_set_static_WARPLIGHTING + psh_forgot_to_set_static_FANCY_BLENDING + psh_forgot_to_set_static_SEAMLESS + psh_forgot_to_set_static_NORMAL_DECODE_MODE + psh_forgot_to_set_static_NORMALMASK_DECODE_MODE + psh_forgot_to_set_static_DETAIL_BLEND_MODE + psh_forgot_to_set_static_BASETEXTURETRANSFORM2 + 0
|
||||
#define shaderStaticTest_sdk_lightmappedgeneric_ps30 psh_forgot_to_set_static_MASKEDBLENDING + psh_forgot_to_set_static_BASETEXTURE2 + psh_forgot_to_set_static_DETAILTEXTURE + psh_forgot_to_set_static_BUMPMAP + psh_forgot_to_set_static_BUMPMAP2 + psh_forgot_to_set_static_CUBEMAP + psh_forgot_to_set_static_ENVMAPMASK + psh_forgot_to_set_static_BASEALPHAENVMAPMASK + psh_forgot_to_set_static_SELFILLUM + psh_forgot_to_set_static_NORMALMAPALPHAENVMAPMASK + psh_forgot_to_set_static_DIFFUSEBUMPMAP + psh_forgot_to_set_static_BASETEXTURENOENVMAP + psh_forgot_to_set_static_BASETEXTURE2NOENVMAP + psh_forgot_to_set_static_WARPLIGHTING + psh_forgot_to_set_static_FANCY_BLENDING + psh_forgot_to_set_static_SEAMLESS + psh_forgot_to_set_static_NORMAL_DECODE_MODE + psh_forgot_to_set_static_NORMALMASK_DECODE_MODE + psh_forgot_to_set_static_DETAIL_BLEND_MODE + psh_forgot_to_set_static_BASETEXTURETRANSFORM2 + psh_forgot_to_set_static_SWAP_VERTEX_BLEND + psh_forgot_to_set_static_PARALLAXCORRECT + 0
|
||||
class sdk_lightmappedgeneric_ps30_Dynamic_Index
|
||||
{
|
||||
private:
|
||||
|
||||
@@ -16,7 +16,7 @@ fxctmp9_tmp\SDK_lightmappedgeneric_vs30.inc
|
||||
fxctmp9_tmp\SDK_depthwrite_ps30.inc
|
||||
fxctmp9_tmp\SDK_depthwrite_vs30.inc
|
||||
fxctmp9_tmp\SDK_eyes_ps30.inc
|
||||
fxctmp9_tmp\SDK_eyes_vs30.inc
|
||||
fxctmp9_tmp\SDK_Eyes_vs30.inc
|
||||
fxctmp9_tmp\SDK_eye_refract_ps30.inc
|
||||
fxctmp9_tmp\SDK_eye_refract_vs30.inc
|
||||
fxctmp9_tmp\SDK_eyes_flashlight_ps30.inc
|
||||
|
||||
@@ -81,6 +81,15 @@ BEGIN_VS_SHADER( SDK_LightmappedGeneric,
|
||||
SHADER_PARAM( PHONGBOOST, SHADER_PARAM_TYPE_FLOAT, "1.0", "Phong overbrightening factor (specular mask channel should be authored to account for this)" )
|
||||
SHADER_PARAM( PHONGFRESNELRANGES, SHADER_PARAM_TYPE_VEC3, "[0 0.5 1]", "Parameters for remapping fresnel output" )
|
||||
SHADER_PARAM( PHONGEXPONENT, SHADER_PARAM_TYPE_FLOAT, "5.0", "Phong exponent for local specular lights" )
|
||||
|
||||
#ifdef PARALLAX_CORRECTED_CUBEMAPS
|
||||
// Parallax cubemaps
|
||||
SHADER_PARAM( ENVMAPPARALLAX, SHADER_PARAM_TYPE_BOOL, "0", "Enables parallax correction code for env_cubemaps" )
|
||||
SHADER_PARAM( ENVMAPPARALLAXOBB1, SHADER_PARAM_TYPE_VEC4, "[1 0 0 0]", "The first line of the parallax correction OBB matrix" )
|
||||
SHADER_PARAM( ENVMAPPARALLAXOBB2, SHADER_PARAM_TYPE_VEC4, "[0 1 0 0]", "The second line of the parallax correction OBB matrix" )
|
||||
SHADER_PARAM( ENVMAPPARALLAXOBB3, SHADER_PARAM_TYPE_VEC4, "[0 0 1 0]", "The third line of the parallax correction OBB matrix" )
|
||||
SHADER_PARAM( ENVMAPORIGIN, SHADER_PARAM_TYPE_VEC3, "[0 0 0]", "The world space position of the env_cubemap being corrected" )
|
||||
#endif
|
||||
END_SHADER_PARAMS
|
||||
|
||||
void SetupVars( LightmappedGeneric_DX9_Vars_t& info )
|
||||
@@ -148,6 +157,15 @@ END_SHADER_PARAMS
|
||||
info.m_nPhongBoost = PHONGBOOST;
|
||||
info.m_nPhongFresnelRanges = PHONGFRESNELRANGES;
|
||||
info.m_nPhongExponent = PHONGEXPONENT;
|
||||
|
||||
#ifdef PARALLAX_CORRECTED_CUBEMAPS
|
||||
// Parallax cubemaps
|
||||
info.m_nEnvmapParallax = ENVMAPPARALLAX;
|
||||
info.m_nEnvmapParallaxObb1 = ENVMAPPARALLAXOBB1;
|
||||
info.m_nEnvmapParallaxObb2 = ENVMAPPARALLAXOBB2;
|
||||
info.m_nEnvmapParallaxObb3 = ENVMAPPARALLAXOBB3;
|
||||
info.m_nEnvmapOrigin = ENVMAPORIGIN;
|
||||
#endif
|
||||
}
|
||||
|
||||
SHADER_FALLBACK
|
||||
|
||||
@@ -771,6 +771,10 @@ void DrawLightmappedGeneric_DX9_Internal(CBaseVSShader *pShader, IMaterialVar**
|
||||
(info.m_nBlendModulateTexture != -1) &&
|
||||
(params[info.m_nBlendModulateTexture]->IsTexture() );
|
||||
bool hasNormalMapAlphaEnvmapMask = IS_FLAG_SET( MATERIAL_VAR_NORMALMAPALPHAENVMAPMASK );
|
||||
#ifdef PARALLAX_CORRECTED_CUBEMAPS
|
||||
// Parallax cubemaps
|
||||
bool hasParallaxCorrection = params[info.m_nEnvmapParallax]->GetIntValue() > 0;
|
||||
#endif
|
||||
|
||||
if ( hasFlashlight && !IsX360() )
|
||||
{
|
||||
@@ -1114,17 +1118,7 @@ void DrawLightmappedGeneric_DX9_Internal(CBaseVSShader *pShader, IMaterialVar**
|
||||
SET_STATIC_PIXEL_SHADER_COMBO( BASETEXTURENOENVMAP, params[info.m_nBaseTextureNoEnvmap]->GetIntValue() );
|
||||
SET_STATIC_PIXEL_SHADER_COMBO( BASETEXTURE2NOENVMAP, params[info.m_nBaseTexture2NoEnvmap]->GetIntValue() );
|
||||
SET_STATIC_PIXEL_SHADER_COMBO( WARPLIGHTING, hasLightWarpTexture );
|
||||
#ifdef MAPBASE
|
||||
// There's a bug in Hammer that causes $basetexture and $basetexture2 to be swapped.
|
||||
// Downfall had a hack to swap them back in the editor, but I noticed $blendmodulatetexture showed up in the editor with the new shader.
|
||||
// Unfortunately, it became inverted in the editor, so I had to clear $blendmodulatetexture in the editor too, but
|
||||
// I became interested in the idea of seeing it there, as it would greatly assist with editing those kinds of textures.
|
||||
// So interested, in fact, that I added a setting to FANCY_BLENDING that swaps $blendmodulatetexture, intended to be used with the Downfall hack.
|
||||
// It only tests whether it's in the editor right now, but you could turn it into an actual shader parameter if you want.
|
||||
SET_STATIC_PIXEL_SHADER_COMBO( FANCY_BLENDING, bHasBlendModulateTexture ? (pShader->UsingEditor( params ) ? 2 : 1) : 0 );
|
||||
#else
|
||||
SET_STATIC_PIXEL_SHADER_COMBO( FANCY_BLENDING, bHasBlendModulateTexture );
|
||||
#endif
|
||||
SET_STATIC_PIXEL_SHADER_COMBO( MASKEDBLENDING, bMaskedBlending);
|
||||
//SET_STATIC_PIXEL_SHADER_COMBO( RELIEF_MAPPING, bReliefMapping );
|
||||
SET_STATIC_PIXEL_SHADER_COMBO( SEAMLESS, bSeamlessMapping );
|
||||
@@ -1138,6 +1132,18 @@ void DrawLightmappedGeneric_DX9_Internal(CBaseVSShader *pShader, IMaterialVar**
|
||||
#endif
|
||||
#ifdef MAPBASE
|
||||
SET_STATIC_PIXEL_SHADER_COMBO( BASETEXTURETRANSFORM2, hasBaseTextureTransform2 );
|
||||
// Hammer apparently has a bug that causes the vertex blend to get swapped.
|
||||
// Hammer uses a special internal shader to nullify this, but it doesn't work with custom shaders.
|
||||
// Downfall got around this by swapping around the base textures in the DLL code when drawn by the editor.
|
||||
// Doing it here in the shader itself allows us to retain other properties, like FANCY_BLENDING.
|
||||
// TODO: Could we do this here in the DLL and swap the alpha before it's passed to the shader?
|
||||
SET_STATIC_PIXEL_SHADER_COMBO( SWAP_VERTEX_BLEND, hasBaseTexture2 && pShader->UsingEditor(params) );
|
||||
#endif
|
||||
#ifdef PARALLAX_CORRECTED_CUBEMAPS
|
||||
// Parallax cubemaps enabled for 2_0b and onwards
|
||||
SET_STATIC_PIXEL_SHADER_COMBO( PARALLAXCORRECT, hasParallaxCorrection );
|
||||
#else
|
||||
SET_STATIC_PIXEL_SHADER_COMBO( PARALLAXCORRECT, false );
|
||||
#endif
|
||||
SET_STATIC_PIXEL_SHADER( sdk_lightmappedgeneric_ps30 );
|
||||
}
|
||||
@@ -1158,12 +1164,7 @@ void DrawLightmappedGeneric_DX9_Internal(CBaseVSShader *pShader, IMaterialVar**
|
||||
SET_STATIC_PIXEL_SHADER_COMBO( BASETEXTURENOENVMAP, params[info.m_nBaseTextureNoEnvmap]->GetIntValue() );
|
||||
SET_STATIC_PIXEL_SHADER_COMBO( BASETEXTURE2NOENVMAP, params[info.m_nBaseTexture2NoEnvmap]->GetIntValue() );
|
||||
SET_STATIC_PIXEL_SHADER_COMBO( WARPLIGHTING, hasLightWarpTexture );
|
||||
#ifdef MAPBASE
|
||||
// See the comment in the 3.0 shader block for more info on this.
|
||||
SET_STATIC_PIXEL_SHADER_COMBO( FANCY_BLENDING, bHasBlendModulateTexture ? (pShader->UsingEditor( params ) ? 2 : 1) : 0 );
|
||||
#else
|
||||
SET_STATIC_PIXEL_SHADER_COMBO( FANCY_BLENDING, bHasBlendModulateTexture );
|
||||
#endif
|
||||
SET_STATIC_PIXEL_SHADER_COMBO( MASKEDBLENDING, bMaskedBlending);
|
||||
SET_STATIC_PIXEL_SHADER_COMBO( RELIEF_MAPPING, bReliefMapping );
|
||||
SET_STATIC_PIXEL_SHADER_COMBO( SEAMLESS, bSeamlessMapping );
|
||||
@@ -1177,6 +1178,14 @@ void DrawLightmappedGeneric_DX9_Internal(CBaseVSShader *pShader, IMaterialVar**
|
||||
#endif
|
||||
#ifdef MAPBASE
|
||||
SET_STATIC_PIXEL_SHADER_COMBO( BASETEXTURETRANSFORM2, hasBaseTextureTransform2 );
|
||||
// See the comment in the 3.0 shader block for more info on this.
|
||||
SET_STATIC_PIXEL_SHADER_COMBO( SWAP_VERTEX_BLEND, hasBaseTexture2 && pShader->UsingEditor(params) );
|
||||
#endif
|
||||
#ifdef PARALLAX_CORRECTED_CUBEMAPS
|
||||
// Parallax cubemaps enabled for 2_0b and onwards
|
||||
SET_STATIC_PIXEL_SHADER_COMBO( PARALLAXCORRECT, hasParallaxCorrection );
|
||||
#else
|
||||
SET_STATIC_PIXEL_SHADER_COMBO( PARALLAXCORRECT, false );
|
||||
#endif
|
||||
SET_STATIC_PIXEL_SHADER( sdk_lightmappedgeneric_ps20b );
|
||||
}
|
||||
@@ -1492,6 +1501,30 @@ void DrawLightmappedGeneric_DX9_Internal(CBaseVSShader *pShader, IMaterialVar**
|
||||
pContextData->m_SemiStaticCmdsOut.BindTexture( pShader, SHADER_SAMPLER3, info.m_nBlendModulateTexture, -1 );
|
||||
}
|
||||
|
||||
#ifdef PARALLAX_CORRECTED_CUBEMAPS
|
||||
// Parallax cubemaps
|
||||
if (hasParallaxCorrection)
|
||||
{
|
||||
pContextData->m_SemiStaticCmdsOut.SetPixelShaderConstant( 21, params[info.m_nEnvmapOrigin]->GetVecValue() );
|
||||
|
||||
float* vecs[3];
|
||||
vecs[0] = const_cast<float*>(params[info.m_nEnvmapParallaxObb1]->GetVecValue());
|
||||
vecs[1] = const_cast<float*>(params[info.m_nEnvmapParallaxObb2]->GetVecValue());
|
||||
vecs[2] = const_cast<float*>(params[info.m_nEnvmapParallaxObb3]->GetVecValue());
|
||||
float matrix[4][4];
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
for (int j = 0; j < 4; j++)
|
||||
{
|
||||
matrix[i][j] = vecs[i][j];
|
||||
}
|
||||
}
|
||||
matrix[3][0] = matrix[3][1] = matrix[3][2] = 0;
|
||||
matrix[3][3] = 1;
|
||||
pContextData->m_SemiStaticCmdsOut.SetPixelShaderConstant( 22, &matrix[0][0], 4 );
|
||||
}
|
||||
#endif
|
||||
|
||||
pContextData->m_SemiStaticCmdsOut.End();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,10 @@
|
||||
#include <string.h>
|
||||
#include "BaseVSShader.h"
|
||||
|
||||
#ifdef MAPBASE
|
||||
// This requires custom compilers, but anyone ahead of us on that should be able to use this anyway
|
||||
#define PARALLAX_CORRECTED_CUBEMAPS 1
|
||||
#endif
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Forward declarations
|
||||
@@ -94,6 +98,15 @@ struct LightmappedGeneric_DX9_Vars_t
|
||||
int m_nPhongBoost;
|
||||
int m_nPhongFresnelRanges;
|
||||
int m_nPhongExponent;
|
||||
|
||||
#ifdef PARALLAX_CORRECTED_CUBEMAPS
|
||||
// Parallax cubemaps
|
||||
int m_nEnvmapParallax;
|
||||
int m_nEnvmapParallaxObb1;
|
||||
int m_nEnvmapParallaxObb2;
|
||||
int m_nEnvmapParallaxObb3;
|
||||
int m_nEnvmapOrigin;
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -33,6 +33,8 @@
|
||||
// SKIP: $BASETEXTURETRANSFORM2 && !$BASETEXTURE2
|
||||
// SKIP: $BASETEXTURETRANSFORM2 && $SEAMLESS
|
||||
|
||||
// SKIP: $SWAP_VERTEX_BLEND && !$BASETEXTURE2
|
||||
|
||||
// debug crap:
|
||||
// NOSKIP: $DETAILTEXTURE
|
||||
// NOSKIP: $CUBEMAP
|
||||
@@ -110,6 +112,12 @@ const float3 g_FlashlightPos : register( c14 );
|
||||
const float4x4 g_FlashlightWorldToTexture : register( c15 ); // through c18
|
||||
const float4 g_ShadowTweaks : register( c19 );
|
||||
|
||||
#if PARALLAXCORRECT
|
||||
// Parallax cubemaps
|
||||
const float3 cubemapPos : register(c21);
|
||||
const float4x4 obbMatrix : register(c22); //through c25
|
||||
#endif
|
||||
|
||||
|
||||
sampler BaseTextureSampler : register( s0 );
|
||||
sampler LightmapSampler : register( s1 );
|
||||
@@ -340,7 +348,17 @@ HALF4 main( PS_INPUT i ) : COLOR
|
||||
#if MASKEDBLENDING
|
||||
float blendfactor=0.5;
|
||||
#else
|
||||
|
||||
#if SWAP_VERTEX_BLEND
|
||||
// Blixibon - Hammer apparently has a bug that causes the vertex blend to get swapped.
|
||||
// Hammer uses a special internal shader to nullify this, but it doesn't work with custom shaders.
|
||||
// Downfall got around this by swapping around the base textures in the DLL code when drawn by the editor.
|
||||
// Doing it here in the shader itself allows us to retain other properties, like FANCY_BLENDING.
|
||||
float blendfactor=1.0f-i.vertexBlendX_fogFactorW.r;
|
||||
#else
|
||||
float blendfactor=i.vertexBlendX_fogFactorW.r;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
if( bBaseTexture2 )
|
||||
@@ -351,18 +369,8 @@ HALF4 main( PS_INPUT i ) : COLOR
|
||||
float minb=modt.g-modt.r;
|
||||
float maxb=modt.g+modt.r;
|
||||
#else
|
||||
|
||||
# if FANCY_BLENDING == 2
|
||||
// Blixibon - Accompanies the Downfall hack that swaps textures in the editor,
|
||||
// allows $blendmodulatetexture to be seen in Hammer
|
||||
float modtg = 1.0f-modt.g;
|
||||
float minb=max(0,modtg-modt.r);
|
||||
float maxb=min(1,modtg+modt.r);
|
||||
# else
|
||||
float minb=max(0,modt.g-modt.r);
|
||||
float maxb=min(1,modt.g+modt.r);
|
||||
# endif
|
||||
|
||||
#endif
|
||||
blendfactor=smoothstep(minb,maxb,blendfactor);
|
||||
#endif
|
||||
@@ -450,7 +458,7 @@ HALF4 main( PS_INPUT i ) : COLOR
|
||||
albedo *= baseColor;
|
||||
if( !bBaseAlphaEnvmapMask && !bSelfIllum )
|
||||
{
|
||||
alpha *= baseColor.a;
|
||||
alpha *= blendedAlpha; // Blixibon - Replaced baseColor.a with blendedAlpha
|
||||
}
|
||||
|
||||
if( bDetailTexture )
|
||||
@@ -563,7 +571,7 @@ HALF4 main( PS_INPUT i ) : COLOR
|
||||
if( bSelfIllum )
|
||||
{
|
||||
float3 selfIllumComponent = g_SelfIllumTint.xyz * albedo.xyz;
|
||||
diffuseComponent = lerp( diffuseComponent, selfIllumComponent, baseColor.a );
|
||||
diffuseComponent = lerp( diffuseComponent, selfIllumComponent, blendedAlpha ); // Blixibon - Replaced baseColor.a with blendedAlpha
|
||||
}
|
||||
|
||||
HALF3 specularLighting = HALF3( 0.0f, 0.0f, 0.0f );
|
||||
@@ -579,6 +587,23 @@ HALF4 main( PS_INPUT i ) : COLOR
|
||||
fresnel = pow( fresnel, 5.0 );
|
||||
fresnel = fresnel * g_OneMinusFresnelReflection + g_FresnelReflection;
|
||||
|
||||
#if PARALLAXCORRECT
|
||||
//Parallax correction (2_0b and beyond)
|
||||
//Adapted from http://seblagarde.wordpress.com/2012/09/29/image-based-lighting-approaches-and-parallax-corrected-cubemap/
|
||||
float3 worldPos = i.worldPos_projPosZ.xyz;
|
||||
float3 positionLS = mul(float4(worldPos, 1), obbMatrix);
|
||||
float3 rayLS = mul(reflectVect, (float3x3) obbMatrix);
|
||||
|
||||
float3 firstPlaneIntersect = (float3(1.0f, 1.0f, 1.0f) - positionLS) / rayLS;
|
||||
float3 secondPlaneIntersect = (-positionLS) / rayLS;
|
||||
float3 furthestPlane = max(firstPlaneIntersect, secondPlaneIntersect);
|
||||
float distance = min(furthestPlane.x, min(furthestPlane.y, furthestPlane.z));
|
||||
|
||||
// Use distance in WS directly to recover intersection
|
||||
float3 intersectPositionWS = worldPos + reflectVect * distance;
|
||||
reflectVect = intersectPositionWS - cubemapPos;
|
||||
#endif
|
||||
|
||||
specularLighting = ENV_MAP_SCALE * texCUBE( EnvmapSampler, reflectVect );
|
||||
specularLighting *= specularFactor;
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@ SDK_WorldVertexTransition_ps2x.fxc
|
||||
SDK_WorldVertexTransition_vs20.fxc
|
||||
SDK_refract_ps2x.fxc
|
||||
SDK_Refract_vs20.fxc
|
||||
SDK_Water_ps2x.fxc
|
||||
SDK_water_ps2x.fxc
|
||||
SDK_Water_vs20.fxc
|
||||
SDK_WaterCheap_ps2x.fxc
|
||||
SDK_WaterCheap_vs20.fxc
|
||||
|
||||
@@ -29,7 +29,7 @@ SDK_depthwrite_ps2x.fxc
|
||||
SDK_depthwrite_vs20.fxc
|
||||
|
||||
SDK_eyes_ps2x.fxc
|
||||
SDK_eyes_vs20.fxc
|
||||
SDK_Eyes_vs20.fxc
|
||||
SDK_eye_refract_ps2x.fxc
|
||||
SDK_eye_refract_vs20.fxc
|
||||
SDK_eyes_flashlight_ps2x.fxc
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
static LightmappedGeneric_DX9_Vars_t s_info;
|
||||
|
||||
static LightmappedGeneric_DX9_Vars_t s_info_editor;
|
||||
//static LightmappedGeneric_DX9_Vars_t s_info_editor;
|
||||
|
||||
|
||||
DEFINE_FALLBACK_SHADER( SDK_WorldVertexTransition, SDK_WorldVertexTransition_DX9 )
|
||||
@@ -72,6 +72,15 @@ BEGIN_VS_SHADER( SDK_WorldVertexTransition_DX9, "Help for SDK_WorldVertexTransit
|
||||
SHADER_PARAM( PHONGBOOST, SHADER_PARAM_TYPE_FLOAT, "1.0", "Phong overbrightening factor (specular mask channel should be authored to account for this)" )
|
||||
SHADER_PARAM( PHONGFRESNELRANGES, SHADER_PARAM_TYPE_VEC3, "[0 0.5 1]", "Parameters for remapping fresnel output" )
|
||||
SHADER_PARAM( PHONGEXPONENT, SHADER_PARAM_TYPE_FLOAT, "5.0", "Phong exponent for local specular lights" )
|
||||
|
||||
#ifdef PARALLAX_CORRECTED_CUBEMAPS
|
||||
// Parallax cubemaps
|
||||
SHADER_PARAM( ENVMAPPARALLAX, SHADER_PARAM_TYPE_BOOL, "0", "Enables parallax correction code for env_cubemaps" )
|
||||
SHADER_PARAM( ENVMAPPARALLAXOBB1, SHADER_PARAM_TYPE_VEC4, "[1 0 0 0]", "The first line of the parallax correction OBB matrix" )
|
||||
SHADER_PARAM( ENVMAPPARALLAXOBB2, SHADER_PARAM_TYPE_VEC4, "[0 1 0 0]", "The second line of the parallax correction OBB matrix" )
|
||||
SHADER_PARAM( ENVMAPPARALLAXOBB3, SHADER_PARAM_TYPE_VEC4, "[0 0 1 0]", "The third line of the parallax correction OBB matrix" )
|
||||
SHADER_PARAM( ENVMAPORIGIN, SHADER_PARAM_TYPE_VEC3, "[0 0 0]", "The world space position of the env_cubemap being corrected" )
|
||||
#endif
|
||||
END_SHADER_PARAMS
|
||||
|
||||
void SetupVars( LightmappedGeneric_DX9_Vars_t& info )
|
||||
@@ -128,6 +137,15 @@ BEGIN_VS_SHADER( SDK_WorldVertexTransition_DX9, "Help for SDK_WorldVertexTransit
|
||||
info.m_nPhongBoost = PHONGBOOST;
|
||||
info.m_nPhongFresnelRanges = PHONGFRESNELRANGES;
|
||||
info.m_nPhongExponent = PHONGEXPONENT;
|
||||
|
||||
#ifdef PARALLAX_CORRECTED_CUBEMAPS
|
||||
// Parallax cubemaps
|
||||
info.m_nEnvmapParallax = ENVMAPPARALLAX;
|
||||
info.m_nEnvmapParallaxObb1 = ENVMAPPARALLAXOBB1;
|
||||
info.m_nEnvmapParallaxObb2 = ENVMAPPARALLAXOBB2;
|
||||
info.m_nEnvmapParallaxObb3 = ENVMAPPARALLAXOBB3;
|
||||
info.m_nEnvmapOrigin = ENVMAPORIGIN;
|
||||
#endif
|
||||
}
|
||||
|
||||
SHADER_FALLBACK
|
||||
@@ -142,8 +160,8 @@ BEGIN_VS_SHADER( SDK_WorldVertexTransition_DX9, "Help for SDK_WorldVertexTransit
|
||||
{
|
||||
SetupVars( s_info );
|
||||
InitParamsLightmappedGeneric_DX9( this, params, pMaterialName, s_info );
|
||||
SetupVars( s_info_editor );
|
||||
SwapLayers( s_info_editor );
|
||||
//SetupVars( s_info_editor );
|
||||
//SwapLayers( s_info_editor );
|
||||
}
|
||||
|
||||
SHADER_INIT
|
||||
@@ -154,30 +172,27 @@ BEGIN_VS_SHADER( SDK_WorldVertexTransition_DX9, "Help for SDK_WorldVertexTransit
|
||||
|
||||
SHADER_DRAW
|
||||
{
|
||||
if ( UsingEditor( params ) )
|
||||
DrawLightmappedGeneric_DX9( this, params, pShaderAPI, pShaderShadow, s_info_editor, pContextDataPtr );
|
||||
else
|
||||
//if ( UsingEditor( params ) )
|
||||
// DrawLightmappedGeneric_DX9( this, params, pShaderAPI, pShaderShadow, s_info_editor, pContextDataPtr );
|
||||
//else
|
||||
DrawLightmappedGeneric_DX9( this, params, pShaderAPI, pShaderShadow, s_info, pContextDataPtr );
|
||||
}
|
||||
|
||||
private:
|
||||
// This hack is from Half-Life 2: Downfall in order to support WorldVertexTransition in Hammer.
|
||||
// We get around this through a different hack in the shader code itself now.
|
||||
// Original comment:
|
||||
// "Hack to make hammer display WVT in non-inverted way.
|
||||
// It worked ok in standard WVT because of special editor-only shader.
|
||||
// Why Valve just didn't inverted vertex alpha directly in hammer code? oO"
|
||||
static FORCEINLINE void SwapLayers( LightmappedGeneric_DX9_Vars_t &info )
|
||||
{
|
||||
V_swap( info.m_nBaseTexture, info.m_nBaseTexture2 );
|
||||
V_swap( info.m_nBaseTextureFrame, info.m_nBaseTexture2Frame );
|
||||
V_swap( info.m_nBaseTextureNoEnvmap, info.m_nBaseTexture2NoEnvmap );
|
||||
V_swap( info.m_nBumpmap, info.m_nBumpmap2 );
|
||||
V_swap( info.m_nBumpFrame, info.m_nBumpFrame2 );
|
||||
V_swap( info.m_nBumpTransform, info.m_nBumpTransform2 );
|
||||
|
||||
// I added this part myself, but it's no longer needed now that I've extended the hack into the actual shader code.
|
||||
//info.m_nBlendModulateTexture = 0;
|
||||
//info.m_nBlendMaskTransform = 0;
|
||||
}
|
||||
//static FORCEINLINE void SwapLayers( LightmappedGeneric_DX9_Vars_t &info )
|
||||
//{
|
||||
// V_swap( info.m_nBaseTexture, info.m_nBaseTexture2 );
|
||||
// V_swap( info.m_nBaseTextureFrame, info.m_nBaseTexture2Frame );
|
||||
// V_swap( info.m_nBaseTextureNoEnvmap, info.m_nBaseTexture2NoEnvmap );
|
||||
// V_swap( info.m_nBumpmap, info.m_nBumpmap2 );
|
||||
// V_swap( info.m_nBumpFrame, info.m_nBumpFrame2 );
|
||||
// V_swap( info.m_nBumpTransform, info.m_nBumpTransform2 );
|
||||
//}
|
||||
END_SHADER
|
||||
|
||||
|
||||
Reference in New Issue
Block a user