Commit graph

253 commits

Author SHA1 Message Date
Christoph Oelckers
6fced1865f Moved ScopedViewShifter to hwrenderer/ . 2018-06-12 14:47:05 +02:00
Christoph Oelckers
f33ddd8cce Made the ScopedViewShifter fully inline 2018-06-12 14:44:58 +02:00
Magnus Norddahl
f03c02df43 - fix gamepic render buffer issues 2018-06-03 13:59:40 +02:00
Christoph Oelckers
d0aacd3ba8 - fixed: The translucent border draw list must be rendered with depth writing active.
This gets exclusively used by portal borders which means that for walls the setting is irrelevant but for flats it is needed to cover the portal surface so that translucent parts of the outer scene do not bleed through.
2018-06-02 23:09:51 +02:00
alexey.lysiuk
a0695cbb48 - fixed blinking frame after saving a game
Viewport was not reseted after creation of saved game thumbnail, so one junk frame was rendered right after saving a game

https://forum.zdoom.org/viewtopic.php?t=60412
2018-05-29 12:07:45 +03:00
Christoph Oelckers
df6a50872d Merge branch 'master' of https://github.com/coelckers/gzdoom 2018-05-22 21:36:52 +02:00
Christoph Oelckers
2514753afb - make the vertex buffer accessible from the hwrenderer code. 2018-05-22 18:48:10 +02:00
Christoph Oelckers
226e8f84da - most of gl_bsp.cpp moved to HWDrawInfo.
Only the vertex buffer update check needs to be done yet.
2018-05-22 00:27:39 +02:00
Christoph Oelckers
df0b1e8dae - moved the clipper out of GLSceneDrawer and let it be handled by HWDrawInfo.
The precise way the clipper needs to be maintained may differ between APIs, so it is no longer owned by any render structure but instead HWDrawInfo only contains a reference.
For OpenGL there is still only one static clipper because without multithreaded BSP traversal there is no need for more.
2018-05-21 22:54:04 +02:00
Christoph Oelckers
5f87e81b6a - moved CurrentMapSections and in_area from GLSceneDrawer to HWDrawInfo.
Not only are they better placed in the common code, but they are also both per-viewpoint and not per-scene, so this is a far more suitable place and avoids saving and restoring them in the portal code.
2018-05-21 22:04:29 +02:00
Christoph Oelckers
e6a447eb6f - removed more occurences of gl_drawinfo. 2018-05-21 20:28:12 +02:00
Magnus Norddahl
31abe3df7e - avoid reusing the same mVBuf pointer for the different renderers as that causes too many problems when switching between them
- remove gl_ prefix for model functions that are no longer GL specific
2018-05-21 17:52:03 +02:00
Christoph Oelckers
31263eeac2 - removed gl_drawinfo-> from FDrawInfo member functions and pass it to some other functions as a parameter.
This really shouldn't be handled as a global variable. The mere fact that several member functions used it incorrectly is ample proof of that.
2018-05-21 11:36:07 +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
c2a7a4bf30 - moved viewport code to DFrameBuffer. 2018-05-12 17:23:56 +02:00
Christoph Oelckers
de15b589c0 - moved the screen blending code out of the renderer.
This is better be made part of the 2D interface.
That would have been done long ago if it hadn't been for the totally incompatible way this was handled by the purely paletted software renderer.
Now with that out of the way there is no point keeping this code this deeply embedded in the renderer.
2018-05-05 11:20:37 +02:00
Christoph Oelckers
52d73eabbf - weapon drawing code refactor complete.
Setup and drawing are now done separately, this also no longer needs the Quad drawer.
2018-05-04 23:11:37 +02:00
Christoph Oelckers
43b491ea33 - moved the global 'no dynamic lights' variable to FLevelLocals so that it is outside renderer specific data. 2018-05-03 21:27:45 +02:00
Christoph Oelckers
14410ae526 - fixed: FDrawInfo must be kept around until DrawEndScene2D finishes.
Otherwise some code crashes on invalid data.
2018-05-01 19:01:01 +02:00
Christoph Oelckers
9bdb0f2e49 - renamed the flag bits for sector_t::MoreFlags, so that they are easier to distinguish from sector_t::Flags.
- precalculate if a sector's floor and ceiling plane overlap. This avoids rechecking this for each single call of hw_FakeFlat.
- vertices must be marked dirty every time they change after map setup. That means that ChangePlaneTexZ must do this as well, because it cannot rely on interpolation taking care of it.
- Having a 'dirty' argument for SetPlaneTexZ's ZScript version makes no sense. If the value changes from the script side the vertices must always be marked to be recalculated.
2018-05-01 11:29:29 +02:00
Christoph Oelckers
f49c6cbde2 - use sector_t::GetHeightSec consistently and optimize it.
This was all over the place, with half of it using the function and half doing incomplete checks on the underlying variables.
Also did some optimization on the IGNOREHEIGHTSEC flag: Putting it on the destination sector instead of the model sector makes the check even simpler and allows to precalculate the effect of 3D floors on the heightsec, which previously had to be run on every call and made the function too complex for inlining.
2018-05-01 09:47:09 +02:00
Christoph Oelckers
3c49804c6c - some Transfer_Heights related optimizations.
* only call hw_CheckViewArea if the result is not known yet.
* check the map up front if it even contains heightsecs. This allows to shortcut the above check entirely for maps without sector transfers and will allow further optimizations.
2018-05-01 09:02:24 +02:00
Christoph Oelckers
ecb1578a7a - changed model lighting setup to be done in the processing pass.
This eliminates the different code paths for GL3 and GL4.5.
2018-04-30 23:06:48 +02:00
Christoph Oelckers
fbbf2f8346 - fixed a few things in the weapon drawer. 2018-04-30 21:42:36 +02:00
Christoph Oelckers
d904fba05b - trying to clean up the weapon renderer.
Some of the data generation has been offloaded to subfunctions to get the main function down to something manageable for refactoring.
2018-04-29 22:30:52 +02:00
Christoph Oelckers
67cb6e63b5 - cleanup of the 2D interface.
Lots of this was still laid out for DirectDraw. This removes most of Begin2D so that it can be done more cleanlz.
Note that this commit renders weapon sprites and screen blends incorrectly. Those will be fixed in an upcoming commit.
2018-04-29 20:15:19 +02:00
Christoph Oelckers
6cd8b1b3eb - With dynamic light data creation being done in the preparation pass, the light buffer must be mapped while this is running for it to work on older hardware. 2018-04-29 17:36:51 +02:00
Christoph Oelckers
f91511bd84 - removed the leftover code for running walls through GLPASS_LIGHTSONLY.
Unless in legacy mode, all dynamic light setup is now being done in the preparation pass, for both LM_DEFERRED and LM_DIRECT.
2018-04-29 17:27:28 +02:00
Christoph Oelckers
77b301612a - some refactoring of GLDrawList to remove implementation-specific parts from this class. 2018-04-29 12:32:21 +02:00
Christoph Oelckers
634b3cf413 - moved gl_spritelight out of gl/. This required a few more changes:
* split gl_shadowmap.cpp into a GL dependent and an API independent part.
* gl_drawinfo must be kept around for the HUD sprite because it connects the renderer with the hardware indpendent part of the engine.
2018-04-29 11:00:34 +02:00
Christoph Oelckers
64b108ff44 - hw_sprites extracted
- moved the variables for OpenGL's special textures to the texture manager because it is far better suited as a container than the GLRenderer.
2018-04-29 00:09:44 +02:00
Christoph Oelckers
cc926dec1e - removed gl dependencies from gl_sky.cpp by moving some data into other places. 2018-04-28 00:18:49 +02:00
Christoph Oelckers
0d7c2527f2 - finished decal render refactoring.
Decals will now be processed into a list in the processing pass, allowing to use the vertex buffer even on GL3 hardware and to offload this part of the work to a multithreaded worker task.
2018-04-27 20:18:52 +02:00
Christoph Oelckers
ceeb479261 - moved the CVAR definitions from gl/ to hwrenderer/.
- disabled gl_texture_format because in its existing form it is mostly a useless feature.
2018-04-25 20:33:55 +02:00
Christoph Oelckers
0dcc6ec6d3 Merge branch 'master' of https://github.com/coelckers/gzdoom
# Conflicts:
#	src/CMakeLists.txt
#	src/gl/renderer/gl_renderer.h
#	src/gl/scene/gl_portal.cpp
#	src/gl/scene/gl_scene.cpp
2018-04-24 17:39:03 +02:00
alexey.lysiuk
2ae8d39441 Removed all superfluous #include's
Automatically optimized by CLion IDE with manual corrections
2018-04-24 14:30:35 +03:00
Christoph Oelckers
a803b3d393 Split FDrawInfo in two
Done so that the entire gl_renderhacks.cpp file can be moved out of the GL folder.
Not cleaned up yet
2018-04-24 10:30:26 +02:00
Christoph Oelckers
5ca1fca8d1 - moved gl_clipper and gl_fakeflat to the hwrenderer folder because both files do not contain anything API specific. 2018-04-23 22:18:13 +02:00
Christoph Oelckers
c1ce6c90ca Moved gl_dynlight to hwrenderer because it does not depend on any direct renderer info. 2018-04-16 09:02:48 +02:00
Christoph Oelckers
b12a6fded9 - added the code for legacy shaders.
- force texture filtering for 2D to off when in software rendering.
2018-04-08 12:11:51 +02:00
Christoph Oelckers
b34d7f9e08 - added a software scene drawer to the GL renderer.
It still looks like shit and only works on the modern render path but at least the basics are working.
2018-04-07 10:20:59 +02:00
Christoph Oelckers
d474b849a5 - removed the remaining calls from the FRenderer interface from the main game code.
This does not work with a setup where the same backend is driving both renderers.
Most of this is now routed through 'screen', and the decision between renderers has to be made inside the actual render functions.
The software renderer is still driven by a thin opaque interface to keep it mostly an isolated module.
2018-04-04 00:21:25 +02:00
Christoph Oelckers
fcc33f0a09 - moved around more stuff from the FRenderer interface. 2018-04-03 22:50:47 +02:00
Christoph Oelckers
51bf2eb9fa - took GetMaxViewPitch out of renderer interfaces.
With live switching and both renderers on the same backend the old approach will no longer work.
2018-04-03 19:18:16 +02:00
Christoph Oelckers
2f96d3c61a - moved global variable definitions to the top of a few files.
Most of these are not critical because they only get used in non-multithreaded contexts but it's definitely easier to look them up this way.
2018-04-02 23:42:45 +02:00
Christoph Oelckers
60aebff4a1 - starting separation of hardware dependent and hardware independent code, starting with aabbtree, because it was easy. 2018-04-02 15:58:28 +02:00
Christoph Oelckers
8080e039e0 - moved most of gl_setup.cpp to r_data as this is only some data setup in the main map data structures.
- made currentmapsections array something nicer to look at and made it a member of the scene drawer class.
2018-04-02 09:27:40 +02:00
Christoph Oelckers
d84554f093 - deleting some unused stuff 2018-04-02 00:28:25 +02:00
Christoph Oelckers
64b504ee7f - fixed last commit. This was missing an init call for the portal data. 2018-04-02 00:14:53 +02:00