aboutsummaryrefslogtreecommitdiff
path: root/APEX_1.4/media/SampleRenderer/4/shaders/include/globals.cg
blob: 682ab70fca75058853ff66a68a54376ba00019ed (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#ifndef GLOBALS_CG
#define GLOBALS_CG

#ifdef RENDERER_PS3
#define MAX_BONES 50
#else
#define MAX_BONES 60
#endif

#if !defined(MAX_LIGHTS)
#define MAX_LIGHTS 1
#endif

#include <defines.cg>

BEGIN_CBUFFER(cbMesh0)
CONST_TYPE float4x4      g_MVP;
END_CBUFFER(cbMesh0)

BEGIN_CBUFFER(cbMesh)
CONST_TYPE float4x4      g_modelMatrix;
CONST_TYPE float4x4      g_modelViewMatrix;
CONST_TYPE float4x4      g_modelViewProjMatrix;
END_CBUFFER(cbMesh)

BEGIN_CBUFFER(cbFrame)
CONST_TYPE float4x4      g_viewMatrix;
CONST_TYPE float4x4      g_projMatrix;
CONST_TYPE float3        g_eyePosition;
CONST_TYPE float3        g_eyeDirection;
END_CBUFFER(cbFrame)

BEGIN_CBUFFER(cbFrameInv)
CONST_TYPE float4x4      g_invViewProjMatrix;
END_CBUFFER(cbFrameInv)

#if defined USE_VTF
CONST_TYPE sampler2D g_boneTexture;	// Vertex texture to hold bone matrices
#endif

BEGIN_CBUFFER(cbBones)
CONST_TYPE float4x4      g_boneMatrices[MAX_BONES]; // TODO: change this to a float4x3 (a transposed 3x4) so we can pack more bones in...
#if defined USE_VTF
CONST_TYPE int g_boneTextureHeight;	// Bone texture height
#endif
END_CBUFFER(cbBones)

BEGIN_CBUFFER(cbFog)
CONST_TYPE float4        g_fogColorAndDistance;
END_CBUFFER(cbFog)

BEGIN_CBUFFER(cbAmbient)
CONST_TYPE float3        g_ambientColor;
END_CBUFFER(cbAmbient)

BEGIN_CBUFFER(cbLight)
CONST_TYPE float3        g_lightColor;
CONST_TYPE float3        g_lightDirection;
CONST_TYPE float3        g_lightPosition;
CONST_TYPE float         g_lightIntensity;
CONST_TYPE float         g_lightInnerRadius;
CONST_TYPE float         g_lightOuterRadius;
CONST_TYPE float         g_lightInnerCone;
CONST_TYPE float         g_lightOuterCone;
END_CBUFFER(cbLight)

BEGIN_CBUFFER(cbScale)
#if ENABLE_VFACE_SCALE
	CONST_TYPE float g_vfaceScale;
#endif
END_CBUFFER(cbScale)

// D3D11 expects rgba
#if ENABLE_COLOR_SWIZZLE_SUPPORT
BEGIN_CBUFFER(cbSwizzleColor)
CONST_TYPE int g_bSwizzleColor;
END_CBUFFER(cbSwizzleColor)
half4 swizzle(half4 inColor) { return g_bSwizzleColor ? inColor.zyxw : inColor; }
#else
half4 swizzle(half4 inColor) { return inColor; }
#endif

#if defined(RENDERER_D3D11)
// D3D11 screen coordinates differ from GL/DX9
BEGIN_CBUFFER(cbView2D)
CONST_TYPE float4x4 g_viewMatrix2D;
END_CBUFFER(cbView2D)
#else
static const float4x4 g_viewMatrix2D = {{1,0,0,0},{0,1,0,0},{0,0,1,0},{0,0,0,1}};
#endif

#if defined(PASS_SPOT_LIGHT)
	// TODO: Make this less hacky, have a PASS_SUPPORTS_SHADOWS #define
	#define PASS_SUPPORTS_SHADOWS
	DECLARE_TEXTURE(g_lightShadowMap);
	BEGIN_CBUFFER(cbLightShadow)
	CONST_TYPE float4x4  g_lightShadowMatrix;
	END_CBUFFER(cbLightShadow)
#endif

#endif