174 lines
3.9 KiB
HLSL
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_
|