Commit graph

15366 commits

Author SHA1 Message Date
Christoph Oelckers
89059a2acc - added a compatibility fix for Hacx's MAP05.
This is by no means perfect and looks different than what was originally intended, but at least this doesn't totally fail to render properly with the OpenGL renderer.
2018-10-21 20:27:33 +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
Rachael Alexanderson
e2f6fa95d4 - fixed: attaching a new status bar to a player now calls 'setsizeneeded' - fixes an issue where the screen geometry is out of sync with the characteristics of the new status bar. 2018-10-20 13:22:11 -04: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
d37cd63fda - use setter methods for glow initialization of sectors. 2018-10-20 11:28:51 +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
Magnus Norddahl
4ac43dac36 - fix distance attenuation for PBR materials 2018-10-17 09:03:18 +02:00
Erick Tenorio
c0cf19e9b5 - Visually align Doom 2 MAP04 crusher floors
Use Transfer_Heights to fake floors on the crusher sectors
2018-10-16 17:38:15 +02:00
Marisa Kirisame
1e6454598c Preserve line locknumber in savegames. 2018-10-16 08:58:37 -04:00
Christoph Oelckers
54d9ec11a8 Changed AppVeyor configuration to create the 64 bit debug build with VS 2017 and no XP toolset 2018-10-15 09:07:59 +02:00
Rachael Alexanderson
239b57b41c - fixed: use 'setsizeneeded' more often in the scaling code. recalculating screen geometry for 2D elements when it changes never really hurts. 2018-10-14 16:27:08 -04:00
Erick Tenorio
cc8112f88d -Fixed many IWAD mapping errors 2018-10-14 11:44:54 +02:00
Christoph Oelckers
dd719f0f14 - extended the register limit for 'param'.
The instruction one free instruction byte so it's now using that to extend its argument's register range to 65535.
For param this is needed because it passes strings by reference and creating an implicit temporary copy for string constants does not work here.
2018-10-14 09:13:26 +02:00
player701
eee0946bc5 - Fixed indentation 2018-10-14 00:52:00 +02:00
player701
6dc026895c - Exported PickNewWeapon function from PlayerPawn to ZScript. 2018-10-14 00:52:00 +02:00
Rachael Alexanderson
ec7e855a56 - g3.7pre 2018-10-10 02:25:32 -04:00
Christoph Oelckers
0dc7f6be19 - fixed: MD3s with a skin-less surface left the renderer in an undefined state.
The frame interpolation factor wasn't reset and rendering prematurely aborted with no chance to recover.
2018-10-09 19:16:15 +02:00
Erick Tenorio
22f8c26917 Fix missing enemies in HTP-RAW.WAD MAP22
Make 100% kills possible on MAP22 of Hell to Pay
2018-10-09 07:44:30 -04:00
Rachael Alexanderson
e223a25863 - fixed: smooth teleporters could fudge the player over an adjacent line, causing the player to appear on top of a cliff that is much higher than the original teleport. 2018-10-09 06:55:56 -04:00
Rachael Alexanderson
3d81be1517 - always enforce a minimum distance for fog when fogmode is set to standard. without this, it was possible for the GPU to error out and stop rendering pixels for certain screen blocks 2018-10-09 04:45:23 -04:00
Erick Tenorio
643e3a78d8 Fixes for Wraith Corporation WADs 2018-10-08 18:40:25 +02:00