(I am new to all of this so bear with me.)
So, I have tried so many attempts to get gzdoom to function. But the versions i've tried (2.1.1[64x], 2.1.1, 1.9.1, g2.2pre-1318-g8b35c08) dont seem to work for me. And every time I attemp to try a mod or even launch gzdoom, I get this error:
Gez wrote:What video card are you using? Are its drivers up to date?
Does ZDoom (not GZDoom) works?
(Sorry for the late reply) My video card is "ATI Mobility Radeon HD 4200 Series" and from what I know, I dont think it's possible to update the driver if it does need a update. And Zdoom does work.
That card only supports OpenGL 2.0. And it is possible to update the driver, but you won't be able to get any later ones for it.
That driver will at least get your OpenGL 2.0 working so that you can run the 1.x builds. But as Graf already asked, what DO you get running the 1.9.1 builds?
No idea about ATI Mobility Radeon HD 4200, but I have a notebook with HD 4330. Indeed, GZDoom 2.x didn't work, thanks to lack of GL_ARB_sampler_objects extention.
However, Graf added a workaround for this yesterday. So I built g2.2pre-1350-gc786b65 by myself. Unfortunately it crashes deep inside ATI OpenGL driver on attempt to link the first shader, at gl_shader.cpp:176.
WARNING: 0:87: warning(#283) Implicit cast from int to float
WARNING: 0:200: warning(#283) Implicit cast from int to float
ERROR: 0:240: Compiler error: uniform block is forbidden for this shader
ERROR: 0:248: Compiler error: uniform block is forbidden for this shader
ERROR: 0:249: Compiler error: uniform block is forbidden for this shader
ERROR: 0:259: Compiler error: uniform block is forbidden for this shader
ERROR: 0:260: Compiler error: uniform block is forbidden for this shader
ERROR: 0:329: Compiler error: uniform block is forbidden for this shader
ERROR: 0:339: Compiler error: uniform block is forbidden for this shader
ERROR: 0:340: Compiler error: uniform block is forbidden for this shader
ERROR: error(#273) 0 compilation errors. No code generated
WARNING: 0:200: warning(#283) Implicit cast from int to float
WARNING: 0:200: warning(#283) Implicit cast from int to float
ERROR: 0:240: Compiler error: uniform block is forbidden for this shader
ERROR: 0:248: Compiler error: uniform block is forbidden for this shader
ERROR: 0:249: Compiler error: uniform block is forbidden for this shader
ERROR: 0:259: Compiler error: uniform block is forbidden for this shader
ERROR: 0:260: Compiler error: uniform block is forbidden for this shader
ERROR: 0:329: Compiler error: uniform block is forbidden for this shader
ERROR: 0:339: Compiler error: uniform block is forbidden for this shader
ERROR: 0:340: Compiler error: uniform block is forbidden for this shader
ERROR: error(#273) 0 compilation errors. No code generated
WARNING: 0:87: warning(#283) Implicit cast from int to float
WARNING: 0:200: warning(#283) Implicit cast from int to float
WARNING: 0:87: warning(#283) Implicit cast from int to float
I'm trying to fix that although the notebook is so crappy and so slow, it's the real pain in a butt to compile and debug on it.
GZDoom 1.x works, OK for vanilla and other not very complex maps.
I think on such hardware users should stick to 1.x. It's not that they lose too much, I think the only features that really get compromised are dynamic lights and clip planes.
I've been trying to track down some issues on a somewhat newer 4800 with Eruanna's help, but it looks to me that the driver's GL 3.x support is just broken beyond repair. I'm currently trying to make GZDoom 2.x work with a GLSL 1.2 shader but that requires quite a bit of reworking to use the builtin shader inputs.
This didn't solve the crash anyway. It appeared that problem is in value of NUM_UBO_LIGHTS itself. From my experiment I can say that the safe value of FLightBuffer::mBlockSize (and so, NUM_UBO_LIGHTS) is 236. With 240 the picture is screwed completely, greater values lead to a crash:
Screenshot_Doom_20160423_124254.png (116.73 KiB) Viewed 2740 times
Even with the safe value there are some rendering glitches. For example, the chainsaw is displaced and transformed quite wildly when camera moves:
Screenshot_Doom_20160423_124417.jpg (108.48 KiB) Viewed 2740 times
Thanks for the UBO information. It may help solve part of the problem - but I'm sure that the offsetting can be fixed, too. It looks somehow like the transformation matrices get trashed - that's why I want to make a GLSL 1.2 shader using the deprecated builtins which are managed by the driver, not the application.
But this mess really looks like these cards have no decent means to do shader-based dynamic lights, if their uniform buffer support is this broken. Putting the light array in the global uniform space won't work. I tried that before and ATI drivers puked all over the place. Yes, it compiles, but don't dare using any lights...
Eruanna wrote:That card only supports OpenGL 2.0. And it is possible to update the driver, but you won't be able to get any later ones for it.
That driver will at least get your OpenGL 2.0 working so that you can run the 1.x builds. But as Graf already asked, what DO you get running the 1.9.1 builds?
I found out what the problem on Eruanna's card is: The implementation of gl_ClipDistance is broken. In fact, it is so broken that I see no way to get it working.
@_mental_: Can you comment out all lines containing an assignment to this array and see if it solves the issues on your card as well?
I believe the only course of action here is to downpatch the shader to GLSL 1.2 and replace gl_ClipDistance with the old clip planes feature - that'd be the same feature set used by GZDoom 1.x. If that works out we might be able to merge the two branches again, the only thing that may have to be sacrificed for true GL 2.x cards is a few enhanced effects.
So what I imagine is this:
OpenGL 3.x and higher uses the modern shader with all features, unless ATI and not GL 4 (which seem to be the problem drivers.)
ATI GL 3.x use the GLSL 1.2 shader with all features except dynamic lights which will have to be done with texture overlays, just like in 1.9.
Apple: I don't know how well shader based lights work for you, if they are fine it may be possible to use the 1.9 shader code, otherwise: same as ATI 3.x, if compatible hardware can be detected (the necessary extensions to find such cards are present.)
For legacy GL 2.x hardware, these days only some bottom-of-the-barrel Intel chipsets, a few sacrifices will have to be made (invunerability map by just doing an inverse overlay, no desaturation, no brightmaps and no shader based warping), unless the users enable the shaders in the menu. My problem is, I have no information how this old hardware performs with active shaders compared to no shaders. Nominally they support all needed features, but on NVidia and ATI GL 2 hardware they were just too slow. But these Intel chipsets are newer, and while slow the impact of shaders may be less.
If I had any newer Intels other than the one in my latest laptop I'd offer to test for you. Unfortunately, I only have an HD 4600 and a GMA 900. The GMA is only capable of running OpenGL 1.4, which GZDoom stopped supporting after 1.8.6.
The HD 4600 runs GZDoom 2.x very smoothly and without any rendering errors, so there is no need for adjustments on it.
I have a HD4000 myself in my CPU and occaionally use that for testing, aside from performance issues there's no problems with modern Intels.
The GMA900 is indeed useless.