Magnus Norddahl
24f748da03
Add gbuffer pass support to FShaderManager and FRenderState
2016-09-20 02:57:57 +02:00
Christoph Oelckers
8b6e09ca09
- changed the license of the OpenGL renderer to LGPL v3.
...
This was done to clean up the license and to ensure that any commercial fork of the engine has to obey the far stricter requirements concerning source distribution. The old license was compatible with GPLv2 whereas combining GPLv2 and LGPLv3 force a license upgrade to GPLv3. The license of code that originates from ZDoomGL has not been changed.
2016-09-14 20:01:13 +02:00
Christoph Oelckers
3389a5a74e
- removed most of the specific options for legacy hardware and consolidated them in one variable (does not work yet.)
2016-09-01 11:52:52 +02:00
Christoph Oelckers
4e8a96aa0e
- removed FRenderState::set2DMode because it had no effect. This looks like development garbage from old times.
2016-08-14 09:14:26 +02:00
Christoph Oelckers
9c9edbffdb
- on older ATI drivers where the clip planes are broken, only disable the clip planes themselves, but not OpenGL 3.x so that dynamic lights still work as intended.
...
- only disable clip planes on Windows, but not on Linux or macOS.
- If a driver reports full OpenGL 4.5 support, assume that all features are working properly.
2016-08-08 12:55:09 +02:00
alexey.lysiuk
7de242930a
Removed obsolete gamma correct shader used on macOS only
2016-07-30 15:30:35 +03:00
Christoph Oelckers
4d7be0e20e
- added software interpolation as a fallback for models.
...
This is not tested yet so no guarantees!
2016-05-03 13:10:00 +02:00
alexey.lysiuk
44b019413c
Implemented gamma correction in OS X native backend using shader effect
2016-05-02 10:04:09 +03:00
Christoph Oelckers
21283b18f4
- preparations for using clip planes on line portals.
2016-04-29 01:48:06 +02:00
Christoph Oelckers
09f54b0940
- cleaned up the clip plane management for portals.
...
Unfortunately the math behind the old clip planes is utterly impenetrable and so poorly documented that I have no idea how to set that up, so it is deactivated for now. It wasn't working anyway.
2016-04-27 00:41:00 +02:00
Christoph Oelckers
066d5c63e2
- better be safe and not call GL_CLIP_DISTANCE functions on old hardware.
2016-04-26 21:55:17 +02:00
Christoph Oelckers
924b72b633
- added workarounds for the invulnerability colormap for non-shader rendering. Unlike the shader based versions these do not decolorize the screen. The advantage to the old texture duplication is that this is far less stressful on performance.
2016-04-26 20:02:57 +02:00
Christoph Oelckers
7e6e2bc0a8
- stated adding GL 2.0 compatibility handling
2016-04-26 18:24:02 +02:00
Christoph Oelckers
f6b33acbb1
- fixed plane access in GL code.
2016-04-04 12:22:47 +02:00
Christoph Oelckers
59bb003285
- GL adjustments for plane changes.
2016-03-29 13:45:50 +02:00
Christoph Oelckers
fc57180d7e
- added necessary state to implement 3D light splitting using hardware clipping planes.
2016-01-30 23:01:11 +01:00
Christopher Bruns
ac6e2f4979
Use gl_RenderState to manipulate OpenGL color mask for anaglyph modes, to avoid glGet...
2015-12-31 11:57:21 -05:00
Christoph Oelckers
45526c2769
- basics for using hardware clip planes to split translucent stuff by 3D floor planes.
2015-04-05 18:55:21 +02:00
Christoph Oelckers
ec627d94dd
- fixed: The depth clamp setting needs to be tracked per portal so that it can be properly restored afterward.
...
Regular skies need it off but SkyViewpoints need it on - and all others need to use the parent's setting.
So without engine side tracking we can end up rendering the sky with this setting off, resulting in omission of the fog layer.
2014-11-27 12:26:52 +01:00
Christoph Oelckers
4682736585
- fixed: non-tiled mid textures on a fog boundary require some special clamping to be performed in the shader.
2014-09-21 11:08:17 +02:00
Christoph Oelckers
acf6c259d8
- changed the handling of alpha textures. The only special case they need is with palette-less textures and this can be handled far more easily and robustly with a predefined translation instead of passing another parameter through all the layers of the texture management code. This also fixes problems with paletted PNGs that get used as an alpha texture because the old method clobbered the image's palette.
2014-09-09 13:21:36 +02:00
Christoph Oelckers
4bb320a27c
- route texture binding through the renderstate class for better control. Currently it's just a direct passthrough but this will change.
2014-09-09 12:00:42 +02:00
Christoph Oelckers
7967082e60
- use the light buffer to handle dynamic lighting.
2014-08-01 20:59:39 +02:00
Christoph Oelckers
c1d8f235c2
- renamed some stuff that clashed with gl function names.
2014-07-27 12:33:54 +02:00
Christoph Oelckers
bdf5bbd34e
- make the shader timer part of the render state.
2014-07-26 20:56:10 +02:00
Christoph Oelckers
eb9d2d9917
- reactivate compatibility profile so that immediate mode drawing can be used on older hardware not supporting persistently mapped buffers.
...
- reactivate alpha testing per fixed function pipeline
- use the 'modern' way to define clip planes (GL_CLIP_DISTANCE). This is far more portable than the old glClipPlane method and a lot more robust than checking this in the fragment shader.
2014-07-17 02:37:18 +02:00
Christoph Oelckers
ed8a21fd86
- replaced deprecated alpha testing with shader code.
2014-07-14 21:14:43 +02:00
Christoph Oelckers
2214c0ac06
- remove all uses of builtin matrix manipulation. Only glLoadMatrix for view and projection matrix are left.
2014-07-13 22:37:34 +02:00
Christoph Oelckers
dbb05c5f33
- remove use of builtin texture matrices.
...
- make matrix class single precision.
2014-07-13 20:41:20 +02:00
Christoph Oelckers
00fcf4bc06
- for some reason using world coordinates for clipping in the shader is somewhat imprecise so the clip plane heights have to be adjusted a bit for it.
2014-07-13 13:25:42 +02:00
Christoph Oelckers
d868f60f6c
- since the clip planes for plane mirrors did not work anymore I reimplemented them using shader based logic. It still needs to be seen if this affects performance on older hardware.
2014-07-13 12:14:12 +02:00
Christoph Oelckers
92185f96eb
- fixed overflow with storing a sprite's dynamic light color in a PalEntry.
2014-07-01 09:52:41 +02:00
Christoph Oelckers
ffcb6cb70a
- added second vertex coordinate attribute for model interpolation.
2014-06-29 11:00:21 +02:00
Christoph Oelckers
2925c96b59
removed all GL 2.x code.
...
After thinking about it for a day or so I believe it's the best option to remove all compatibility code because it's a major obstacle for a transition to a core profile.
2014-06-21 15:50:32 +02:00
Christoph Oelckers
8d9a90cd22
- rewrote sky dome rendering to use a static vertex buffer if not on OpenGL 2.x.
2014-06-14 01:24:28 +02:00
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
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
607be91c48
- bad copy.
2014-05-11 16:54:11 +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
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
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
399d0974ab
- added GL render as of SVN revision 1600.
2013-06-23 09:49:34 +02:00