Commit graph

112 commits

Author SHA1 Message Date
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
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
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
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
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
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
c33f358894 - clear GLWF_TRANSLUCENT at the end of PutWall. 2018-08-13 20:48:27 +02:00
alexey.lysiuk
3a6e05710a - fixed missing decals on 3D floors with hardware renderer
https://forum.zdoom.org/viewtopic.php?t=61404
2018-07-23 16:46:51 +03:00
Christoph Oelckers
124fe63d00 Merge branch 'master' into modern 2018-07-14 10:24:41 +02:00
Christoph Oelckers
158890e0ce - fixed : Decals used the wrong texture variant. 2018-07-02 19:12:48 +02:00
Christoph Oelckers
e7a0ccf879 - fixed remaining issues with portal refactoring. 2018-06-23 23:03:34 +02:00
Christoph Oelckers
6ebec37baf - moved all portal code that sets up a scene to be rendered into API independent code and let it be handled by a common wrapper class. 2018-06-23 23:03:34 +02:00
Christoph Oelckers
1cf3af9c41 - moved the current portal pointer to HWDrawInfo so that the portal managed does not need to save and restore a global variable for each portal. 2018-06-23 13:51:19 +02:00
Christoph Oelckers
282fdac660 - made the static portal state a struct inside the Renderer object 2018-06-23 13:25:59 +02:00
Christoph Oelckers
82d7e5970f - moved the clipline uniform to the viewpoint buffer.
This was the final one of the per-scene values that could be taken out of the render state.
2018-06-22 23:49:39 +02:00
Christoph Oelckers
80a9028938 - mirror clip planes moved - not working yet. 2018-06-22 22:45:05 +02:00
Christoph Oelckers
d5af939119 - more uniforms moved.
(not working yet.)
2018-06-22 21:32:38 +02:00
Christoph Oelckers
43e1a2d249 - moved uViewHeight and uCameraPos to the viewpoint uniform struct. 2018-06-22 21:05:36 +02:00
Christoph Oelckers
1967165633 - move view and projection matrices to DrawInfo. 2018-06-21 21:02:14 +02:00
Christoph Oelckers
eb277cc101 - calculate the normal view matrix at a higher level. 2018-06-20 13:49:06 +02:00
Christoph Oelckers
469c9241eb Moved WriteSavePic implementation to FGLRenderer 2018-06-20 12:29:52 +02:00
Christoph Oelckers
9bdb5f1a5d Moved ProcessLowerMinisegs back toAPI independent code. 2018-06-20 10:10:30 +02:00
Christoph Oelckers
922c3a8d75 - moved the basic methofs of HWDrawInfo to a dedicated file instead of storing them somewhere else. 2018-06-19 23:52:01 +02:00
Christoph Oelckers
54970b60e8 - use locally stored viewpoint variables in the hardware renderer.
- move a few variables from SceneDrawer to FRenderViewpoint.

The global r_viewpoint variable is left alone now to always represent the current viewpoint to the play code.
The main reason behind this change is to reduce the amount of global variables being used by the hardware renderer's scene processing code.
2018-06-19 23:45:17 +02:00
Christoph Oelckers
d2309af3d5 Merge remote-tracking branch 'remotes/origin/master' into modern
# Conflicts:
#	src/d_main.cpp
#	src/hwrenderer/scene/hw_weapon.cpp
2018-06-19 19:40:52 +02:00
Christoph Oelckers
eddb179e36 - moved ViewActor variable into FRenderViewpoint. 2018-06-19 18:51:46 +02:00
Christoph Oelckers
87dfa34f1f - save r_viewpoint as a whole when processing portals. 2018-06-19 17:55:42 +02:00
Christoph Oelckers
22b8d0a8d7 - r_viewpoint reduction in hwrenderer 2018-06-19 11:21:13 +02:00
Christoph Oelckers
86975a71e8 - don't use r_viewpoint directly when sorting translucent geometry.
Better store the view Z in a member variable and use that.
2018-06-19 10:50:48 +02:00
Christoph Oelckers
ae7053ee98 - another small optimization 2018-06-19 10:40:50 +02:00
Christoph Oelckers
12ad0caec0 - small optimization 2018-06-19 10:33:59 +02:00
Christoph Oelckers
fba5b872be - reduced number of references to r_viewpoint in hw_flats 2018-06-19 10:31:25 +02:00
Christoph Oelckers
3eb4b137f3 - reduced number of references to r_viewpoint in hw_fakeflat.cpp 2018-06-19 10:30:18 +02:00
Christoph Oelckers
18f43dea1e - reduced number of references to r_viewpoint in hw_sprites.cpp 2018-06-19 10:29:09 +02:00
Christoph Oelckers
cf1641d0f6 - reduce number of places in weapon code which access r_viewpoint directly. 2018-06-19 10:25:11 +02:00
Christoph Oelckers
74d8c929cc Give the clipper a reference to the current viewpoint
This is both for efficiency and encapsulation. At last on MSVC in 64 bit, accessing global variables is very inefficient and the clipper was doing it repeatedly in its worker functions.

It is also one less place where the global viewpoint gets checked.
2018-06-19 09:37:49 +02:00
Christoph Oelckers
6b92b95068 - moved vertex creation for skybox sector to backend independent code. 2018-06-18 18:41:59 +02:00
Christoph Oelckers
34ee04f2ce - moved the matrix math for the sky dome into backend independent code. 2018-06-18 18:18:28 +02:00
Christoph Oelckers
1fdf6a20d1 - fixed incomplete null pointer check. 2018-06-17 10:53:55 +02:00
Christoph Oelckers
4937848123 - refactoring of fixed colormap stuff to have it better organized and to reduce the number of uniforms in the main shader.
This removes 3 uniforms, consisting of 9 floats. Those were merged into other values that never get used at the same time.
It also moves the costly setup of the fixed colormap out of the render state into the 2D processing code.
Since 3D forces use of render buffers now, it is no longer necessary to draw the entire scene with the colormap active, meaning it can be handled more efficiently.
2018-06-16 22:40:44 +02:00
Christoph Oelckers
8ab68264c1 - removal of all code to handle OpenGL 2. From this commit on the main build of GZDoom will be OpenGL 3.3 or higher.
# Conflicts:
#	src/gl/renderer/gl_renderer.cpp
#	src/gl/shaders/gl_shader.cpp
#	src/gl/system/gl_framebuffer.cpp
#	src/gl_load/gl_interface.cpp
2018-06-15 21:45:05 +02:00
Magnus Norddahl
5464d2a577 - add dynamic lights to softpoly and software renderer models 2018-06-05 22:43:11 +02:00
alexey.lysiuk
edabe43bca - fixed typo in previous commit
https://forum.zdoom.org/viewtopic.php?t=60739
2018-06-01 12:24:29 +03:00
Christoph Oelckers
2d50f535ff - fixed and simplified the vertex counter for wall polygons.
This is now allowed to overestimate the number of vertices to reduce computation time for a rarely occuring special case that was eating most of the time and was causing errors with some walls.
2018-05-31 22:14:57 +02:00