Skip to content
devonium edited this page Jun 12, 2023 · 7 revisions

ParamIndex

An integer representing a vmt parameter, there are also standard parameters:

  • PARAM_FLAGS
  • PARAM_FLAGS_DEFINED
  • PARAM_FLAGS2
  • PARAM_FLAGS_DEFINED2
  • PARAM_COLOR
  • PARAM_ALPHA
  • PARAM_BASETEXTURE
  • PARAM_FRAME
  • PARAM_BASETEXTURETRANSFORM
  • PARAM_FLASHLIGHTTEXTURE
  • PARAM_FLASHLIGHTTEXTUREFRAME
  • PARAM_COLOR2
  • PARAM_SRGBTINT

ParamType

  • SHADER_PARAM_TYPE_TEXTURE
  • SHADER_PARAM_TYPE_COLOR
  • SHADER_PARAM_TYPE_VEC2
  • SHADER_PARAM_TYPE_VEC3
  • SHADER_PARAM_TYPE_VEC4
  • SHADER_PARAM_TYPE_FLOAT
  • SHADER_PARAM_TYPE_MATRIX
  • SHADER_PARAM_TYPE_STRING
  • SHADER_PARAM_TYPE_MATRIX4X2

STDTextureID

  • STDTEXTURE_LIGHTMAP
  • STDTEXTURE_LIGHTMAP_FULLBRIGHT
  • STDTEXTURE_LIGHTMAP_BUMPED
  • STDTEXTURE_LIGHTMAP_BUMPED_FULLBRIGHT
  • STDTEXTURE_WHITE
  • STDTEXTURE_BLACK
  • STDTEXTURE_GREY
  • STDTEXTURE_GREY_ALPHA_ZERO
  • STDTEXTURE_NORMALMAP_FLAT
  • STDTEXTURE_NORMALIZATION_CUBEMAP
  • STDTEXTURE_NORMALIZATION_CUBEMAP_SIGNED
  • STDTEXTURE_FRAME_BUFFER_FULL_TEXTURE_0
  • STDTEXTURE_FRAME_BUFFER_FULL_TEXTURE_1
  • STDTEXTURE_COLOR_CORRECTION_VOLUME_0
  • STDTEXTURE_COLOR_CORRECTION_VOLUME_1
  • STDTEXTURE_COLOR_CORRECTION_VOLUME_2
  • STDTEXTURE_COLOR_CORRECTION_VOLUME_3
  • STDTEXTURE_FRAME_BUFFER_ALIAS
  • STDTEXTURE_SHADOW_NOISE_2D
  • STDTEXTURE_MORPH_ACCUMULATOR
  • STDTEXTURE_MORPH_WEIGHTS
  • STDTEXTURE_FRAME_BUFFER_FULL_DEPTH
  • STDTEXTURE_IDENTITY_LIGHTWARP
  • STDTEXTURE_DEBUG_LUXELS

STDConstID

HLSL type STDConstID
float3 STDCONST_EYE_POS
float STDCONST_CURTIME
PixelShaderLightInfo[3] STDCONST_LIGHT_INFO
float3[6] STDCONST_AMBIENT_CUBE
float4 STDCONST_FOG_PARAMS
float4 STDCONST_SHADER_CONTROLS
float4 STDCONST_DIFFUSE_MODULATION

Constant Indices

  • PSREG_SELFILLUMTINT = 0
  • PSREG_DIFFUSE_MODULATION
  • PSREG_ENVMAP_TINT__SHADOW_TWEAKS
  • PSREG_SELFILLUM_SCALE_BIAS_EXP
  • PSREG_AMBIENT_CUBE
  • PSREG_ENVMAP_FRESNEL__SELFILLUMMASK
  • PSREG_EYEPOS_SPEC_EXPONENT
  • PSREG_FOG_PARAMS
  • PSREG_FLASHLIGHT_ATTENUATION
  • PSREG_FLASHLIGHT_POSITION_RIM_BOOST
  • PSREG_FLASHLIGHT_TO_WORLD_TEXTURE
  • PSREG_FRESNEL_SPEC_PARAMS
  • PSREG_LIGHT_INFO_ARRAY
  • PSREG_SPEC_RIM_PARAMS
  • PSREG_FLASHLIGHT_COLOR
  • PSREG_LINEAR_FOG_COLOR
  • PSREG_LIGHT_SCALE
  • PSREG_FLASHLIGHT_SCREEN_SCALE
  • PSREG_SHADER_CONTROLS = 32

