Commit graph

176 commits

Author SHA1 Message Date
Christoph Oelckers
9c659b948c - reactivated texture warping. 2014-05-12 15:13:07 +02:00
Christoph Oelckers
55d4c89753 - fixed: fog density calculation for fixed function was not correct. 2014-05-12 14:58:37 +02:00
Christoph Oelckers
4d005bdfa0 shader rework
All those special shaders have been merged together.
Mostly working but the non-shader lighting seems a bit broken.
2014-05-12 14:45:41 +02:00
Christoph Oelckers
98cc7eeb99 pass softlightlevel through render state. 2014-05-12 00:13:19 +02:00
Christoph Oelckers
b9a6fe80a4 Do not use the shader to handle STYLEF_RedIsAlpha.
Turns out that the name doesn't accurately describe what it does.
It is correct for images that come with their own palette or are true color.
But for images using the game palette it doesn't use the red channel to determine translucency but the palette index! Ugh...

This means it cannot be done with a simple operation in the shader because it won't get a proper source image. The only solution is to create a separate texture.
2014-05-11 23:56:53 +02:00
Christoph Oelckers
c47c7421a3 - route all glColor calls through render state.
- add sector links to dynamic lights.
2014-05-11 22:57:42 +02:00
Christoph Oelckers
978ace241c - removed all code that mixes together the different lighting methods. Now everything goes through the 3 different light parameters in the render state.
- removed cm parameter from many functions.
2014-05-11 21:47:54 +02:00
Christoph Oelckers
887d35d559 - remove colormap from texture generation parameters. The one remaining special case, alpha texture on old hardware is now handled by the currently set texture mode at the time of use.
- use the cleaned up decal lighting code from the first GLEW branch.
2014-05-11 19:44:19 +02:00
Christoph Oelckers
7793bbbcc9 Further cleanup of lighting code.
- remove thing color from lighting calculations.
- implement alpha textures and inverse sprites for infrared as texture modes. This still requires some handling for the alpha texture mode for non-shader rendering because there is no way in the fixed pipeline to do it. The inverted texture effect can be done with a texture combiner.
- fixed: ThingColor for sprites was set in the wrong place. It must be in the Process function, not in the lighting calculation.
- added functions for isolated calculation of sprites' dynlight color.
2014-05-11 17:56:38 +02:00
Christoph Oelckers
607be91c48 - bad copy. 2014-05-11 16:54:11 +02:00
Christoph Oelckers
8ae97bc3e1 -looks like we still need this... 2014-05-11 16:51:33 +02:00
Christoph Oelckers
52056a05bd - changed handling of DynLight in shader to serve as a global dynamic light color for all lighting modes. 2014-05-11 16:49:17 +02:00
Christoph Oelckers
53f4cd0108 - added objectcolor uniform. This will be used to hold the thingcolor for shader based rendering. 2014-05-11 16:06:25 +02:00
Christoph Oelckers
f3a9cb0cfa remove special texture creation for fullscreen colormaps.
On GL 3.x+ this isn't needed at all and on older hardware it causes performance issues, in particular with hires textures due to impossibility of precaching.
In addition it forces some really awkward handling of lighting for things that have their own color, like stenciled sprites or particles.

With this special case gone it will be possible to handle this case in a saner manner than it is right now.

As compensation for older hardware a fullscreen blend will be drawn over the entire screen. This won't be 100% accurate but it's preferable to keeping the current method.
2014-05-11 14:46:37 +02:00
Christoph Oelckers
5947584bff Merge branch 'master' into Glew_Version_For_Real 2014-05-11 13:29:37 +02:00
Christoph Oelckers
cd6d653b59 - fixed: the delayed state changer for the alpha function called glBlendFunc instead of glAlphaFunc. 2014-05-11 13:29:06 +02:00
Christoph Oelckers
09f4071436 Ok, it had to be done: Removed shader support for pre GLSL 1.3/GL 3.0 hardware. The compromises needed to accomodate these are just too bad and would block any attempt at streamlining the code. 2014-05-11 13:27:51 +02:00
Christoph Oelckers
7d3beb665b - rewrote vertex buffer code to require GL_ARB_BUFFER_STORAGE extension.
This means it won't work anymore on anything that doesn't support OpenGL 4.0, but I don't think this is a problem. On older NVidia cards performance gains could not be seen and on older AMDs using the vertex buffer was even worse as long as it got mixed with immediate mode rendering.
2014-05-10 21:47:07 +02:00
Christoph Oelckers
b09405a8bd - changed rendering of glowing walls so that it doesn't require an additional vertex attribute, just pass the floor and ceiling planes as uniforms. 2014-05-10 17:09:43 +02:00
galtgendo
8f97e96af1 silence a noisy warning 2014-03-28 01:54:42 +01:00
Christoph Oelckers
917a869a54 - fixed: gl_SetFog set the vertex attribute for software lighting mode without checking if the mode is actually on. 2013-12-23 09:56:16 +01:00
Christoph Oelckers
95163e378e - added a fog layer when drawing sprites with render style reverse subtract. 2013-12-05 15:06:10 +01:00
Christoph Oelckers
2885056f46 - moved GLEXT API out of RenderContext struct. 2013-09-03 18:29:39 +02:00
Christoph Oelckers
26943fe3fd - removed gl interface function pointers for all OpenGL32.dll entry points. 2013-09-03 14:05:41 +02:00
Christoph Oelckers
b61ef3a107 - bumped minimum supported OpenGL version to 1.4. The engine was already using several 1.3 and 1.4 features which would have caused problems on 1.2.
- removed gl_vid_compatibility. With the bump to 1.4 no hardware requiring this flag is supported anymore.
- disabled 16 bit framebuffers for the same reason. As a conseqence all code for rendering without stencil could also be removed.
2013-08-18 15:41:52 +02:00
Christoph Oelckers
399d0974ab - added GL render as of SVN revision 1600. 2013-06-23 09:49:34 +02:00