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
2382b9a238
- fixed: GLScenePortal did not forward IsSky to its backing object.
2018-07-22 21:18:00 +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
6ca2b3fce1
- fixed display for smaller screeblocks value.
...
When refactoring the screen scaling one line too many was altered by accident.
2018-07-21 12:13:17 +02:00
Christoph Oelckers
57f65a9379
- fixed: The 2D drawer did not restore the blend mode after finishing.
2018-07-20 19:46:53 +02:00
Christoph Oelckers
4a7b1aada7
Merge remote-tracking branch 'remotes/origin/modern'
...
# Conflicts:
# wadsrc/static/shaders/glsl/main.fp
2018-07-20 10:19:07 +02:00
Magnus Norddahl
a841602d70
- change the software renderer to render to a DSimpleCanvas like the old D3D9 target did. Then use the drawer threads to memcpy the result to the PBO
2018-07-20 05:48:15 +02:00
Magnus Norddahl
7da61ddfee
- fix missing forward declaration when falling back to older user shaders
2018-07-19 02:34:45 +02:00
Magnus Norddahl
a0a7fd53e8
- change software renderer back to writing directly into the pixel buffer object, but change the creation and mapping so that hopefully all vendors put it in system memory
2018-07-18 17:47:09 +02:00
Magnus Norddahl
23c0f8f6ac
- fix buffer usage warning caused by using the wrong flag for glMapBuffer after switching to doing a plain memcpy
2018-07-18 16:04:35 +02:00
Magnus Norddahl
e93d1e3ebc
- change software renderer upload code to use GL_STREAM_DRAW and a memcpy from system memory
2018-07-18 06:46:30 +02:00
Magnus Norddahl
8a500a25f5
- rewrite the user shader support for materials - new syntax is to create a 'Material ProcessMaterial()' function
2018-07-15 23:01:40 +02:00
Christoph Oelckers
f62e2f9ba3
- fixed: The stencil cap may never write to the depth buffer.
...
Due to the way nested portals work this will block rendering of the nested cap entriely and cause some visual glitches when looking straight up or down in such a sector.
2018-07-15 19:16:12 +02:00
Christoph Oelckers
2c86c4e942
- fixed: When deleting a camera texture's depth buffer, the corresponding variable must also be cleared.
...
Thanks to OpenGL's messed up state system this didn't cause some clear failure but just reused the last bound buffer instead which may not have had a matching size.
2018-07-15 10:55:34 +02:00
Christoph Oelckers
d58d1e21d0
- removed the texture invalidation check from FHardwareTexture.
...
This is not needed anymore because only warp and camera textures still implement CheckModified and both are excluded here.
2018-07-15 00:28:16 +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
usernameak
e306d4ee04
Fix codestyle; add ability to name the textures
2018-07-14 12:01:54 +02:00
usernameak
fa51a54042
Made ability to define custom material shaders for ProcessMaterial function
2018-07-14 12:01:54 +02:00
Magnus Norddahl
ebae12e74b
- Make members private that are not used outside FGLRenderBuffers
2018-07-03 23:35:34 +02:00
Magnus Norddahl
092b2953ea
- add GL to OpenGL specific postprocess classes to make it more clear which belongs to the generic hw interface and which belong to the OpenGL implementation
2018-07-03 23:31:40 +02:00
Magnus Norddahl
fcee021753
Fix frame buffer binding bug that caused PP textures to end up with bad data
2018-07-03 21:44:49 +02:00
Magnus Norddahl
4482ad2b78
- fix saved texture bindings to work for any number of binds
2018-07-01 14:31:30 +02:00
Magnus Norddahl
5b3212df13
Merge remote-tracking branch 'gzdoom/modern' into hw_postprocess
2018-06-30 16:47:06 +02:00
Magnus Norddahl
c0c7573788
- fix black ssao bug
2018-06-30 16:46:33 +02:00
Magnus Norddahl
8eb825e25a
- fix some postprocess bugs
2018-06-30 16:44:09 +02:00
Magnus Norddahl
ba09af7cbb
- add GL debug group for the 2D drawer
...
- remove pointless opengl calls from effects that are doing nothing
2018-06-30 15:41:12 +02:00
Magnus Norddahl
35c13763db
- convert the SSAO pass to use hw_postprocess
2018-06-30 15:24:13 +02:00
Magnus Norddahl
ecb5d69ae3
- Simplify FGLRenderer::PostProcessScene
2018-06-29 21:55:46 +02:00
Magnus Norddahl
a7529ce3b4
Merge remote-tracking branch 'gzdoom/modern' into hw_postprocess
2018-06-29 20:24:32 +02:00
Christoph Oelckers
446be98f37
- fixed light application logic for flats.
...
The light mode check wasn't done properly anymore after merging GLPASS_ALL and GLPASS_PLAIN.
2018-06-26 09:28:10 +02:00
Magnus Norddahl
61d69f5561
Merge remote-tracking branch 'gzdoom/modern' into hw_postprocess
2018-06-26 02:12: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
Magnus Norddahl
32d837cdf1
Merge remote-tracking branch 'gzdoom/modern' into hw_postprocess
2018-06-24 17:57:02 +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
4ef7b66c4b
- partial consolidation of the EyePose classes.
...
The SBS versions can just as easily be handled with an additional parameter.
2018-06-24 11:45:40 +02:00
Christoph Oelckers
532fba5c26
- moved the Stereo3D EyePose to their own file in hwrenderer/.
2018-06-24 10:47:42 +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
Magnus Norddahl
b2fad453fa
- change tonemaps to steps
2018-06-23 19:25:49 +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
7f0e29db48
- fixed clip plane setup.
...
This had to be reordered so that the clip plane gets set before applying the uniforms.
2018-06-22 22:50:33 +02:00
Christoph Oelckers
80a9028938
- mirror clip planes moved - not working yet.
2018-06-22 22:45:05 +02:00
Christoph Oelckers
e7531bb579
- fixed camerapos setup.
2018-06-22 21:44:53 +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
Magnus Norddahl
ebf0cef283
- convert colormap shader to postprocess steps
2018-06-22 00:51:58 +02:00
Magnus Norddahl
83f50f5808
- port bloom, blur and camera exposure to postprocess steps and remove the old implementation
2018-06-22 00:29:50 +02:00
Christoph Oelckers
9486180843
- simplify the interface.
2018-06-21 21:36:12 +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
Magnus Norddahl
fd2037bd6c
- removed the rest of the old lens and fxaa code
2018-06-20 20:09:37 +02:00
Magnus Norddahl
151ed22967
- write OpenGL backend for hw_postprocess (FGLRenderBuffers::RenderEffect)
...
- remove old fxaa and lens shader classes
- render the fxaa and lens effects
2018-06-20 19:56:30 +02:00
Christoph Oelckers
eb277cc101
- calculate the normal view matrix at a higher level.
2018-06-20 13:49:06 +02:00
Christoph Oelckers
7f5272c23f
Deleted GLSceneDrawer
...
Since it didn't contain any data anymore it was relatively pointless. Code has been moved to FDrawInfo and GLRenderer, depending on its scope.
2018-06-20 13:14:50 +02:00
Christoph Oelckers
f229b05675
- Took more functions out of GLSceneDrawer
2018-06-20 12:57:41 +02:00
Christoph Oelckers
469c9241eb
Moved WriteSavePic implementation to FGLRenderer
2018-06-20 12:29:52 +02:00
Christoph Oelckers
64ce4d5072
- The Teardown virtuals aren't implemented anywhere so they can go away
2018-06-20 11:46:25 +02:00
Christoph Oelckers
f7d8f32114
- removed some unused code from RenderViewpoint
2018-06-20 11:43:10 +02:00
Christoph Oelckers
3a80160ca0
More code from GLSceneDrawer to FDrawInfo
2018-06-20 11:38:45 +02:00
Christoph Oelckers
b244fa2c8b
Took the main render function out of GLSceneDrawer and moved them into FDrawInfo
...
First step of eliminating the intermediate SceneDrawer class which has become mostly redundant.
2018-06-20 11:17:38 +02:00
Christoph Oelckers
677eba3392
- fix the header
2018-06-20 10:48:24 +02:00
Christoph Oelckers
2060402671
Moved the viewpoint setup code in RenderViewpoint to R_SetupFrame
2018-06-20 10:47:03 +02:00
Christoph Oelckers
9bdb5f1a5d
Moved ProcessLowerMinisegs back toAPI independent code.
2018-06-20 10:10:30 +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
753cd0aede
- made R_SetViewAngle a member of r_viewpoint
2018-06-19 17:44:11 +02:00
Christoph Oelckers
2c655322c3
… and in gl_sprites.cpp
2018-06-19 11:21:32 +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
46d73e7b4b
Pass ticFrac to the model renderer as a parameter
...
This also removes the rather pointless gl_RenderModel functions because with their two lines of content they can just be placed inline.
2018-06-19 09:18:27 +02:00
Magnus Norddahl
01bda6348e
- change swrender mapping to use two buffers/textures and glTexSubImage2D for uploads
2018-06-19 00:09:39 +02:00
Magnus Norddahl
67733ed6e6
- change swrender mapping to use two buffers/textures and glTexSubImage2D for uploads
2018-06-18 21:15:52 +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
babe55819e
- fullscreen toggle and some cleanup. Not fully working yet.
2018-06-17 22:11:35 +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
322488d1d1
- fixed: Horizon portals must be drawn in the context of their containing drawinfo.
...
This data, however, was not passed along to the portal processor and resulted in null pointers when trying to access it.
2018-06-17 18:33:59 +02:00
Christoph Oelckers
e9e1911fa5
- made the scene scale and offset calculations inline functions of DFrameBuffer.
...
These got repeated quite often.
2018-06-17 12:23:29 +02:00
Christoph Oelckers
acdb7e391f
- fixed bad pointer use in stereo3d code.
2018-06-17 10:53:33 +02:00
Magnus Norddahl
b4351e538f
- fix weapon missing when bloom was off (scene was already copied to post processing, but nothing had bound the PP frame buffer)
2018-06-17 01:45:20 +02:00
Christoph Oelckers
523104b2a8
- simplify some code.
2018-06-16 23:35:12 +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
2f4c2e0425
- fixed some includes which did not cause VC++ to error out.
2018-06-13 23:32:43 +02:00
Christoph Oelckers
9a7f9bdb4c
- moved postprocessing shader classes to hwrenderer after removing all dependencies on OpenGL.
2018-06-13 22:37:01 +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
8bf009bd89
- added a RenderQueue parameter to all Bind functions of the postprocessing shaders. This is unused for now. All places calling these pass a dummy NOQUEUE value which is just a nullptr.
...
This is for Vulkan preparation where all of this needs to run in a user-specified context so that this code can be moved out of the GL folder without depending on OpenGL's global state model.
2018-06-13 20:30:51 +02:00
Christoph Oelckers
0b9eaac5e1
- fixed SSAO shader texture assignments.
2018-06-13 19:04:19 +02:00
Christoph Oelckers
ce50b0e46b
- read sampler bindings from the shader instead of tagging along a large amount of support data.
...
Works for most shaders, except SSAO.
2018-06-13 17:44:49 +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
d2dea17e81
- specify vertex attributes in the shader source for Vulkan compatibility.
2018-06-13 08:40:04 +02:00
Christoph Oelckers
ad7aaa8f2a
- specify fragment output locations in the shader source.
...
OpenGL has been supporting this since version 3.3 and Vulkan requires it so it's the way to go.
2018-06-12 23:52:33 +02:00
Magnus Norddahl
832e7818c8
- rewrote the blur shader so that it works the same way as the rest
2018-06-12 22:14:44 +02:00
Christoph Oelckers
cb5caa757b
- moved ShaderUniforms to hwrenderer/ .
2018-06-12 22:08:31 +02:00
Christoph Oelckers
f166624eb2
- some fixes to the PP shader interface.
...
The binding point needs to be part of the ShaderUniforms class because Vulkan will need this value to generate the declaration in the shader source.
There's still one issue here: Since OpenGL has no local render state, the buffer must be bound every time it is used. Once the code is better abstracted this should be moved to a higher level class that knows all associated data and how to set it up.
2018-06-12 21:43:35 +02:00
Christoph Oelckers
4ddd9dde79
Use IUniformBuffer
2018-06-12 17:55:34 +02:00
Christoph Oelckers
20e84fff5a
- fixed crash with GL 3.x and fixed colormap active.
...
This must skip all light processing. On GL 4.5 it will only collect useless data but on GL 3.x it will run into an unmapped buffer situation.
2018-06-12 17:55:20 +02:00
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
Christoph Oelckers
3385e28611
Make it compile
2018-06-12 10:58:32 +02:00
Christoph Oelckers
b8b5802599
Added a uniform buffer abstraction class
...
May get some more methods later, this is just a start to get going.
2018-06-12 10:42:03 +02:00
Magnus Norddahl
9155b773cc
- change ShaderUniforms so that it just contains the uniform block and not the binding point
2018-06-11 22:33:55 +02:00
Magnus Norddahl
49073489e5
- uniform buffers for the fxaa, blur and bloom shaders
2018-06-11 22:06:46 +02:00
Magnus Norddahl
48f753061a
- uniform buffers for the present and shadowmap shaders
2018-06-11 21:42:09 +02:00
Magnus Norddahl
6fcc79d72a
- uniform buffers for the tonemap shaders
2018-06-11 21:18:20 +02:00
Magnus Norddahl
2bde741a7e
- Uniform buffer for colormap shader
2018-06-11 21:03:55 +02:00
Magnus Norddahl
d22fb24e28
- Uniform buffers for lens shader
2018-06-11 20:58:20 +02:00
Magnus Norddahl
763c5c9769
- change ssao pass to use an uniform block
2018-06-11 20:48:43 +02:00
Christoph Oelckers
2baed338f7
- flat rendering must check for missing vertex buffer data.
2018-06-05 21:44:38 +02:00
Marisa Kirisame
f74e74ac4b
Mirroring should be flipped on HUD models since the view to world space transform already inverts one axis
2018-06-03 14:20:42 +02:00
Magnus Norddahl
f03c02df43
- fix gamepic render buffer issues
2018-06-03 13:59:40 +02:00
Marisa Kirisame
dea1d0259d
Swap front face culling for GL model drawer (CCW should be the default).
...
Added mirroring handling to software models.
2018-06-03 07:26:55 +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
Christoph Oelckers
94d1a73ae8
- pass mirroring info to model drawers.
...
Actual evaluation only implemented in OpenGL. Not tested yet because the bug report had no testable example.
2018-06-02 13:07:47 +02:00
alexey.lysiuk
81f042f08b
- fixed compilation with Clang and GCC
...
src/gl/scene/gl_flats.cpp:215:3: error: cannot jump from this goto statement to its label
src/r_data/models/models.cpp💯 18: error: no member named 'floor' in namespace 'std'
2018-06-02 09:43:33 +03:00
Christoph Oelckers
058c5426cd
- fixed: OpenGL2 should not use the precalculated vertex buffer data for flat rendering.
...
This wasn't set up properly anymore because the new index-based buffer code is not efficient on GL2, but the render function forgot to skip the buffer checks and jump right to the fallback path.
2018-06-02 07:25:41 +02:00
alexey.lysiuk
7b619bc78c
- fixed crash with legacy render path
...
https://forum.zdoom.org/viewtopic.php?t=60727
2018-06-01 12:28:27 +03:00
alexey.lysiuk
4f5911da21
- fixed rendering of environment map on mirrors
...
With temporarily mapped buffer this feature seems to never work correctly
With persistently mapped buffer it was broken in 9a1603b246
2018-05-30 15:46:53 +03:00
alexey.lysiuk
f06ee10495
- use proper map section for wall mirror portal
...
https://forum.zdoom.org/viewtopic.php?t=60671
2018-05-29 12:16:20 +03: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
alexey.lysiuk
0187b0aa5b
- fixed mirrors and reflections in hardware renderer
...
https://forum.zdoom.org/viewtopic.php?t=60671
2018-05-28 11:51:43 +03:00
Christoph Oelckers
496e6e2e8f
- fixed: The vertex height updater was using the index buffer offsets to access the vertex buffer.
...
I missed this part when repurposing the vboindex members to store the index buffer offsets.
However, since both indices are needed, they need another set of variables.
2018-05-24 00:01:56 +02:00
Christoph Oelckers
23909d109f
fixed: Generating light data for single subsectors should not use the light list of the entire sector but only the one for the current subsector
2018-05-23 08:46:26 +02:00
Christoph Oelckers
044c8a2034
- removed gl_render_subsectors test CVAR and disabled vertex buffer generation for legacy mode
...
To reduce the performance impact, legacy mode will now always create flat vertex data on the fly instead of relying on the vertex buffer. This makes the CVAR mostly redundant as on anything more modern rendering per subsector will always be slower.
2018-05-23 08:43:52 +02:00
Christoph Oelckers
b612e182b4
Merge branch 'indexbuffer'
...
# Conflicts:
# src/gl/data/gl_vertexbuffer.h
# src/gl/scene/gl_flats.cpp
# src/hwrenderer/data/flatvertices.h
2018-05-22 22:10:21 +02:00
Christoph Oelckers
df6a50872d
Merge branch 'master' of https://github.com/coelckers/gzdoom
2018-05-22 21:36:52 +02:00
Christoph Oelckers
3f6789ecac
- moved gl_bsp.cpp to its proper place.
2018-05-22 21:36:42 +02:00
Christoph Oelckers
8987aba4a4
- restored accidentally deleted line of code.
2018-05-22 21:08:00 +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
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
5cffa8873a
- added a CVAR to disable per-plane rendering.
...
This will require some comparisons on older hardware. On my Geforce 1060 rendering the full plane with one draw call is clearly faster in all cases I tested.
2018-05-19 19:19:48 +02:00
Christoph Oelckers
3e204080ae
- render sector planes in one draw call.
...
On a fast and modern graphics card this is a lot faster than doing it per subsector but it may not be without drawbacks on older hardware so it will require some testing on older hardware.
For me Frozen Time's view over the bridge went from 46 fps to 51 fps with this change, the time saved was roughly 2 ms.
2018-05-19 15:20:46 +02:00
Christoph Oelckers
2125f8b9d1
- use triangles instead of triangle fans to render flats.
2018-05-19 14:42:25 +02:00
Christoph Oelckers
fd3681dae2
- use an indexed vertex buffer to render the flats.
...
Right now this has no advantage but it allows optimizing the data, e.g. rendering an entire sector in one go instead of per subsector.
2018-05-19 13:33:28 +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
ebbe52082a
- fixed vr_enable_quadbuffered for real
...
I did not consider that this is an init-only option. So changing the CVAR may not affect game behavior at all. Instead its value must be moved to some globally accessible variable on startup that never gets changed again.
2018-05-18 08:44:32 +02: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
b197bfc964
- avoid checking for vr_enable_quadbuffered directly.
...
This option only exists on Windows, so on the other platforms it should not be in the menu and not affect the setup of the VR mode.
2018-05-18 00:12:45 +02:00
Christoph Oelckers
46a57fdfa1
- moved the postprocessing CVARs to hwrenderer.
2018-05-17 20:51:42 +02:00
Christoph Oelckers
ea98fe3c4d
- moved the hardware independent part of custom postprocessing shaders from gl to hwrenderer.
2018-05-17 20:23:01 +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
6e20ece3f4
- moved vr_enable_quadbuffered definition to win32gliface.cpp because this is where it gets used.
2018-05-16 23:14:30 +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
alexey.lysiuk
f17f8c9359
- added end line to various messages
...
so they don't screw up further output anymore
2018-05-11 18:03:57 +03:00
Magnus Norddahl
46e2e0b57c
- reduce the number of direct OpenGL calls done by the post processing steps
2018-05-10 14:43:34 +02:00
Christoph Oelckers
50cdcc79c8
- fixed OpenGL2.0 may not call the modern light setup code.
2018-05-10 09:05:26 +02:00
Magnus Norddahl
49c9de350f
- GetTimeFloat is not renderer specific
2018-05-07 00:40:12 +02:00
Christoph Oelckers
099057b142
- moved the vertex and light data generation back to the render pass for modern OpenGL with persistently mapped buffers.
...
Having this extra CPU time in there allows for better parallelization with the graphics driver and GPU.
2018-05-05 23:32:55 +02:00
Christoph Oelckers
74b624002c
- moved the software renderer's drawer to the swrenderer directory.
2018-05-05 11:44:42 +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
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
e0833d5005
- prepared the weapon sprite drawer for full separation.
2018-05-03 23:49:16 +02:00
Christoph Oelckers
e309fd1f3d
- moved a bit more of the wall setup to the API independent side.
2018-05-03 22:14:25 +02:00
Christoph Oelckers
6285a309ce
- added UploadLights to the DrawInfo interface.
...
- removed GLPASS_PLAIN because it was the same as GLPASS_ALL.
2018-05-03 21:47:58 +02:00
Christoph Oelckers
96ac1fa363
- changed GLDecal to work without a pointer to the generating GLWall.
...
Although this is currently safe there is no guarantee that future refactorings will keep the current draw lists, so it's better if GLDecal used its own copy of the data.
2018-05-03 21:42:34 +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
2b5019ea6e
- fix for rendering a brightmapped 2D texture with ColorIsFixed render style.
...
This must disable the brightmap.
2018-04-30 21:28:06 +02:00
alexey.lysiuk
76ed80fe56
Fixed randomly colored weapons
2018-04-30 10:35:18 +03:00
Christoph Oelckers
ebc1c5741b
- some more weapon code extracted.
2018-04-30 00:09:42 +02:00
Christoph Oelckers
c2ac985357
- split off the utility functions from gl_weapon.cpp.
...
Meaning there's only half as much code left to clean up.
2018-04-29 23:38:26 +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
852c42bbd4
- fixed dynamic lights in legacy mode.
...
Since they mess around with the texture coordinates, these need to be backed up and restored afterward.
There was also an issue with the ValidNormal check that was suffering from imprecisions that cause walls to be skipped, so the check was removed because it was mostly pointless.
2018-04-29 19:00:17 +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
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
9e6f3787c6
- moved PTM_BestColor to v_palette.cpp and removed its dependencies on CVARs.
2018-04-29 13:10:30 +02:00
Christoph Oelckers
9350eee0c0
- GLDrawList moved to hwrenderer/.
2018-04-29 12:56:06 +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
ec13b77717
- removed empty gl_wall.h.
2018-04-29 11:40:47 +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
819ea8f937
- reduced gl_spritelight.cpp to pure data setup so that it can be moved out of gl/.
...
- added thread_local to some static arrays being used for setting up dynamic lights.
Right now it's of little consequence but these will have to be maintained per thread if the render data setup is done by worker tasks.
2018-04-29 09:33:36 +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
d1720ad790
- GLSprite rework.
2018-04-28 20:02:17 +02:00
Christoph Oelckers
243e12bd8f
- split gl_flats.cpp
2018-04-28 13:24:45 +02:00