Post by whizse on Jul 16, 2012 17:19:24 GMT -5
Hi,
I recently tried both Helena the Third and Ensign-1 with the Mesa graphics drivers. While both of the games start and run fine, many of the shaders have problems and does not compile.
Some of these might very well turn out to be bugs in Mesa, and if so I will happily report them there, but at least in one case this is a bug in the game.
Helena
Problems in cell_fragment.glsl
All of these except the ones about the if-statement condition can be fixed by adding #version 120 to the shader (with no #version you get GLSL 1.10).
Ensign 1
lighting_fragment.glsl
lighting_fragment_nonormal.glsl:
(Same here, requesting 1.20 probably makes the last two lines go away.)
lighting_fragment_spotlight.glsl
lighting_fragment_spotlight_old.glsl:
lighting_vertex.glsl:
I'm guessing that you do most of your development against Nvidia and AMDs proprietary drivers which unfortunately plays fast and loose when it comes to the GLSL spec, which results in problems with drivers that try to implement the specifications correctly.
I recently tried both Helena the Third and Ensign-1 with the Mesa graphics drivers. While both of the games start and run fine, many of the shaders have problems and does not compile.
Some of these might very well turn out to be bugs in Mesa, and if so I will happily report them there, but at least in one case this is a bug in the game.
Helena
Problems in cell_fragment.glsl
0:30(15): error: if-statement condition must be scalar boolean
0:55(19): error: if-statement condition must be scalar boolean
0:63(15): error: if-statement condition must be scalar boolean
0:100(31): error: Could not implicitly convert operands to arithmetic operator
0:0(0): error: no matching function for call to `ceil()'
0:0(0): error: candidates are: float ceil(float)
0:0(0): error: vec2 ceil(vec2)
0:0(0): error: vec3 ceil(vec3)
0:0(0): error: vec4 ceil(vec4)
0:100(37): error: Operands to arithmetic operators must be numeric
0:102(15): error: `gl_FragColor' undeclared
0:102(15): error: type mismatch
All of these except the ones about the if-statement condition can be fixed by adding #version 120 to the shader (with no #version you get GLSL 1.10).
Ensign 1
lighting_fragment.glsl
0:26(22): error: syntax error, unexpected '{'
lighting_fragment_nonormal.glsl:
0:23(19): error: if-statement condition must be scalar boolean
0:52(19): error: if-statement condition must be scalar boolean
0:80(15): error: `gl_FragColor' undeclared
0:80(15): error: type mismatch
(Same here, requesting 1.20 probably makes the last two lines go away.)
lighting_fragment_spotlight.glsl
0:23(22): error: syntax error, unexpected '{'
lighting_fragment_spotlight_old.glsl:
0:23(22): error: syntax error, unexpected '{'
lighting_vertex.glsl:
0:19(15): error: operand of `!' must be scalar boolean
I'm guessing that you do most of your development against Nvidia and AMDs proprietary drivers which unfortunately plays fast and loose when it comes to the GLSL spec, which results in problems with drivers that try to implement the specifications correctly.