Commit graph

1,929 commits

Author SHA1 Message Date
Christoph Oelckers
93dac4e4d8 - some reorganization of portal code. 2018-10-23 22:32:00 +02:00
Christoph Oelckers
93599e483f - moved weapon drawing to hwrenderer. 2018-10-22 23:40:44 +02:00
Christoph Oelckers
08e1b49988 - removed include 2018-10-21 20:21:16 +02:00
Christoph Oelckers
3775c4756e - moved sprite drawer to hwrenderer as well. 2018-10-21 17:50:01 +02:00
Christoph Oelckers
346a9ce149 - fixed initialization. 2018-10-21 14:45:03 +02:00
Christoph Oelckers
0af65a8fa0 - removed the direct setters for the blend mode state.
This will now always have to go through the render state.
2018-10-21 14:26:14 +02:00
Christoph Oelckers
a3aaa5cc8b - removed old RenderStyle management. 2018-10-21 14:18:08 +02:00
Christoph Oelckers
8ffeb7812f - made wall draw code API independent. 2018-10-21 13:53:50 +02:00
Christoph Oelckers
7897f26abf - started reworking the wall drawer. 2018-10-21 13:11:36 +02:00
Christoph Oelckers
acad8315d0 - move stencil recursion counter to render state. 2018-10-21 10:58:11 +02:00
Christoph Oelckers
a97d71a3c3 - draw decals in hardware independent code. 2018-10-21 10:51:26 +02:00
Christoph Oelckers
1768508c80 - first adjustments to decal code.
- moved texture mode constants to a global header and consolidated with the variants of the 2D drawer.
2018-10-21 08:14:48 +02:00
Christoph Oelckers
3b7a5da83e - moved AddFlat to gl_drawinfo.cpp and deleted gl_flats.cpp. 2018-10-21 00:38:56 +02:00
Christoph Oelckers
d45f6b9bea - moved the flat drawer to hwrenderer. 2018-10-21 00:35:39 +02:00
Christoph Oelckers
e8f48e7535 - moved the color/fog setters to hwrenderer. 2018-10-20 23:33:07 +02:00
Christoph Oelckers
fac7c7a31c - abstraction of render style in render state. 2018-10-20 23:14:57 +02:00
Christoph Oelckers
9ef5e00cdf - some cleanup and preparation on RenderState interface. 2018-10-20 21:36:50 +02:00
Christoph Oelckers
3c3be0d349 - started with an abstract render interface, most importantly handle the stencil for plane flooding through the render state object instead of changing GL state directly. 2018-10-20 21:08:24 +02:00
Christoph Oelckers
510aa600dd - moved hw_renderstate.h to hwrenderer folder and renamed one GL constant it was using. 2018-10-20 18:37:12 +02:00
Christoph Oelckers
a4f7fd2e46 - started splitting the render state struct.
Reusable parts should be in hwrenderer later.
2018-10-20 13:34:29 +02:00
Christoph Oelckers
4603d01ba1 - removed some unused content from FGLRenderState. 2018-10-20 13:11:03 +02:00
Christoph Oelckers
9a03ba3cc5 - renamed FRenderState to FGLRenderState. 2018-10-20 13:05:36 +02:00
Christoph Oelckers
5f838d52b9 - some cleanup on the OpenGL interface and its flags.
Most importantly, the separate command line options for switching on the legacy buffer handling have been removed.
There's really no need for them anymore, because unlike in earlier versions many of the implementation differences no longer exist - with the exception of where the light and vertex buffer contents are generated.
For testing this, -glversion 3 is sufficient.
2018-10-20 12:55:25 +02:00
Christoph Oelckers
9253118bdc - removed the quad drawer class
This isn't needed anymore.
2018-10-20 11:59:12 +02:00
Christoph Oelckers
74ba142eae - allow vertex creation for sprites in the setup pass.
Currently only used by legacy hardware.
2018-10-20 11:53:20 +02:00
Christoph Oelckers
00c8c6e3b2 - generate vertices for skybox sectors in the processing pass.
Aside from the sprites this was the only other remaining use of FQuadDrawer.
2018-10-20 11:22:55 +02:00
Christoph Oelckers
e5ff500c5a - rewrote render hacks to prepare their vertex data in the processing pass.
This eliminates 3 of the 5 remaining occurences of FQuadDrawer and gets a large section of code out of the GL backend into the common hardware rendering code.

# Conflicts:
#	src/gl/scene/gl_scene.cpp
2018-10-20 10:56:12 +02:00
Christoph Oelckers
c5d1b884dd - fixed incorrect block size calculation. 2018-10-20 10:50:22 +02:00
Christoph Oelckers
6f81310fa7 Reinstate light buffer resizing, using the same method as for the model matrix buffer 2018-10-20 10:50:02 +02:00
Christoph Oelckers
ad80efd6be Prepared light buffer for multithreaded use
This necessitated removing the reallocator because that cannot be done in a multithreaded context in OpenGL. The buffer should be large enough anyway, it it all gets used, slowdowns would be unavoidable.

