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
Magnus Norddahl
48c83d36b5
- add post processing support to the software renderer and softpoly
2018-08-04 14:58:55 +02:00
Christoph Oelckers
3b53f31da3
- default to fullscreen display.
2018-07-28 10:05:50 +02:00
Christoph Oelckers
d84497c85a
- don't let the video scale let the screen end up with a client size less than 320x200, which may cause undefined behavior and trigger asserts in debug builds.
2018-07-22 11:40:12 +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
daf8703fc9
- split up Win32's SystemGLFrameBuffer as well to get the shareable parts between OpenGL and Vulkan into a base class.
2018-06-24 21:26:32 +02:00
Christoph Oelckers
e7365be0d1
- renamed SystemFrameBuffer to SystemGLFrameBuffer.
...
... because with Vulkan there needs to be some hint what API this is for.
2018-06-24 20:16:30 +02:00
Christoph Oelckers
491898fe2c
- fixed calculation of projection matrix for weapon sprites.
...
- fixed color mask for green/magenta.
- fixed crash when initializing video, because it was accessing 'screen' before it was set from within the framebuffer's constructor.
2018-06-24 17:16:07 +02:00
Christoph Oelckers
c3d5b960ee
- refactored the entire Stereo3D system to get rid of the class hierarchy and all its ugly implications.
...
Ultimately all this needs is a small data table describing the geometric properties of each mode and a single Present function that calls the mode specific variants.
Code size got reduced from 50kb to less than 20kb with proper separation of the generic parts from the OpenGL parts.
2018-06-24 17:16:07 +02:00
Christoph Oelckers
1967165633
- move view and projection matrices to DrawInfo.
2018-06-21 21:02:14 +02:00
Christoph Oelckers
b106f72741
- don't route calls to FMaterial::FlushAll through the framebuffer interface.
2018-06-20 22:18:31 +02:00
Christoph Oelckers
b65b83edb3
- removed the hard screen resolution switch that still was present on Windows and cleaned up the entire video backend code from the remaining support code for this.
...
Like Linux and macOS this will only support borderless fullscreen in the active desktop resolution now, which is what modern systems need.
The list of discrete resolutions has been removed as it makes no sense anymore with a fixed video mode - all the other scaling options remain active, though.
2018-06-17 20:08:35 +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
3401876476
- use FShaderProgram through an abstract interface and remove all dependencies on the GL renderer from the shader definition source files.
2018-06-13 22:08:55 +02:00
Christoph Oelckers
59827cd601
- use layout binding qualifiers on uniform buffers when GLSL version >= 4.2
...
This has no performance benefits but allows checking shader generation correctness without having to implement Vulkan first.
2018-06-13 13:16:07 +02:00
Christoph Oelckers
4ddd9dde79
Use IUniformBuffer
2018-06-12 17:55:34 +02:00
Christoph Oelckers
3385e28611
Make it compile
2018-06-12 10:58:32 +02:00
Magnus Norddahl
f03c02df43
- fix gamepic render buffer issues
2018-06-03 13:59:40 +02:00
alexey.lysiuk
ace5ee3c41
- fixed crash after saving a screenshot
...
https://forum.zdoom.org/viewtopic.php?t=60616
2018-05-19 13:19:24 +03:00
Christoph Oelckers
1656bbf9ec
- route the BlurScene call in the menu through DFrameBuffer.
...
Game code should never ever call the renderer directly. This must be done through the video interface so that it can also work with other framebuffers later.
2018-05-18 00:22:57 +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
44dd48c7fa
- moved the palette stuff and some remaining scaling code from OpenGLFrameBuffer to DFrameBuffer and fixed GetFlashedPalette
2018-05-16 22:10:24 +02:00
alexey.lysiuk
fa5f936371
- fixed missing saved game picture in software modes
...
https://forum.zdoom.org/viewtopic.php?t=60574
2018-05-13 16:11:05 +03:00
Christoph Oelckers
8f96729e06
- fixed portal benchmarking and added separate output for 2D and finishing the main scene.
2018-05-13 09:48:19 +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
alexey.lysiuk
2be84dc636
- skip rendering when application is not active
...
Use vid_activeinbackground CVAR to override this behavior
2018-05-04 11:24:37 +03: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
06d20e13b8
- cleaned up the gamma correction code.
...
This had accumulated quite a bit of cruft by now and parts of it should be in non OpenGL code.
2018-04-29 13:45:53 +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
bbea6e7e3c
Begin2D doesn't need a return type anymore
...
This was to tell the caller that software 2D was in use, but that doesn't exist anymore
2018-04-27 09:58:19 +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
Christoph Oelckers
306b630de2
- merged the remains of gl_texture.cpp into hw_cvars.cpp.
...
- eliminated hqresize.cpp's dependency on GL headers.
- cleaned up the logic for CreateTexBuffer so that hqresize.cpp does not need to check for software warped textures anymore.
2018-04-25 21:02:50 +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
85300993af
- replaced gl_PatchMenu with an MMX 'ifoption' check.
2018-04-25 19:36:48 +02:00
Christoph Oelckers
cf8ee3130b
- gl_clock moved to hwrenderer.
2018-04-25 18:39:54 +02:00
Christoph Oelckers
bc8f47444f
- texture precaching also moved to hwrenderer/.
2018-04-25 00:07:46 +02:00
Christoph Oelckers
0675315b41
- made FHardwareTexture inherit from an abstract interface to remove all GL dependencies from gl_material.cpp.
2018-04-24 23:06:34 +02:00
Christoph Oelckers
c37ff22a05
- removed the intermediate FGLTexture class.
...
This wasn't serving any real purpose anymore, and all its remaining functionality could be moved to FHardwareTexture
2018-04-24 20:41:52 +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
8a2e52d651
Removed gl_lights_checkside which essentially was just a pointless piece of cruft inherited from ZDoomGL.
2018-04-16 08:45:50 +02:00
Christoph Oelckers
e654a99d39
- changed GLDebug to receive char pointers instead of FStrings.
...
The most frequent call using this is the regular texture creation function where this results in a pointless allocation and destruction of a temporary string which is easily avoided.
2018-04-14 10:40:11 +02:00
alexey.lysiuk
e6e2b11167
Set common name for system-specific framebuffer class
...
Implementation details are hidden as much as possible in platform-specific source files
Reduced number of included header files
2018-04-09 20:47:49 +02:00
Christoph Oelckers
a40d85fd41
- fixed: Before aqcuiring the WipeEndScreen, the renderer must be flushed.
...
Apparently this got previously done implicitly by code that got lost in the refactoring.
2018-04-08 19:54:17 +02:00