Re: [Celestia-developers] OpenGL 2.0
Real-time 3D visualization of space
Status: Beta
Brought to you by:
cjlaurel
From: Chris L. <cl...@ww...> - 2005-02-28 04:44:21
|
> I just ran Celestia with the OpenGL 2.0 render path, and I got errors on > the GLSL shaders. I don't recall ever getting errors there, just it not > working. The errors seem to have line numbers associated with them. > Hopefully this will be useful in correcting these finally, now that > there is feedback! For the big error, it looks like the ATI glsl parser > doesn't like multiplying vectors by scalars? Maybe all it wants is > typecasting? The problem is that compliant GLSL is extremely strict with types, but NVIDIA's GLSL compiler doesn't enforce all of GLSL's rules. Unfortunately, this means that errors tend to slip through . . . The NVIDIA compiler allows multiplication of vectors by scalars, and it automatically promotes integers to floats as appropriate. I wish that the NVIDIA compiler was stricter. Actually, what I really wish is that the authors of the GLSL standard didn't insist on such strict type rules to begin with. It makes programs harder to read--if I want to multiply a vec3 v by 2, I have to write this: vec3 v2 = v * vec3(2.0, 2.0, 2.0); Whereas the NVIDIA compiler permits this: vec3 v2 = v * 2; But whatever . . . I've modified shadermanager.cpp to emit compliant (and thus more verbose) GLSL. I'm not quite ready to check it in, however, as I've been doing a lot of modifications to that file in order to support improved mesh rendering. --Chris |