Initial Mapbase commit (squashed from mapbase-beta)

This commit is contained in:
Blixibon
2019-08-31 19:28:20 +00:00
parent 0d8dceea43
commit 3d464bc051
816 changed files with 105527 additions and 957 deletions

View File

@@ -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