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