Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

1

29.02.2012, 23:13

Massiver GLSL-Compiler Fehler

Hi, ich schreibe noch an meinem DeferredRenderer und dazu brauche ich natürlich einige Uniforms und es entstehen auch einige Instructions. Jetzt habe ich auf einmal einen massiven Shader-Compiler Fehler den ich nicht verstehe,
weil mir der Compiler von NVIDIA jetzt schon Assembler Fehler ausspuckt. Aber seht selbst:

Auszug des DebugLogs meiner Engine:

C-/C++-Quelltext

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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
SoftPixel Engine - debug log file:
(generated at 29/02/2012 23:08:09)
==================================

Load XML file: "scripts/UserSettings.xml"
SoftPixel Engine - v.3.1.1 alpha
Copyright (c) 2008 - Lukas Hermanns
Microsoft Windows 7 Professional  (Build 7600)
Compiled with: Visual C++ 9.0 (DEBUG)
Using renderer: OpenGL 4.2.0
Shader version: 4.20 NVIDIA via Cg compiler
GeForce GTX 460/PCI/SSE2: NVIDIA Corporation

NewtonGameDynamics - v.2.29
Copyright (c) <2003-2011> - Julio Jerez and Alain Suero

Load GLSL vertex shader: "shaders/DefaultMaterial.glvert"
Load GLSL pixel shader: "shaders/DefaultMaterial.glfrag"
Load GLSL vertex shader: "shaders/DeferredShading.glvert"
Load GLSL pixel shader: "shaders/DeferredShading.glfrag"
Fragment info
-------------
Internal error: assembly compile error for fragment shader at offset 12165:
-- error message --
line 250, column 9:  error: redeclared identifier
-- internal assembly text --
!!NVfp5.0
# cgc version 3.1.0001, build date Oct 15 2011
# command line args: 
#vendor NVIDIA Corporation
#version 3.1.0.1
#profile gp5fp
#program main
#semantic ColorAndSpecularMap
#semantic OcclusionMap
#semantic NormalMap
#semantic DepthMap
#semantic ShadowMaps
#semantic ShadowCubeMaps
#semantic ViewPos
#semantic ViewMatrix
#semantic ScrWidth
#semantic ScrHeight
#semantic JitterOffsets
#semantic ActiveLightsCount
#semantic LightPositions
#semantic LightColorsAndDynamics
#semantic LightShadowMaps
#var float4 gl_TexCoord[0] : $vin.TEX0 : TEX0 : -1 : 1
#var float4 gl_TexCoord[1] :  :  : -1 : 0
#var float4 gl_TexCoord[2] :  :  : -1 : 0
#var float4 gl_TexCoord[3] :  :  : -1 : 0
#var float4 gl_TexCoord[4] :  :  : -1 : 0
#var float4 gl_TexCoord[5] :  :  : -1 : 0
#var float4 gl_TexCoord[6] :  :  : -1 : 0
#var float4 gl_TexCoord[7] :  :  : -1 : 0
#var float4 gl_FragCoord : $vin.WPOS : WPOS : -1 : 1
#var float4 gl_FragColor : $vout.COLOR : COL0[0] : -1 : 1
#var sampler2D ColorAndSpecularMap :  : texunit 8 : -1 : 1
#var sampler2D OcclusionMap :  : texunit 9 : -1 : 1
#var sampler2D NormalMap :  : texunit 10 : -1 : 1
#var sampler2D DepthMap :  : texunit 11 : -1 : 1
#var sampler2D ShadowMaps[0] :  :  : -1 : 0
#var sampler2D ShadowMaps[1] :  :  : -1 : 0
#var sampler2D ShadowMaps[2] :  :  : -1 : 0
#var sampler2D ShadowMaps[3] :  :  : -1 : 0
#var sampler2D ShadowMaps[4] :  :  : -1 : 0
#var sampler2D ShadowMaps[5] :  :  : -1 : 0
#var sampler2D ShadowMaps[6] :  :  : -1 : 0
#var sampler2D ShadowMaps[7] :  :  : -1 : 0
#var samplerCUBE ShadowCubeMaps[0] :  : texunit 0 : -1 : 1
#var samplerCUBE ShadowCubeMaps[1] :  : texunit 1 : -1 : 1
#var samplerCUBE ShadowCubeMaps[2] :  : texunit 2 : -1 : 1
#var samplerCUBE ShadowCubeMaps[3] :  : texunit 3 : -1 : 1
#var samplerCUBE ShadowCubeMaps[4] :  : texunit 4 : -1 : 1
#var samplerCUBE ShadowCubeMaps[5] :  : texunit 5 : -1 : 1
#var samplerCUBE ShadowCubeMaps[6] :  : texunit 6 : -1 : 1
#var samplerCUBE ShadowCubeMaps[7] :  : texunit 7 : -1 : 1
#var float3 ViewPos :  : c[186] : -1 : 1
#var float4x4 ViewMatrix :  : c[0], 4 : -1 : 1
#var float ScrWidth :  : c[187] : -1 : 1
#var float ScrHeight :  : c[188] : -1 : 1
#var float3 JitterOffsets[0] :  : c[4] : -1 : 1
#var float3 JitterOffsets[1] :  : c[5] : -1 : 1
#var float3 JitterOffsets[2] :  : c[6] : -1 : 1
#var float3 JitterOffsets[3] :  : c[7] : -1 : 1
#var float3 JitterOffsets[4] :  : c[8] : -1 : 1
#var float3 JitterOffsets[5] :  : c[9] : -1 : 1
#var float3 JitterOffsets[6] :  : c[10] : -1 : 1
#var float3 JitterOffsets[7] :  : c[11] : -1 : 1
#var float3 JitterOffsets[8] :  : c[12] : -1 : 1
#var float3 JitterOffsets[9] :  : c[13] : -1 : 1
#var float3 JitterOffsets[10] :  : c[14] : -1 : 1
#var float3 JitterOffsets[11] :  : c[15] : -1 : 1
#var float3 JitterOffsets[12] :  : c[16] : -1 : 1
#var float3 JitterOffsets[13] :  : c[17] : -1 : 1
#var float3 JitterOffsets[14] :  : c[18] : -1 : 1
#var float3 JitterOffsets[15] :  : c[19] : -1 : 1
#var float3 JitterOffsets[16] :  : c[20] : -1 : 1
#var float3 JitterOffsets[17] :  : c[21] : -1 : 1
#var float3 JitterOffsets[18] :  : c[22] : -1 : 1
#var float3 JitterOffsets[19] :  : c[23] : -1 : 1
#var float3 JitterOffsets[20] :  : c[24] : -1 : 1
#var float3 JitterOffsets[21] :  : c[25] : -1 : 1
#var float3 JitterOffsets[22] :  : c[26] : -1 : 1
#var float3 JitterOffsets[23] :  : c[27] : -1 : 1
#var float3 JitterOffsets[24] :  : c[28] : -1 : 1
#var float3 JitterOffsets[25] :  : c[29] : -1 : 1
#var float3 JitterOffsets[26] :  : c[30] : -1 : 1
#var float3 JitterOffsets[27] :  : c[31] : -1 : 1
#var float3 JitterOffsets[28] :  : c[32] : -1 : 1
#var float3 JitterOffsets[29] :  : c[33] : -1 : 1
#var float3 JitterOffsets[30] :  : c[34] : -1 : 1
#var float3 JitterOffsets[31] :  : c[35] : -1 : 1
#var int ActiveLightsCount :  : c[189] : -1 : 1
#var float4 LightPositions[0] :  : c[36] : -1 : 1
#var float4 LightPositions[1] :  : c[37] : -1 : 1
#var float4 LightPositions[2] :  : c[38] : -1 : 1
#var float4 LightPositions[3] :  : c[39] : -1 : 1
#var float4 LightPositions[4] :  : c[40] : -1 : 1
#var float4 LightPositions[5] :  : c[41] : -1 : 1
#var float4 LightPositions[6] :  : c[42] : -1 : 1
#var float4 LightPositions[7] :  : c[43] : -1 : 1
#var float4 LightPositions[8] :  : c[44] : -1 : 1
#var float4 LightPositions[9] :  : c[45] : -1 : 1
#var float4 LightPositions[10] :  : c[46] : -1 : 1
#var float4 LightPositions[11] :  : c[47] : -1 : 1
#var float4 LightPositions[12] :  : c[48] : -1 : 1
#var float4 LightPositions[13] :  : c[49] : -1 : 1
#var float4 LightPositions[14] :  : c[50] : -1 : 1
#var float4 LightPositions[15] :  : c[51] : -1 : 1
#var float4 LightPositions[16] :  : c[52] : -1 : 1
#var float4 LightPositions[17] :  : c[53] : -1 : 1
#var float4 LightPositions[18] :  : c[54] : -1 : 1
#var float4 LightPositions[19] :  : c[55] : -1 : 1
#var float4 LightPositions[20] :  : c[56] : -1 : 1
#var float4 LightPositions[21] :  : c[57] : -1 : 1
#var float4 LightPositions[22] :  : c[58] : -1 : 1
#var float4 LightPositions[23] :  : c[59] : -1 : 1
#var float4 LightPositions[24] :  : c[60] : -1 : 1
#var float4 LightPositions[25] :  : c[61] : -1 : 1
#var float4 LightPositions[26] :  : c[62] : -1 : 1
#var float4 LightPositions[27] :  : c[63] : -1 : 1
#var float4 LightPositions[28] :  : c[64] : -1 : 1
#var float4 LightPositions[29] :  : c[65] : -1 : 1
#var float4 LightPositions[30] :  : c[66] : -1 : 1
#var float4 LightPositions[31] :  : c[67] : -1 : 1
#var float4 LightPositions[32] :  : c[68] : -1 : 1
#var float4 LightPositions[33] :  : c[69] : -1 : 1
#var float4 LightPositions[34] :  : c[70] : -1 : 1
#var float4 LightPositions[35] :  : c[71] : -1 : 1
#var float4 LightPositions[36] :  : c[72] : -1 : 1
#var float4 LightPositions[37] :  : c[73] : -1 : 1
#var float4 LightPositions[38] :  : c[74] : -1 : 1
#var float4 LightPositions[39] :  : c[75] : -1 : 1
#var float4 LightPositions[40] :  : c[76] : -1 : 1
#var float4 LightPositions[41] :  : c[77] : -1 : 1
#var float4 LightPositions[42] :  : c[78] : -1 : 1
#var float4 LightPositions[43] :  : c[79] : -1 : 1
#var float4 LightPositions[44] :  : c[80] : -1 : 1
#var float4 LightPositions[45] :  : c[81] : -1 : 1
#var float4 LightPositions[46] :  : c[82] : -1 : 1
#var float4 LightPositions[47] :  : c[83] : -1 : 1
#var float4 LightPositions[48] :  : c[84] : -1 : 1
#var float4 LightPositions[49] :  : c[85] : -1 : 1
#var float4 LightColorsAndDynamics[0] :  : c[86] : -1 : 1
#var float4 LightColorsAndDynamics[1] :  : c[87] : -1 : 1
#var float4 LightColorsAndDynamics[2] :  : c[88] : -1 : 1
#var float4 LightColorsAndDynamics[3] :  : c[89] : -1 : 1
#var float4 LightColorsAndDynamics[4] :  : c[90] : -1 : 1
#var float4 LightColorsAndDynamics[5] :  : c[91] : -1 : 1
#var float4 LightColorsAndDynamics[6] :  : c[92] : -1 : 1
#var float4 LightColorsAndDynamics[7] :  : c[93] : -1 : 1
#var float4 LightColorsAndDynamics[8] :  : c[94] : -1 : 1
#var float4 LightColorsAndDynamics[9] :  : c[95] : -1 : 1
#var float4 LightColorsAndDynamics[10] :  : c[96] : -1 : 1
#var float4 LightColorsAndDynamics[11] :  : c[97] : -1 : 1
#var float4 LightColorsAndDynamics[12] :  : c[98] : -1 : 1
#var float4 LightColorsAndDynamics[13] :  : c[99] : -1 : 1
#var float4 LightColorsAndDynamics[14] :  : c[100] : -1 : 1
#var float4 LightColorsAndDynamics[15] :  : c[101] : -1 : 1
#var float4 LightColorsAndDynamics[16] :  : c[102] : -1 : 1
#var float4 LightColorsAndDynamics[17] :  : c[103] : -1 : 1
#var float4 LightColorsAndDynamics[18] :  : c[104] : -1 : 1
#var float4 LightColorsAndDynamics[19] :  : c[105] : -1 : 1
#var float4 LightColorsAndDynamics[20] :  : c[106] : -1 : 1
#var float4 LightColorsAndDynamics[21] :  : c[107] : -1 : 1
#var float4 LightColorsAndDynamics[22] :  : c[108] : -1 : 1
#var float4 LightColorsAndDynamics[23] :  : c[109] : -1 : 1
#var float4 LightColorsAndDynamics[24] :  : c[110] : -1 : 1
#var float4 LightColorsAndDynamics[25] :  : c[111] : -1 : 1
#var float4 LightColorsAndDynamics[26] :  : c[112] : -1 : 1
#var float4 LightColorsAndDynamics[27] :  : c[113] : -1 : 1
#var float4 LightColorsAndDynamics[28] :  : c[114] : -1 : 1
#var float4 LightColorsAndDynamics[29] :  : c[115] : -1 : 1
#var float4 LightColorsAndDynamics[30] :  : c[116] : -1 : 1
#var float4 LightColorsAndDynamics[31] :  : c[117] : -1 : 1
#var float4 LightColorsAndDynamics[32] :  : c[118] : -1 : 1
#var float4 LightColorsAndDynamics[33] :  : c[119] : -1 : 1
#var float4 LightColorsAndDynamics[34] :  : c[120] : -1 : 1
#var float4 LightColorsAndDynamics[35] :  : c[121] : -1 : 1
#var float4 LightColorsAndDynamics[36] :  : c[122] : -1 : 1
#var float4 LightColorsAndDynamics[37] :  : c[123] : -1 : 1
#var float4 LightColorsAndDynamics[38] :  : c[124] : -1 : 1
#var float4 LightColorsAndDynamics[39] :  : c[125] : -1 : 1
#var float4 LightColorsAndDynamics[40] :  : c[126] : -1 : 1
#var float4 LightColorsAndDynamics[41] :  : c[127] : -1 : 1
#var float4 LightColorsAndDynamics[42] :  : c[128] : -1 : 1
#var float4 LightColorsAndDynamics[43] :  : c[129] : -1 : 1
#var float4 LightColorsAndDynamics[44] :  : c[130] : -1 : 1
#var float4 LightColorsAndDynamics[45] :  : c[131] : -1 : 1
#var float4 LightColorsAndDynamics[46] :  : c[132] : -1 : 1
#var float4 LightColorsAndDynamics[47] :  : c[133] : -1 : 1
#var float4 LightColorsAndDynamics[48] :  : c[134] : -1 : 1
#var float4 LightColorsAndDynamics[49] :  : c[135] : -1 : 1
#var int LightShadowMaps[0] :  : c[136] : -1 : 1
#var int LightShadowMaps[1] :  : c[137] : -1 : 1
#var int LightShadowMaps[2] :  : c[138] : -1 : 1
#var int LightShadowMaps[3] :  : c[139] : -1 : 1
#var int LightShadowMaps[4] :  : c[140] : -1 : 1
#var int LightShadowMaps[5] :  : c[141] : -1 : 1
#var int LightShadowMaps[6] :  : c[142] : -1 : 1
#var int LightShadowMaps[7] :  : c[143] : -1 : 1
#var int LightShadowMaps[8] :  : c[144] : -1 : 1
#var int LightShadowMaps[9] :  : c[145] : -1 : 1
#var int LightShadowMaps[10] :  : c[146] : -1 : 1
#var int LightShadowMaps[11] :  : c[147] : -1 : 1
#var int LightShadowMaps[12] :  : c[148] : -1 : 1
#var int LightShadowMaps[13] :  : c[149] : -1 : 1
#var int LightShadowMaps[14] :  : c[150] : -1 : 1
#var int LightShadowMaps[15] :  : c[151] : -1 : 1
#var int LightShadowMaps[16] :  : c[152] : -1 : 1
#var int LightShadowMaps[17] :  : c[153] : -1 : 1
#var int LightShadowMaps[18] :  : c[154] : -1 : 1
#var int LightShadowMaps[19] :  : c[155] : -1 : 1
#var int LightShadowMaps[20] :  : c[156] : -1 : 1
#var int LightShadowMaps[21] :  : c[157] : -1 : 1
#var int LightShadowMaps[22] :  : c[158] : -1 : 1
#var int LightShadowMaps[23] :  : c[159] : -1 : 1
#var int LightShadowMaps[24] :  : c[160] : -1 : 1
#var int LightShadowMaps[25] :  : c[161] : -1 : 1
#var int LightShadowMaps[26] :  : c[162] : -1 : 1
#var int LightShadowMaps[27] :  : c[163] : -1 : 1
#var int LightShadowMaps[28] :  : c[164] : -1 : 1
#var int LightShadowMaps[29] :  : c[165] : -1 : 1
#var int LightShadowMaps[30] :  : c[166] : -1 : 1
#var int LightShadowMaps[31] :  : c[167] : -1 : 1
#var int LightShadowMaps[32] :  : c[168] : -1 : 1
#var int LightShadowMaps[33] :  : c[169] : -1 : 1
#var int LightShadowMaps[34] :  : c[170] : -1 : 1
#var int LightShadowMaps[35] :  : c[171] : -1 : 1
#var int LightShadowMaps[36] :  : c[172] : -1 : 1
#var int LightShadowMaps[37] :  : c[173] : -1 : 1
#var int LightShadowMaps[38] :  : c[174] : -1 : 1
#var int LightShadowMaps[39] :  : c[175] : -1 : 1
#var int LightShadowMaps[40] :  : c[176] : -1 : 1
#var int LightShadowMaps[41] :  : c[177] : -1 : 1
#var int LightShadowMaps[42] :  : c[178] : -1 : 1
#var int LightShadowMaps[43] :  : c[179] : -1 : 1
#var int LightShadowMaps[44] :  : c[180] : -1 : 1
#var int LightShadowMaps[45] :  : c[181] : -1 : 1
#var int LightShadowMaps[46] :  : c[182] : -1 : 1
#var int LightShadowMaps[47] :  : c[183] : -1 : 1
#var int LightShadowMaps[48] :  : c[184] : -1 : 1
#var int LightShadowMaps[49] :  : c[185] : -1 : 1
PARAM c[190] = { program.local[0..189] };
ATTRIB fragment_texcoord[] = { fragment.texcoord[0..0] };
TEMP R0, R1, R2, R3, R4, R5, R6, R7, R8;
TEMP RC, HC;
OUTPUT result_color0 = result.color;
TEXTURE texture8 = texture[8];
TEXTURE texture9 = texture[9];
TEXTURE texture10 = texture[10];
TEXTURE texture11 = texture[11];
TEXTURE texture0 = texture[0];
TEXTURE texture0[] = { texture[0..7] };
MOV.F R0.x, {4, 0, 0, 0};
MUL.F R0.y, R0.x, c[188].x;
MOV.F R0.x, {0.5, 0, 0, 0};
DIV.F R0.w, c[187].x, R0.y;
MUL.F R0.y, R0.x, c[187].x;
MAD.F R0.z, R0.x, -c[188].x, fragment.position.y;
DIV.F R1.x, R0.z, R0.y;
MUL.F R0.z, R0.w, {3, 0, 0, 0}.x;
MAD.F R0.x, R0, -c[187], fragment.position;
MUL.F R1.y, R1.x, R0.z;
DIV.F R0.x, R0, R0.y;
MUL.F R1.x, R0.z, R0;
MOV.F R1.z, {1, 0, 0, 0}.x;
DP3.F R0.x, R1, R1;
RSQ.F R0.y, R0.x;
MUL.F R1.xyz, R0.y, R1;
TEX.F R0.x, fragment.texcoord[0], texture11, 2D;
MUL.F R0.xyz, R1, R0.x;
MUL.F R1.xyz, R0.y, c[1];
MAD.F R1.xyz, R0.x, c[0], R1;
MAD.F R0.xyz, R0.z, c[2], R1;
ADD.F R4.xyz, R0, c[3];
TEX.F R2, fragment.texcoord[0], texture8, 2D;
TEX.F R3.xyz, fragment.texcoord[0], texture10, 2D;
MOV.F R5.xyz, {0, 0, 0, 0}.x;
MOV.F R6.xyz, {0, 0, 0, 0}.x;
MOV.F R1.xyz, {0, 0, 0, 0}.x;
MOV.F R7.xyz, {0, 0, 0, 0}.x;
TEX.F R0.x, fragment.texcoord[0], texture9, 2D;
MOV.S R1.w, {0, 0, 0, 0}.x;
REP.S ;
SLT.S R0.y, R1.w, c[189].x;
SEQ.U R0.y, -R0, {0, 0, 0, 0}.x;
MOV.U.CC RC.x, -R0.y;
BRK   (GT.x);
MOV.F R0.y, {0.5, 0, 0, 0}.x;
MOV.U R0.z, R1.w;
SGT.F R0.y, c[R0.z + 86].w, R0;
TRUNC.U.CC HC.x, R0.y;
IF    NE.x;
MOV.U R0.y, R1.w;
MOV.S R0.z, {0, 0, 0, 0}.x;
MOV.S R3.w, c[R0.y + 136].x;
SEQ.S R0.y, R3.w, R0.z;
MOV.U.CC RC.x, -R0.y;
IF    NE.x;
MOV.U R3.w, R1;
ADD.F R8.xyz, -R4, c[R3.w + 36];
DP3.F R0.y, R8, R8;
RSQ.F R4.w, R0.y;
MUL.F R8.xyz, R4.w, -R8;
DP3.F R5.w, R3, R8;
MUL.F R0.yzw, R5.w, R3.xxyz;
MAD.F R0.yzw, -R0, {2, 0, 0, 0}.x, R8.xxyz;
ADD.F R8.xyz, R4, -c[186];
DP3.F R7.w, -R0.yzww, -R0.yzww;
DP3.F R6.w, R8, R8;
RSQ.F R7.w, R7.w;
RSQ.F R6.w, R6.w;
MUL.F R0.yzw, R7.w, -R0;
MUL.F R8.xyz, R6.w, R8;
DP3.F R0.z, R8, R0.yzww;
MAX.F R0.w, R0.z, {0, 0, 0, 0}.x;
RCP.F R0.y, c[R3.w + 36].w;
DIV.F R0.z, R0.y, R4.w;
RCP.F R0.y, R4.w;
MAD.F R0.y, R0.z, R0, R0.z;
ADD.F R0.y, R0, {1, 0, 0, 0}.x;
DIV.F R4.w, R2, R0.y;
POW.F R0.w, R0.w, {90, 0, 0, 0}.x;
MAX.F R0.z, -R5.w, {0.1, 0, 0, 0}.x;
MUL.F R0.w, R4, R0;
DIV.F R0.y, R0.z, R0.y;
MAD.F R7.xyz, c[R3.w + 86], R0.w, R7;
MAD.F R1.xyz, c[R3.w + 86], R0.y, R1;
ELSE;
MOV.U R0.y, R1.w;
MOV.F R8.xyz, c[R0.y + 36];
ADD.F R1.xyz, -R8, R4;
DP3.F R0.z, R1, R1;
RSQ.F R0.z, R0.z;
MOV.S R0.w, {0, 0, 0, 0}.x;
MOV.S R0.y, c[R0.y + 136].x;
SGT.S R0.w, R0.y, R0;
SEQ.U R0.w, -R0, {0, 0, 0, 0}.x;
MOV.U.CC RC.x, -R0.w;
RCP.F R4.w, R0.z;
IF    NE.x;
SLT.S R0.y, R0, {0, 0, 0, 0}.x;
MOV.U.CC RC.x, -R0.y;
IF    NE.x;
MOV.S R5.w, {0, 0, 0, 0}.x;
REP.S {32, 0, 0, 0};
MOV.U R1.x, R5.w;
ADD.F R0.yzw, R4.xxyz, -R8.xxyz;
MUL.F R1.xyz, R4.w, c[R1.x + 4];
MAD.F R1.xyz, R1, {0.0099999998, 0, 0, 0}.x, R0.yzww;
TEX.F R1.x, R1, texture0, CUBE;
ADD.F R0.y, R1.x, {0.050000001, 0, 0, 0}.x;
SLT.F R0.y, R4.w, R0;
TRUNC.U.CC HC.x, R0.y;
IF    NE.x;
ENDIF;
ADD.S R5.w, R5, {1, 0, 0, 0}.x;
ENDREP;
ENDIF;
ENDIF;
MOV.U R0.y, R1.w;
ADD.F R1.xyz, R4, -c[R0.y + 36];
MOV.U R0.y, -R3.w;
TEX.F R1.x, R1, texture0, CUBE;
MUL.F R1.xyz, R1.x, {0.1, 0, 0, 0}.x;
ENDIF;
ELSE;
MOV.U R3.w, R1;
ADD.F R8.xyz, -R4, c[R3.w + 36];
DP3.F R0.y, R8, R8;
RSQ.F R4.w, R0.y;
MUL.F R8.xyz, R4.w, -R8;
DP3.F R5.w, R3, R8;
MUL.F R0.yzw, R5.w, R3.xxyz;
MAD.F R0.yzw, -R0, {2, 0, 0, 0}.x, R8.xxyz;
ADD.F R8.xyz, R4, -c[186];
DP3.F R7.w, -R0.yzww, -R0.yzww;
DP3.F R6.w, R8, R8;
RSQ.F R7.w, R7.w;
RSQ.F R6.w, R6.w;
MUL.F R0.yzw, R7.w, -R0;
MUL.F R8.xyz, R6.w, R8;
DP3.F R0.z, R8, R0.yzww;
MAX.F R0.w, R0.z, {0, 0, 0, 0}.x;
RCP.F R0.y, c[R3.w + 36].w;
DIV.F R0.z, R0.y, R4.w;
RCP.F R0.y, R4.w;
MAD.F R0.y, R0.z, R0, R0.z;
ADD.F R0.y, R0, {1, 0, 0, 0}.x;
DIV.F R4.w, R2, R0.y;
POW.F R0.w, R0.w, {90, 0, 0, 0}.x;
MAX.F R0.z, -R5.w, {0.1, 0, 0, 0}.x;
MUL.F R0.w, R4, R0;
DIV.F R0.y, R0.z, R0.y;
MAD.F R6.xyz, c[R3.w + 86], R0.w, R6;
MAD.F R5.xyz, c[R3.w + 86], R0.y, R5;
ENDIF;
ADD.S R1.w, R1, {1, 0, 0, 0}.x;
ENDREP;
MUL.F R3.xyz, R0.x, R6;
MAD.F R0.xyz, R0.x, R5, R1;
MAD.F R0.xyz, R2, R0, R3;
ADD.F result_color0.xyz, R0, R7;
MOV.F result_color0.w, {1, 0, 0, 0}.x;
END
# 151 instructions, 9 R-regs

