mirror of
https://github.com/celisej567/source-sdk-2013.git
synced 2026-09-17 20:10:21 +03:00
Initial Mapbase commit (squashed from mapbase-beta)
This commit is contained in:
@@ -9,15 +9,17 @@
|
||||
#include "BaseVSShader.h"
|
||||
#include "convar.h"
|
||||
|
||||
#include "worldvertextransition_dx8_helper.h"
|
||||
//#include "worldvertextransition_dx8_helper.h"
|
||||
#include "lightmappedgeneric_dx9_helper.h"
|
||||
|
||||
static LightmappedGeneric_DX9_Vars_t s_info;
|
||||
|
||||
static LightmappedGeneric_DX9_Vars_t s_info_editor;
|
||||
|
||||
DEFINE_FALLBACK_SHADER( WorldVertexTransition, WorldVertexTransition_DX9 )
|
||||
|
||||
BEGIN_VS_SHADER( WorldVertexTransition_DX9, "Help for WorldVertexTransition" )
|
||||
DEFINE_FALLBACK_SHADER( SDK_WorldVertexTransition, SDK_WorldVertexTransition_DX9 )
|
||||
|
||||
BEGIN_VS_SHADER( SDK_WorldVertexTransition_DX9, "Help for SDK_WorldVertexTransition" )
|
||||
|
||||
BEGIN_SHADER_PARAMS
|
||||
SHADER_PARAM( ALBEDO, SHADER_PARAM_TYPE_TEXTURE, "shadertest/BaseTexture", "albedo (Base texture with no baked lighting)" )
|
||||
@@ -50,6 +52,10 @@ BEGIN_VS_SHADER( WorldVertexTransition_DX9, "Help for WorldVertexTransition" )
|
||||
SHADER_PARAM( BUMPMASK, SHADER_PARAM_TYPE_TEXTURE, "models/shadertest/shader1_normal", "bump map" )
|
||||
SHADER_PARAM( BASETEXTURE2, SHADER_PARAM_TYPE_TEXTURE, "shadertest/detail", "detail texture" )
|
||||
SHADER_PARAM( FRAME2, SHADER_PARAM_TYPE_INTEGER, "0", "frame number for $basetexture2" )
|
||||
#ifdef MAPBASE
|
||||
// This needs to be a SHADER_PARAM_TYPE_STRING so it isn't considered "defined" by default.
|
||||
SHADER_PARAM( BASETEXTURETRANSFORM2, SHADER_PARAM_TYPE_STRING, "center .5 .5 scale 1 1 rotate 0 translate 0 0", "$basetexture2 texcoord transform" )
|
||||
#endif
|
||||
SHADER_PARAM( BASETEXTURENOENVMAP, SHADER_PARAM_TYPE_BOOL, "0", "" )
|
||||
SHADER_PARAM( BASETEXTURE2NOENVMAP, SHADER_PARAM_TYPE_BOOL, "0", "" )
|
||||
SHADER_PARAM( DETAIL_ALPHA_MASK_BASE_TEXTURE, SHADER_PARAM_TYPE_BOOL, "0",
|
||||
@@ -61,17 +67,12 @@ BEGIN_VS_SHADER( WorldVertexTransition_DX9, "Help for WorldVertexTransition" )
|
||||
SHADER_PARAM( MASKEDBLENDING, SHADER_PARAM_TYPE_INTEGER, "0", "blend using texture with no vertex alpha. For using texture blending on non-displacements" )
|
||||
SHADER_PARAM( SSBUMP, SHADER_PARAM_TYPE_INTEGER, "0", "whether or not to use alternate bumpmap format with height" )
|
||||
SHADER_PARAM( SEAMLESS_SCALE, SHADER_PARAM_TYPE_FLOAT, "0", "Scale factor for 'seamless' texture mapping. 0 means to use ordinary mapping" )
|
||||
END_SHADER_PARAMS
|
||||
|
||||
void SetupVars( WorldVertexTransitionEditor_DX8_Vars_t& info )
|
||||
{
|
||||
info.m_nBaseTextureVar = BASETEXTURE;
|
||||
info.m_nBaseTextureFrameVar = FRAME;
|
||||
info.m_nBaseTextureTransformVar = BASETEXTURETRANSFORM;
|
||||
info.m_nBaseTexture2Var = BASETEXTURE2;
|
||||
info.m_nBaseTexture2FrameVar = FRAME2;
|
||||
info.m_nBaseTexture2TransformVar = BASETEXTURETRANSFORM; // FIXME!!!!
|
||||
}
|
||||
SHADER_PARAM( PHONG, SHADER_PARAM_TYPE_BOOL, "0", "enables phong lighting" )
|
||||
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" )
|
||||
END_SHADER_PARAMS
|
||||
|
||||
void SetupVars( LightmappedGeneric_DX9_Vars_t& info )
|
||||
{
|
||||
@@ -105,6 +106,9 @@ BEGIN_VS_SHADER( WorldVertexTransition_DX9, "Help for WorldVertexTransition" )
|
||||
info.m_nBumpFrame2 = BUMPFRAME2;
|
||||
info.m_nBaseTexture2 = BASETEXTURE2;
|
||||
info.m_nBaseTexture2Frame = FRAME2;
|
||||
#ifdef MAPBASE
|
||||
info.m_nBaseTexture2Transform = BASETEXTURETRANSFORM2;
|
||||
#endif
|
||||
info.m_nBumpTransform2 = BUMPTRANSFORM2;
|
||||
info.m_nBumpMask = BUMPMASK;
|
||||
info.m_nBaseTextureNoEnvmap = BASETEXTURENOENVMAP;
|
||||
@@ -119,6 +123,11 @@ BEGIN_VS_SHADER( WorldVertexTransition_DX9, "Help for WorldVertexTransition" )
|
||||
info.m_nSelfShadowedBumpFlag = SSBUMP;
|
||||
info.m_nSeamlessMappingScale = SEAMLESS_SCALE;
|
||||
info.m_nAlphaTestReference = -1;
|
||||
|
||||
info.m_nPhong = PHONG;
|
||||
info.m_nPhongBoost = PHONGBOOST;
|
||||
info.m_nPhongFresnelRanges = PHONGFRESNELRANGES;
|
||||
info.m_nPhongExponent = PHONGEXPONENT;
|
||||
}
|
||||
|
||||
SHADER_FALLBACK
|
||||
@@ -133,6 +142,8 @@ BEGIN_VS_SHADER( WorldVertexTransition_DX9, "Help for WorldVertexTransition" )
|
||||
{
|
||||
SetupVars( s_info );
|
||||
InitParamsLightmappedGeneric_DX9( this, params, pMaterialName, s_info );
|
||||
SetupVars( s_info_editor );
|
||||
SwapLayers( s_info_editor );
|
||||
}
|
||||
|
||||
SHADER_INIT
|
||||
@@ -144,14 +155,29 @@ BEGIN_VS_SHADER( WorldVertexTransition_DX9, "Help for WorldVertexTransition" )
|
||||
SHADER_DRAW
|
||||
{
|
||||
if ( UsingEditor( params ) )
|
||||
{
|
||||
WorldVertexTransitionEditor_DX8_Vars_t info;
|
||||
SetupVars( info );
|
||||
DrawWorldVertexTransitionEditor_DX8( this, params, pShaderAPI, pShaderShadow, info );
|
||||
return;
|
||||
}
|
||||
DrawLightmappedGeneric_DX9( this, params, pShaderAPI, pShaderShadow, s_info_editor, pContextDataPtr );
|
||||
else
|
||||
DrawLightmappedGeneric_DX9( this, params, pShaderAPI, pShaderShadow, s_info, pContextDataPtr );
|
||||
}
|
||||
|
||||
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.
|
||||
// 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;
|
||||
}
|
||||
END_SHADER
|
||||
|
||||
|
||||
Reference in New Issue
Block a user