Commit graph

141 commits

Author SHA1 Message Date
Christoph Oelckers
a23d1c2d25 - went back to the original portal stencil setup from 3.4.0.
The main reason is to unify the portal hierarchy again. The split into a hardware independent and a hardware dependent part turned out to be unnecessary and complicated matters.
Another issue was that the new stencil setup code was having a few subtle problems, so this recreates the original ones with indirect API calls.
2018-11-14 21:03:54 +01:00
Christoph Oelckers
f2dcff4386 - more options for Doom 64 style gradients on walls:
* Colors can npw be defined per sidedef, not only per sector.
* Gradients can be selectively disabled or vertically flipped per wall tier.
* Gradients can be clamped to their respective tier, i.e top and bottom of the tier, not the front sector defines where it starts.

The per-wall colors are implemented for hardware and softpoly renderer only, but not for the classic software renderer, because its code is far too scattered to do this efficiently.
2018-11-11 16:04:36 +01:00
Christoph Oelckers
aafa445aac - fixed stencil marking for SSAO. 2018-10-30 23:33:45 +01:00
Christoph Oelckers
118bc78fe3 - moved the entire OpenGL backend into a separate namespace. 2018-10-29 13:56:17 +01:00
Christoph Oelckers
8991537e57 - moved the 2D drawer tp hwrenderer. 2018-10-29 12:14:36 +01:00
Christoph Oelckers
1bbc9f6730 - removed two of the state flags in SetStencil and handle them explicitly. 2018-10-29 09:53:07 +01:00
Christoph Oelckers
163d6be0d7 - added a few more GL state wrappers to the render state.
Not used yet.
2018-10-29 09:41:26 +01:00
Christoph Oelckers
9f9d747a6b - moved all methods that would involve command buffer manipulation in Vulkan to FRenderState, because that's the object that would serve as command buffer builder. 2018-10-28 22:20:51 +01:00
Christoph Oelckers
926a918e0c - moved the light buffer pointer to globally visible state. 2018-10-28 15:22:48 +01:00
Christoph Oelckers
b2776c9351 - moved lightbuffer files to hwrenderer. 2018-10-28 15:09:33 +01:00
Christoph Oelckers
bd7df13200 - let the light buffer use IDataBuffer as well. 2018-10-28 15:04:57 +01:00
Christoph Oelckers
3b26e64404 - renamed the 'vertexbuffer' files to 'buffers' because it's now generic for all buffer types. 2018-10-28 12:04:20 +01:00
Christoph Oelckers
a62cd64138 - removed all direct OpenGL dependencies from gl_models.cpp. 2018-10-27 22:55:33 +02:00
Christoph Oelckers
83e706afe7 - - removed the remains of the old FVertexBuffer class. 2018-10-27 22:04:13 +02:00
Christoph Oelckers
067716cefb - made sky vertex buffer backend independent. 2018-10-27 21:31:27 +02:00
Christoph Oelckers
cd8c7a17eb - model vertex buffer converted. 2018-10-27 16:59:13 +02:00
Christoph Oelckers
72bc7693bd - refactored main vertex buffer (but didn't merge with hwrender class yet. 2018-10-27 14:24:47 +02:00
Christoph Oelckers
332ab220ad - hooked low level buffers into render state.
It still needs to support the old interface so the code isn't really clean
2018-10-27 10:55:35 +02:00
Christoph Oelckers
4f4bcd2d7d - moved DrawSorted back to HWDrawList. 2018-10-25 22:45:55 +02:00
Christoph Oelckers
3940f17980 - portals are now completely on the hwrenderer side.
The only thing that still needs to be on the backend side is the one function that manages the rendering.
2018-10-25 00:25:55 +02:00
Christoph Oelckers
93dac4e4d8 - some reorganization of portal code. 2018-10-23 22:32:00 +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
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
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
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
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
96bb8a779c - fixed incomplete reordering of code. 2018-07-23 21:17:57 +02:00
Christoph Oelckers
6076f0a69d - disable any texture clamping for textures with a user shader.
This cannot be reliably determined so the least restrictive setting must be used.
2018-07-23 17:53:35 +02:00
Christoph Oelckers
33ee0f3c27 Merge branch 'master' into modern
# Conflicts:
#	src/gl/renderer/gl_renderer.cpp
#	src/gl/renderer/gl_renderer.h
#	src/gl/renderer/gl_renderstate.h
#	src/gl/system/gl_framebuffer.cpp
#	src/gl/system/gl_framebuffer.h
2018-07-14 13:18:34 +02:00
Christoph Oelckers
7817e6a7b2 - moved the texture binding code back to the OpenGL specific parts.
turns out that this cannot be consolidated with Vulkan because the semantics are far too different here.
2018-07-14 13:05:49 +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
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
9ff7e5a4ef - force render buffers to be active.
For modern hardware the fallback path really makes no sense and this allows to simplify some things quite a bit.
2018-06-16 09:37:01 +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
Christoph Oelckers
612fb40f3a - don't use uniforms related to fixed colormaps for other things.
The fixed colormap is a per-scene global setting that normally does not need to change ever during rendering of a scene so it's easily shoved aside into a static uniform buffer.
Having to change this buffer for inconsequential stuff should be avoided, especially when there's other uniforms that are just as good to hold these values.
2018-06-14 21:28:03 +02:00
Christoph Oelckers
2d4b8549c6 - per-sector plane rendering needs to be disabled when processing a line portal with hardware that has no working clip plane support.
In this case there are no means to discard the parts of the rendered sectors that lie behind the portal so it should only render the parts that are flagged as visible.
2018-05-20 08:56:29 +02:00
Christoph Oelckers
c0837f42bd - gl_system.h as well, in particular this has no place in hw_* files. 2018-05-16 23:34:52 +02:00
Christoph Oelckers
401c9ab8ca - moved gl_interface.cpp/h to gl_load folder.
These files are not part of the actual renderer but part of the system code.
This means, for separated modern and legacy GL renderers, there still will only be one set of this, unlike everything else.
2018-05-16 23:21:21 +02:00
Christoph Oelckers
dd524b046e - GLWall is mostly clean, except some smaller things in gl_sky.cpp 2018-04-27 00:22:00 +02:00