112 lines
2.9 KiB
Plaintext
112 lines
2.9 KiB
Plaintext
|
|
#ifndef CONFIG_H
|
|
#define CONFIG_H
|
|
|
|
// The VFACE register sign indicates if the face is backfacing or not.
|
|
// The Renderer will define this if its supported...
|
|
#if !defined(ENABLE_VFACE)
|
|
#define ENABLE_VFACE 0
|
|
#endif
|
|
|
|
// When true, ENABLE_COLOR_SWIZZLE_SUPPORT provides dynamic
|
|
// color swizzling support from rgb/bgr -> bgr/rgb
|
|
// if g_bSwizzleColor is true
|
|
// This prevents the need for CPU color swizzling on platforms
|
|
// expecting a color format different from that provided
|
|
#if !defined(ENABLE_COLOR_SWIZZLE_SUPPORT)
|
|
#define ENABLE_COLOR_SWIZZLE_SUPPORT 0
|
|
#endif
|
|
|
|
// The D3D compiler will #define this as TANGENT!!
|
|
#ifndef SEMANTIC_TANGENT
|
|
#define SEMANTIC_TANGENT TEXCOORD5
|
|
#endif
|
|
|
|
#define SEMANTIC_INSTANCE_T TEXCOORD8
|
|
#define SEMANTIC_INSTANCE_X TEXCOORD9
|
|
#define SEMANTIC_INSTANCE_Y TEXCOORD10
|
|
#define SEMANTIC_INSTANCE_Z TEXCOORD11
|
|
|
|
#define SEMANTIC_INSTANCE_UV TEXCOORD12
|
|
#define SEMANTIC_INSTANCE_LOCAL TEXCOORD13
|
|
|
|
#define SEMANTIC_DISPLACEMENT TEXCOORD14
|
|
#define SEMANTIC_DISPLACEMENT_FLAGS TEXCOORD15
|
|
|
|
#define SEMANTIC_SPRITE_ROT_SCALEX_SCALEY TEXCOORD14
|
|
|
|
#define SEMANTIC_BONEINDEX TEXCOORD6
|
|
|
|
#if !defined(RENDERER_DISPLACED)
|
|
#define RENDERER_DISPLACED 0
|
|
#endif
|
|
#if !defined(ENABLE_TESSELLATION)
|
|
#define ENABLE_TESSELLATION 0
|
|
#endif
|
|
|
|
// Parameters passed from the vertex shader to the fragment shader.
|
|
struct FragmentParameters
|
|
{
|
|
float3 worldSpacePosition : TEXCOORD4;
|
|
float3 worldSpaceNormal : TEXCOORD5;
|
|
float3 worldSpaceTangent : TEXCOORD6;
|
|
float3 worldSpaceBinormal : TEXCOORD7;
|
|
#if defined(PX_X360) && defined(RENDERER_FRAGMENT)
|
|
float2 spriteTexCoord : SPRITETEXCOORD;
|
|
#endif
|
|
#if defined (RENDERER_GXM)
|
|
float2 spriteTexCoord : SPRITECOORD;
|
|
#endif
|
|
float4 texcoord0 : TEXCOORD0;
|
|
float4 texcoord1 : TEXCOORD1;
|
|
float4 texcoord2 : TEXCOORD2;
|
|
#if !defined (RENDERER_WIN8ARM)
|
|
float4 texcoord3 : TEXCOORD3;
|
|
#endif
|
|
half4 color : COLOR;
|
|
};
|
|
|
|
// Material information for a given fragment.
|
|
struct SurfaceMaterial
|
|
{
|
|
half3 diffuseColor;
|
|
half alpha;
|
|
half3 emissiveColor;
|
|
half3 specularColor;
|
|
half specularPower;
|
|
half3 tangentSpaceNormal;
|
|
};
|
|
|
|
// Lighting information for a given fragment.
|
|
struct Lighting
|
|
{
|
|
half3 diffuseColor;
|
|
half3 specularColor;
|
|
};
|
|
|
|
// Final output for a Forward Rendered Fragment.
|
|
struct Fragment
|
|
{
|
|
half4 color : COLOR0;
|
|
};
|
|
|
|
// Final output for a Deferred Rendered Fragment.
|
|
struct DeferredFragment
|
|
{
|
|
// TODO: COLOR0 alpha should be the alpha value... not emissiveIntensity.
|
|
half4 diffuseColor : COLOR0; // rgb=diffuseColor
|
|
half4 emissiveColor : COLOR1; // rgb=emissiveColor
|
|
half4 worldSpaceNormalAndSpecularPower : COLOR2; // rgb=worldSpaceNormal, a=specularPower
|
|
};
|
|
|
|
|
|
|
|
// user implemented functions...
|
|
SurfaceMaterial computeSurfaceMaterial(const FragmentParameters params);
|
|
|
|
// lighting functions...
|
|
Lighting computeLighting(const FragmentParameters params, const SurfaceMaterial material);
|
|
|
|
|
|
#endif
|