Sampler

What index should the texture occupy in pixel shader


Shader:SetVertexShader(string vertexShaderName)


Sets the vertex shader

Shader:SetPixelShader(string pixelShaderName)


Sets the pixel shader

ParamIndex Shader:AddParam(string paramName, ParamType paramType, string defValue)


Creates a vmt param

void Shader:SetRenderTarget(int index, string paramName = nil)


https://learn.microsoft.com/en-us/windows/win32/direct3d9/multiple-render-targets



void Shader:SetTexCoordCount(int n)


Sets the count of vertex texcoords

void Shader:EnableColorWrites(bool b)




Shader:SetParamDefValue(ParamIndex, string defValue)


shader:SetParamDefValue(PARAM_BASETEXTURE, "_rt_ResolvedFullFrameDepth")

Shader:SetPixelShaderConstant(int index, double v0, double v1 = 0, double v2 = 0, double v3 = 0)



Shader:SetVertexShaderConstant(int index, double v0, double v1 = 0, double v2 = 0, double v3 = 0)



Shader:SetPixelShaderConstantM(int index, VMatrix m, int rowsCount = 4)


Each rigester in HLSL can carry up to 4 float values
Thus, to write a 4x4 matrix we need 4 registers
shader:SetPixelShaderConstantM(0, Matrix(
{{1, 0, 0, 0}, 
{0, 1, 0, 0}, 
{0, 0, 1, 0}, 
{0, 0, 0, 1}}), 4)
float4x4 m : register(c0);
//first  row : register(c0);
//second row : register(c1);
//third  row : register(c2);
//fourth row : register(c3);

Shader:SetVertexShaderConstantM(int index, VMatrix m, int rowsCount = 4)


Each rigester in HLSL can carry up to 4 float values
Thus, to write a 4x4 matrix we need 4 registers
shader:SetVertexShaderConstantM(0, Matrix(
{{1, 0, 0, 0}, 
{0, 1, 0, 0}, 
{0, 0, 1, 0}, 
{0, 0, 0, 1}}), 4)
float4x4 m : register(c0);
//first  row : register(c0);
//second row : register(c1);
//third  row : register(c2);
//fourth row : register(c3);

Shader:SetPixelShaderConstantFP(int index, ParamIndex paramIndex)


Puts the value from the vmt parameter to the specified register
local Color = shader:AddParam("$CColor", SHADER_PARAM_TYPE_COLOR)
shader:SetPixelShaderConstantFP(0, Color)
float4 color : register(c0);

Shader:SetVertexShaderConstantFP(int index, ParamIndex paramIndex)


Puts the value from the vmt parameter to the specified register
local Color = shader:AddParam("$CColor", SHADER_PARAM_TYPE_COLOR)
shader:SetVertexShaderConstantFP(0, Color)
float4 color : register(c0);

Shader:SetPixelShaderStandardConstant(int index, STDConstID index)



Shader:SetVertexShaderStandardConstant(int index, STDConstID index)



Shader:BindTexture(Sampler samplerID, ParamIndex index)


Binds the texture from the vmt parameter in the sampler
shader:BindTexture(0, PARAM_BASETEXTURE)
sampler BaseTexture : register(s0);

Shader:BindCubeMap(Sampler samplerID, ParamIndex index)


Binds the texture from the vmt parameter in the sampler
shader:BindTexture(0, BASETEXTURE)
sampler BaseTexture : register(s0);

Shader:BindBumpMap(Sampler samplerID, ParamIndex index)


Binds the texture from the vmt parameter in the sampler
shader:BindTexture(0, BASETEXTURE)
sampler BaseTexture : register(s0);

Shader:BindStandardTexture(Sampler samplerID, STDTextureID stdTexture)



Shader:EnableFlashlightSupport(bool enable)


Enables/Disables flashlight support

When enabled occupies:
sampler4 for ShadowDepthSampler		
sampler5 for NormalizeRandRotSampler
sampler6 for FlashlightSampler

