Installed Cool VL Viewer 1.26.9.0 on:
* Linux 3.8.8 / Fedora 18
* AMD Catalyst 13.1
On startup - crash if deferred rendering was enabled.
The crash message was:
~~~~~~~~~~~~~~~~~~
Loading Shaders:
~~~~~~~~~~~~~~~~~~
2013-04-21T18:54:13Z WARNING: linkProgramObject: GLSL Linker Error:
2013-04-21T18:54:13Z WARNING: dumpObjectLog: Fragment shader(s) failed to link.
Fragment link error: INVALID_OPERATION.
ERROR: 148:1: error(#143) Undeclared identifier: i
ERROR: 148:1: error(#166) Integer expression required: []
ERROR: 148:1: error(#166) Integer expression required: []
ERROR: 148:1: error(#166) Integer expression required: []
ERROR: 148:1: error(#166) Integer expression required: []
ERROR: 148:1: error(#166) Integer expression required: []
ERROR: 148:1: error(#166) Integer expression required: []
ERROR: error(#273) 7 compilation errors. No code generated
2013-04-21T18:54:13Z WARNING: createShader: Failed to link shader: Deferred Skinned Alpha Shader
2013-04-21T18:54:13Z WARNING: createShader: Failed to link using shader level 1 trying again using shader level 0
2013-04-21T18:54:13Z WARNING: loadShaderFile: GLSL Shader file not found: deferred/alphaV.glsl
2013-04-21T18:54:13Z WARNING: loadShaderFile: GLSL Shader file not found: deferred/alphaF.glsl
2013-04-21T18:54:13Z WARNING: createShader: Failed to link shader: Deferred Skinned Alpha Shader
The error seems to be in:
* $INSTALLDIR/app_settings/shaders/class2/deferred/alphaF.glsl line 227
* $INSTALLDIR/app_settings/shaders/class1/deferred/alphaF.glsl line 133
Near the bottom of both files are new code starting with macro #define LIGHT_LOOP(i) followed col.rgb operations.
Then, there are 7 calls to LIGHT_LOOP() with the integers 1-7 passed in.
To fix the error, I had to define i as an integer and initialize it on the line just above the #define LIGHT_LOOP(i):
My resulting alphaF.glsl has:
With that initialization (int i=0;) added - I can enable deferred rendering without crashing or GLSL compile errors thrown into the log.
But, I have not tested if materials display properly at this point.