There was also some simplification of the buffer alignment math for uniform buffers
2018-10-20 10:49:06 +02:00
Christoph Oelckers
84a55667d9 - removed more old code from flat renderer.
VBOHeightCheck was from early development when interpolation was not reflected by the vertex buffer.

# Conflicts:
#	src/gl/scene/gl_flats.cpp
2018-10-20 10:39:28 +02:00
Christoph Oelckers
07649fd31a - removed some leftover code for handling dynamic lights in the render pass.
# Conflicts:
#	src/gl/scene/gl_flats.cpp
2018-10-20 10:36:39 +02:00
Christoph Oelckers
acb9505606 - fixed cherry-picked commit so that modern OpenGL can still do the light setup in the render pass. 2018-10-20 10:33:26 +02:00
Christoph Oelckers
a9c8546ba3 - changed dynamic light setup so that it is completely in the processing pass, not the render pass.
# Conflicts:
#	src/gl/scene/gl_flats.cpp
#	src/hwrenderer/scene/hw_flats.cpp
2018-10-20 09:46:53 +02:00
Christoph Oelckers
c8852b8fea - enabled the linear shadowmap filter.
Although this doesn't look as good as the PCF version it is a lot less calculation intensive and therefore more suitable for weaker hardware.
It also tends to bleed through walls a lot less.
2018-09-29 13:23:40 +02:00
Christoph Oelckers
bc1e659c7b Revert "- reworked fog uniforms to move the global fog mode setting to the viewpoint buffer."
This reverts commit 8b26b6dd1e.

This was causing problems with light mode 2 because some edge cases were no longer handled properly.
2018-09-16 22:38:20 +02:00
Christoph Oelckers
e13d1e4d0d - do not render lights from uninitialized data. 2018-09-16 13:52:02 +02:00
Christoph Oelckers
2d53ad6f10 - fixed misplaced parenthesis. 2018-09-09 19:18:22 +02:00
Christoph Oelckers
1eb1d8d280 - fixed math imprecisions in horizon vertex generation.
Floats are not precise enough to be used as a loop counter.
2018-09-09 08:57:50 +02:00
Christoph Oelckers
1c3d4b46c6 - fixed the use of Doom-Legacy-style 3D floor lighting in light mode 8.
Legacy used some strange blending formula to calculate its colormaps for colored 3D floor lighting, this is not available in the software lighting mode, so for these the engine has to temporarily revert to light mode 2 to render them correctly.
2018-09-08 13:08:04 +02:00
Christoph Oelckers
3dcaa509ef Merge branch 'master' of https://github.com/coelckers/gzdoom 2018-09-08 12:10:34 +02:00
Christoph Oelckers
dd971805af - fixed: The viewpoint buffer was mapped write only but read from. On old hardware it wasn't even mapped.
Changed to cache the needed value in a CPU-side array so that the buffer access is not needed.
2018-09-08 10:16:31 +02:00
Christoph Oelckers
8b26b6dd1e - reworked fog uniforms to move the global fog mode setting to the viewpoint buffer. 2018-09-06 19:14:30 +02:00
Christoph Oelckers
22e8c57a59 - reset the viewpoint buffer only once per scene, not per viewpoint.
This doesn't work for camera textures because they are a separate viewpoint.
2018-09-02 20:05:36 +02:00
Christoph Oelckers
5e39890118 - use a uniform buffer for per-scene data like rotation matrices. 2018-09-02 18:40:36 +02:00
Christoph Oelckers
b570f28597 - restored block of code that got deleted by a bad merge of a cherry-picked commit. 2018-09-02 12:43:13 +02:00
Christoph Oelckers
bec588eaf4 - moved the two remaining functions from gl_wipe.cpp to gl_framebuffer.cpp and deleted the file.
The single most hideous thing in the GL renderer is finally gone. :)
2018-09-02 12:03:18 +02:00
Christoph Oelckers
9af01c4667 - Untested wipe refactor
# Conflicts:
#	src/gl/renderer/gl_renderer.cpp
#	src/gl/system/gl_wipe.cpp
#	src/hwrenderer/scene/hw_attributebuffer.cpp
2018-09-02 12:02:36 +02:00
Christoph Oelckers
ecf6e3f620 Sanitized the Being/End2D interface so that it can be used to keep the attribute buffer mapped while processing 2D commands.
For this to work the 2D mode has to be properly set and unset at the right places so that no double mapping occurs and no render operation can happen while in 2D mode.

# Conflicts:
#	src/d_main.cpp
#	src/v_video.h
2018-09-02 11:59:01 +02:00
Christoph Oelckers
2d1043d1d3 - added profiling for postprocessing code. 2018-09-02 11:35:02 +02:00