Shader:EnableStencil(bool enable)




Shader:SetStencilFailOperation(STENCILOPERATION stencilOP)



Shader:SetStencilZFailOperation(STENCILOPERATION stencilOP)



Shader:SetStencilPassOperation(STENCILOPERATION stencilOP)



Shader:SetStencilCompareFunction(STENCILCOMPARISONFUNCTION stencilCompFn)



Shader:SetStencilReferenceValue(int refValue)



Shader:SetStencilTestMask(int testMask)



Shader:SetStencilWriteMask(int writeMask)



Shader:OverrideBlending(bool enable, Blend blendSrc, Blend blendDst)



Shader:SetCullMode(CullMode cullMode)



Shader:SetFlags(int bitfield)


int bitfield possible values:
MATERIAL_VAR_DEBUG
MATERIAL_VAR_NO_DEBUG_OVERRIDE
MATERIAL_VAR_NO_DRAW
MATERIAL_VAR_USE_IN_FILLRATE_MODE
MATERIAL_VAR_VERTEXCOLOR
MATERIAL_VAR_VERTEXALPHA
MATERIAL_VAR_SELFILLUM
MATERIAL_VAR_ADDITIVE
MATERIAL_VAR_ALPHATEST
MATERIAL_VAR_MULTIPASS
MATERIAL_VAR_ZNEARER
MATERIAL_VAR_MODEL
MATERIAL_VAR_FLAT
MATERIAL_VAR_NOCULL
MATERIAL_VAR_NOFOG
MATERIAL_VAR_IGNOREZ
MATERIAL_VAR_DECAL
MATERIAL_VAR_ENVMAPSPHERE
MATERIAL_VAR_NOALPHAMOD
MATERIAL_VAR_ENVMAPCAMERASPACE
MATERIAL_VAR_BASEALPHAENVMAPMASK
MATERIAL_VAR_TRANSLUCENT
MATERIAL_VAR_NORMALMAPALPHAENVMAPMASK
MATERIAL_VAR_NEEDS_SOFTWARE_SKINNING
MATERIAL_VAR_OPAQUETEXTURE
MATERIAL_VAR_ENVMAPMODE
MATERIAL_VAR_SUPPRESS_DECALS
MATERIAL_VAR_HALFLAMBERT
MATERIAL_VAR_WIREFRAME
MATERIAL_VAR_ALLOWALPHATOCOVERAGE
MATERIAL_VAR_IGNORE_ALPHA_MODULATION

Shader:SetFlags2(int bitfield)


int bitfield possible values:
MATERIAL_VAR2_LIGHTING_UNLIT
MATERIAL_VAR2_LIGHTING_VERTEX_LIT
MATERIAL_VAR2_LIGHTING_LIGHTMAP
MATERIAL_VAR2_LIGHTING_BUMPED_LIGHTMAP
MATERIAL_VAR2_DIFFUSE_BUMPMAPPED_MODEL
MATERIAL_VAR2_USES_ENV_CUBEMAP
MATERIAL_VAR2_NEEDS_TANGENT_SPACES
MATERIAL_VAR2_NEEDS_SOFTWARE_LIGHTING
MATERIAL_VAR2_BLEND_WITH_LIGHTMAP_ALPHA
MATERIAL_VAR2_NEEDS_BAKED_LIGHTING_SNAPSHOTS
MATERIAL_VAR2_USE_FLASHLIGHT
MATERIAL_VAR2_USE_FIXED_FUNCTION_BAKED_LIGHTING
MATERIAL_VAR2_NEEDS_FIXED_FUNCTION_FLASHLIGHT
MATERIAL_VAR2_USE_EDITOR
MATERIAL_VAR2_NEEDS_POWER_OF_TWO_FRAME_BUFFER_TEXTURE
MATERIAL_VAR2_NEEDS_FULL_FRAME_BUFFER_TEXTURE
MATERIAL_VAR2_IS_SPRITECARD
MATERIAL_VAR2_USES_VERTEXID
MATERIAL_VAR2_SUPPORTS_HW_SKINNING
MATERIAL_VAR2_SUPPORTS_FLASHLIGHT

Clone this wiki locally