JD2022-TU1/data/EngineData/Shaders/Unified/ShaderParameters.fxh

174 lines
3.9 KiB
HLSL

#ifndef SHADERPARAMETERS_H_
#define SHADERPARAMETERS_H_
//FogBox : dynamic fog (Box volume attenuation)
struct VS_DynFogParam
{
float4 f4_BoxCenter;
float4 f4_CamFarNearDist; //x:Cam Z, y: farDist, z:far-near Dist
float4 f4_AlphaAtt; //x:near Alpha, y:far Alpha
};
struct PS_DynFogParam
{
float4 f4_BoxSizeAtt;
float4 f4_Color;
};
//Light 3D
struct PS_OmniLightParam
{
float4 f4_Position;
float4 f4_Radius_useLight; //xy:attenuation param, z:useLight
float4 f4_Color;
};
struct PS_PiPParam
{
float4 vBackgroundColor;
#if defined(__PSSL__)
float4 vSkelColors[ 11 ]; // This is one more than MAX_SKELS (10) on the remote chance the pixel data is corrupt and indexes beyond. See comments in pixel shader.
#else
float4 vSkelColors[ 7 ]; // This is one more than MAX_SKELS (6) on the remote chance the pixel data is corrupt and indexes beyond. See comments in pixel shader.
#endif
float4 vObjectColor;
};
#if !defined(VERTEX_PROFILE) && !defined(PIXEL_PROFILE)
// ensure backward compatibility
#define VERTEX_PROFILE
#define PIXEL_PROFILE
#endif
// BEGIN PLATFORM
#if (defined(DX11_SHADERS) && !defined(__PSSL__))
// DX11 shaders but not PSSL
#define REGISTER(const_reg)
#define BEGIN_CONSTANT_BUFFER(name, index, slot) \
cbuffer name : register(b##slot) \
{
#define END_CONSTANT_BUFFER };
#define MATRIX_ORDERING
#elif defined(DX12_SHADERS)
// DX12 shaders
#define REGISTER(const_reg)
#if defined(VERTEX_PROFILE)
#define BEGIN_CONSTANT_BUFFER(name, index, slot) \
cbuffer name : register(b##slot) \
{
#elif defined(PIXEL_PROFILE)
#define BEGIN_CONSTANT_BUFFER(name, index, slot) \
cbuffer name : register(b##slot, space1) \
{
#endif
#define END_CONSTANT_BUFFER };
#define MATRIX_ORDERING
#elif defined(PROSPERO)
#define REGISTER(const_reg)
#define BEGIN_CONSTANT_BUFFER(name, index, slot) \
ConstantBuffer name : register(c##index) \
{
#define END_CONSTANT_BUFFER };
#define MATRIX_ORDERING column_major
#elif defined(__PSSL__)
// Orbis
#define REGISTER(const_reg)
#define BEGIN_CONSTANT_BUFFER(name, index, slot) \
ConstantBuffer name : register(b##slot) \
{
#define END_CONSTANT_BUFFER };
#define MATRIX_ORDERING column_major
#elif defined(_NX_)
// NX
#define REGISTER(const_reg)
#define BEGIN_CONSTANT_BUFFER(name, index, slot) \
cbuffer name : register(b##index) \
{
#define END_CONSTANT_BUFFER };
#define MATRIX_ORDERING
#elif defined(VK_SHADERS)
// Vulkan
#define REGISTER(const_reg) : register(const_reg)
#define BEGIN_CONSTANT_BUFFER(name, index, slot) \
cbuffer name : register(b##index) \
{
#define END_CONSTANT_BUFFER };
#define MATRIX_ORDERING
#else
// Other
#define REGISTER(const_reg) : register(const_reg)
#define BEGIN_CONSTANT_BUFFER(name, index, slot)
#define END_CONSTANT_BUFFER
#define MATRIX_ORDERING
#endif
// END PLATFORM
#ifdef VERTEX_PROFILE
#define ITF_DECLARE_VS_ATTRIB_REG(attribType, attribName, attribFirstReg) \
attribType vs_##attribName REGISTER(C##attribFirstReg);
#define ITF_DECLARE_VS_ATTRIB_ARRAY_REG(attribType, attribName, arraySize, attribFirstReg) \
attribType vs_##attribName[arraySize] REGISTER(C##attribFirstReg);
#define ITF_DECLARE_VS_ATTRIB_STRUCT_REG(structType, attribName, structSize, attribFirstReg) \
structType vs_##attribName REGISTER(C##attribFirstReg);
#include "ParameterListVS_Macros.h"
#endif
#ifdef PIXEL_PROFILE
#define ITF_DECLARE_PS_ATTRIB_REG(attribType, attribName, attribFirstReg) \
attribType ps_##attribName REGISTER(C##attribFirstReg);
#define ITF_DECLARE_PS_ATTRIB_ARRAY_REG(attribType, attribName, arraySize, attribFirstReg) \
attribType ps_##attribName[arraySize] REGISTER(C##attribFirstReg);
#define ITF_DECLARE_PS_ATTRIB_STRUCT_REG(structType, attribName, structSize, attribFirstReg) \
structType ps_##attribName REGISTER(C##attribFirstReg);
#include "ParameterListPS_Macros.h"
#endif
#endif // SHADERPARAMETERS_H_