• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#version 460
2layout(location = 0) in vec3 P;
3layout(location = 1) in vec3 N;
4layout(location = 2) in vec4 Cd;
5layout(location = 3) in vec3 uv[8];
6uniform int uTDInstanceIDOffset;
7uniform int uTDNumInstances;
8uniform float uTDAlphaTestVal;
9#define TD_NUM_COLOR_BUFFERS 1
10#define TD_NUM_LIGHTS 0
11#define TD_NUM_SHADOWED_LIGHTS 0
12#define TD_NUM_ENV_LIGHTS 0
13#define TD_LIGHTS_ARRAY_SIZE 1
14#define TD_ENV_LIGHTS_ARRAY_SIZE 1
15#define TD_NUM_CAMERAS 1
16struct TDLight
17{
18	vec4 position;
19	vec3 direction;
20	vec3 diffuse;
21	vec4 nearFar;
22	vec4 lightSize;
23	vec4 misc;
24	vec4 coneLookupScaleBias;
25	vec4 attenScaleBiasRoll;
26	mat4 shadowMapMatrix;
27	mat4 shadowMapCamMatrix;
28	vec4 shadowMapRes;
29	mat4 projMapMatrix;
30};
31struct TDEnvLight
32{
33	vec3 color;
34	mat3 rotate;
35};
36layout(std140) uniform TDLightBlock
37{
38	TDLight	uTDLights[TD_LIGHTS_ARRAY_SIZE];
39};
40layout(std140) uniform TDEnvLightBlock
41{
42	TDEnvLight	uTDEnvLights[TD_ENV_LIGHTS_ARRAY_SIZE];
43};
44layout(std430) readonly restrict buffer TDEnvLightBuffer
45{
46	vec3 shCoeffs[9];
47} uTDEnvLightBuffers[TD_ENV_LIGHTS_ARRAY_SIZE];
48struct TDPhongResult
49{
50	vec3 diffuse;
51	vec3 specular;
52	vec3 specular2;
53	float shadowStrength;
54};
55struct TDPBRResult
56{
57	vec3 diffuse;
58	vec3 specular;
59	float shadowStrength;
60};
61struct TDMatrix
62{
63	mat4 world;
64	mat4 worldInverse;
65	mat4 worldCam;
66	mat4 worldCamInverse;
67	mat4 cam;
68	mat4 camInverse;
69	mat4 camProj;
70	mat4 camProjInverse;
71	mat4 proj;
72	mat4 projInverse;
73	mat4 worldCamProj;
74	mat4 worldCamProjInverse;
75	mat4 quadReproject;
76	mat3 worldForNormals;
77	mat3 camForNormals;
78	mat3 worldCamForNormals;
79};
80layout(std140) uniform TDMatricesBlock {
81	TDMatrix uTDMats[TD_NUM_CAMERAS];
82};
83struct TDCameraInfo
84{
85	vec4 nearFar;
86	vec4 fog;
87	vec4 fogColor;
88	int renderTOPCameraIndex;
89};
90layout(std140) uniform TDCameraInfoBlock {
91	TDCameraInfo uTDCamInfos[TD_NUM_CAMERAS];
92};
93struct TDGeneral
94{
95	vec4 ambientColor;
96	vec4 nearFar;
97	vec4 viewport;
98	vec4 viewportRes;
99	vec4 fog;
100	vec4 fogColor;
101};
102layout(std140) uniform TDGeneralBlock {
103	TDGeneral uTDGeneral;
104};
105layout (rgba8) uniform image2D mTD2DImageOutputs[1];
106layout (rgba8) uniform image2DArray mTD2DArrayImageOutputs[1];
107layout (rgba8) uniform image3D mTD3DImageOutputs[1];
108layout (rgba8) uniform imageCube mTDCubeImageOutputs[1];
109
110mat4 TDInstanceMat(int instanceID);
111mat3 TDInstanceMat3(int instanceID);
112vec3 TDInstanceTranslate(int instanceID);
113bool TDInstanceActive(int instanceID);
114mat3 TDInstanceRotateMat(int instanceID);
115vec3 TDInstanceScale(int instanceID);
116vec3 TDInstanceTexCoord(int instanceID, vec3 t);
117vec4 TDInstanceColor(int instanceID, vec4 curColor);
118vec4 TDInstanceCustomAttrib0(int instanceID);
119vec4 TDInstanceCustomAttrib1(int instanceID);
120vec4 TDInstanceCustomAttrib2(int instanceID);
121vec4 TDInstanceCustomAttrib3(int instanceID);
122vec4 TDInstanceCustomAttrib4(int instanceID);
123vec4 TDInstanceCustomAttrib5(int instanceID);
124vec4 TDInstanceCustomAttrib6(int instanceID);
125vec4 TDInstanceCustomAttrib7(int instanceID);
126vec4 TDInstanceCustomAttrib8(int instanceID);
127vec4 TDInstanceCustomAttrib9(int instanceID);
128vec4 TDInstanceCustomAttrib10(int instanceID);
129vec4 TDInstanceCustomAttrib11(int instanceID);
130uint TDInstanceTextureIndex(int instanceIndex);
131vec4 TDInstanceTexture(uint texIndex, vec3 uv);
132vec4 TDInstanceTexture(uint texIndex, vec2 uv);
133
134vec4 TDDeform(vec4 pos);
135vec4 TDDeform(vec3 pos);
136vec4 TDDeform(int instanceID, vec3 pos);
137vec3 TDDeformVec(vec3 v);
138vec3 TDDeformVec(int instanceID, vec3 v);
139vec3 TDDeformNorm(vec3 v);
140vec3 TDDeformNorm(int instanceID, vec3 v);
141vec4 TDSkinnedDeform(vec4 pos);
142vec3 TDSkinnedDeformVec(vec3 vec);
143vec3 TDSkinnedDeformNorm(vec3 vec);
144vec4 TDInstanceDeform(vec4 pos);
145vec3 TDInstanceDeformVec(vec3 vec);
146vec3 TDInstanceDeformNorm(vec3 vec);
147vec4 TDInstanceDeform(int instanceID, vec4 pos);
148vec3 TDInstanceDeformVec(int instanceID, vec3 vec);
149vec3 TDInstanceDeformNorm(int instanceID, vec3 vec);
150vec3 TDFastDeformTangent(vec3 oldNorm, vec4 oldTangent, vec3 deformedNorm);
151mat4 TDBoneMat(int boneIndex);
152mat4 TDInstanceMat();
153mat3 TDInstanceMat3();
154vec3 TDInstanceTranslate();
155bool TDInstanceActive();
156mat3 TDInstanceRotateMat();
157vec3 TDInstanceScale();
158vec3 TDInstanceTexCoord(vec3 t);
159vec4 TDInstanceColor(vec4 curColor);
160vec4 TDPointColor();
161#ifdef TD_PICKING_ACTIVE
162out TDPickVertex {
163	vec3 sopSpacePosition;
164	vec3 camSpacePosition;
165	vec3 worldSpacePosition;
166	vec3 sopSpaceNormal;
167	vec3 camSpaceNormal;
168	vec3 worldSpaceNormal;
169	vec3 uv[1];
170	flat int pickId;
171	flat int instanceId;
172	vec4 color;
173} oTDPickVert;
174#define vTDPickVert oTDPickVert
175#endif
176vec4 iTDCamToProj(vec4 v, vec3 uv, int cameraIndex, bool applyPickMod)
177{
178	if (!TDInstanceActive())
179		return vec4(2, 2, 2, 0);
180	v = uTDMats[0].proj * v;
181	return v;
182}
183vec4 iTDWorldToProj(vec4 v, vec3 uv, int cameraIndex, bool applyPickMod) {
184	if (!TDInstanceActive())
185		return vec4(2, 2, 2, 0);
186	v = uTDMats[0].camProj * v;
187	return v;
188}
189vec4 TDDeform(vec4 pos);
190vec4 TDDeform(vec3 pos);
191vec4 TDInstanceColor(vec4 curColor);
192vec3 TDInstanceTexCoord(vec3 t);
193int TDInstanceID() {
194	return gl_InstanceID + uTDInstanceIDOffset;
195}
196int TDCameraIndex() {
197	return 0;
198}
199vec3 TDUVUnwrapCoord() {
200	return uv[0];
201}
202#ifdef TD_PICKING_ACTIVE
203uniform int uTDPickId;
204#endif
205int TDPickID() {
206#ifdef TD_PICKING_ACTIVE
207	return uTDPickId;
208#else
209	return 0;
210#endif
211}
212float iTDConvertPickId(int id) {
213	id |= 1073741824;
214	return intBitsToFloat(id);
215}
216
217	void TDWritePickingValues() {
218#ifdef TD_PICKING_ACTIVE
219   vec4 worldPos = TDDeform(P);
220   vec4 camPos = uTDMats[TDCameraIndex()].cam * worldPos;
221	oTDPickVert.pickId = TDPickID();
222#endif
223}
224vec4 TDWorldToProj(vec4 v, vec3 uv)
225{
226	return iTDWorldToProj(v, uv, TDCameraIndex(), true);
227}
228vec4 TDWorldToProj(vec3 v, vec3 uv)
229{
230	return TDWorldToProj(vec4(v, 1.0), uv);
231}
232vec4 TDWorldToProj(vec4 v)
233{
234	return TDWorldToProj(v, vec3(0.0));
235}
236vec4 TDWorldToProj(vec3 v)
237{
238	return TDWorldToProj(vec4(v, 1.0));
239}
240vec4 TDPointColor() {
241	return Cd;
242}
243