Load GLSL vertex shader: "shaders/Transparency.glvert"
Load GLSL pixel shader: "shaders/Transparency.glfrag"
Load GLSL vertex shader: "shaders/ShadowMap.glvert"
Load GLSL pixel shader: "shaders/ShadowMap.glfrag"

===========
END-OF-LINE

Könnt ihr euch das irgendwie erklären ?(
Das Problem ist aus meiner Sicht aus dem nichts entstanden, sprich: ich hatte zuvor etwas auskommentiert was nicht funktioniert hat, jetzt wieder reingeholt und es geht nix mehr. Natürlich zwischenzeitlich was geändert aber nichts
an der Menge von Uniforms.

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

2

29.02.2012, 23:20

Ok, mit der Fehlermeldung des AMD ShaderAnalyzers kann man schon mehr anfangen:

C-/C++-Quelltext

1
ERROR: error(#15) Extension: 'sm5' isn't supported=> sampler array isn't support indirect index Sampler array indexes must be integral constant expressions

Aber so ganz verstehe ich das immer noch nicht.
PS: Der Fehler tritt auf, wenn ich wie folgt über ein Array den Index des Sampler-Arrays ermittel:

C-/C++-Quelltext

1
2
3
4
uniform samplerCube ShadowCubeMaps[...];
uniform int LightShadowMaps[...];
/* ... */
textureCube(ShadowCubeMaps[LightShadowMaps[i]], /* ... */);

Muss ich dafür erst eine Extension anfordern?

storage

Treue Seele

Beiträge: 138

Wohnort: Bad Salzungen

  • Private Nachricht senden

3

29.02.2012, 23:31

Ohne das ich mich mit Shadern auskenne denke ich laut der Fehlermeldung oben ist dies der fehler.

Zitat


line 250, column 9: error: redeclared identifier <-- bedeudet für mich so viel wie mehrfach deklaration


Das hier ist Zeile 250

C-/C++-Quelltext

1
2
TEXTURE texture0 = texture[0];
TEXTURE texture0[] = { texture[0..7] };

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

29.02.2012, 23:34

Steht ja alles da:

Zitat

[...] Sampler array indexes must be integral constant expressions [...]

Du kannst eben keine Arrays aus Samplern bauen und das über eine Variable indizieren.

Zitat von »GLSL 4.2 Specification«

When aggregated into arrays within a shader, samplers can only be indexed with a dynamically uniform integral expression, otherwise results are undefined.

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

5

01.03.2012, 11:43

Hat jemand eine Idee, wie ich das anders lösen kann? Wenn ich texture2DArray nehme muss ich die Texturen ja per glTextImage3D erstellt haben. Aber ich will die verschiedenene 2D Texturen dynamisch und effizient auswechseln können und nicht jedes Mal die ImageBuffer auf der CPU neu schreiben müssen.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

01.03.2012, 11:52

Aber ich will die verschiedenene 2D Texturen dynamisch und effizient auswechseln können und nicht jedes Mal die ImageBuffer auf der CPU neu schreiben müssen.

Was genau meinst du damit?

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

7

01.03.2012, 17:03

Ich will mehrere Shadow-Map Lichtquellen einbauen und dafür will ich natürlich über das Sampler-Array iterieren. Aber das geht ja anscheinend nicht.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#define MAX_LIGHTS 10

uniform samplerCube ShadowCubeMaps[4];

uniform int HasLightShadowMap[MAX_LIGHTS];
uniform int ShadowMapIndex[MAX_LIGHTS]; // Die werte dieser Array-Elemente können im Bereich [0 .. 3] liegen.

/* ... */

for (int i = 0; i < LightCount; ++i) {
    if (HasLightShadowMap[i] == 1) {
        ShadowCubeMaps[ShadowMapIndex[i]] // hier soll per variable auf das Sampler-Array zugegriffen werden
        /* ... */
    } else {
        /* ... */
    }
}

So hatte ich mir das eig. gedacht. Aber das scheint ja nicht zu funktionieren. Welche Alternativen gäbe es dazu?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

01.03.2012, 18:10

Texture Arrays?

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

9

01.03.2012, 19:32

Wie genau sehen die aus - also welche Funktionen gibt's dafür von OpenGL? In einem Artikel hab ich was von "glTexImage3D(GL_TEXTURE_2D_ARRAY, ...)" gelesen.
Aber dann müssten alle ShadowMap-ImageBuffer direrkt hintereinander im Speicher stehen und das ist nicht effizient machbar.

Oder wie macht man das?

Bzw. wie kann ich effizient die Shadow-Maps in ein Texture-Array rendern?

Moe

Frischling

Beiträge: 85

Wohnort: München

  • Private Nachricht senden

10

01.03.2012, 22:15

Du kannst den Präprozessor nutzen. Also

C-/C++-Quelltext

1
#define LightCount ANZAHL

und Du kompilierst den Shader für alle Varianten und speicherst ihn (evtl. geht es auch mit const). Nachdem MAX_LIGHTS 10 ist, brauchst Du scheinbar nur 10 Varianten, ist also noch überschaubar. :crazy: Dann kann der Kompiler die Schleife auflösen und macht aus dem dynamischen Zugriff einen Konstanten. Ich weiß natürlich nicht, ob der Rest vom Shader die Variante ausschließt :)

Werbeanzeige