Commit graph

905 commits

Author SHA1 Message Date
Magnus Norddahl
98032bc73f Change SSAO blur to be depth aware 2016-09-02 05:45:00 +02:00
Magnus Norddahl
5a0c61a2d5 Merge remote-tracking branch 'gzdoom_upstream/master' into lightmath
# Conflicts:
#	src/gl/renderer/gl_postprocess.cpp
#	src/gl/renderer/gl_renderbuffers.cpp
#	src/gl/scene/gl_scene.cpp
2016-09-02 02:40:44 +02:00
Christoph Oelckers
4e8027612f - restored 2 lines of code that somehow got lost before the last commit. 2016-09-01 17:38:17 +02:00
Christoph Oelckers
589936f570 - draw the colormap blend after postprocessing, not before it.
- added colormap shader to postprocessing.

This replaces the in-place application of fullscreen colormaps if renderbuffers are active. This way the fully composed scene gets inverted, not each element on its own which is highly problematic for additively blended things.
2016-09-01 17:14:51 +02:00
Christoph Oelckers
3389a5a74e - removed most of the specific options for legacy hardware and consolidated them in one variable (does not work yet.) 2016-09-01 11:52:52 +02:00
Magnus Norddahl
8a2737a0ce Fix precision issue in SSAO shader 2016-09-01 07:15:40 +02:00
Christoph Oelckers
4a0e082836 - fixed: The wall splitter in the translucent sorting code needs to set fracleft and fracright so that vertex generation is done correctly for the split segments. 2016-08-31 23:26:49 +02:00
Magnus Norddahl
55ea4a7729 Add ssao random texture 2016-08-30 01:09:21 +02:00
Christoph Oelckers
45ff15559d - removed gl_draw_synv because with the postprocessing this is no longer useful. 2016-08-30 00:33:02 +02:00
Magnus Norddahl
240ebf94a1 Remove radius increase in point light modes 2016-08-29 22:42:46 +02:00
Magnus Norddahl
737e700774 Added SSAO pass 2016-08-29 13:10:22 +02:00
Magnus Norddahl
a1d90e1229 Merge remote-tracking branch 'gzdoom_upstream/master' into lightmath 2016-08-29 12:58:20 +02:00
Christoph Oelckers
8f535997f8 - enable core profile by default on GL 3.x.
After doing some profiling it was very obvious that this has better performance than client arrays. Persistent buffers are still better, though, especially for handling dynamic lights.
2016-08-29 11:33:20 +02:00
Christoph Oelckers
0f0dc2c852 - implemented buffers for GL 3.x. These only get mapped during the data collection pass so the order of some things is different here. 2016-08-29 10:43:03 +02:00
Magnus Norddahl
e0e43ee7b3 Fix mColor reset value 2016-08-29 05:31:12 +02:00
Magnus Norddahl
71387b1b42 Fix wrong initial mClipSplit values. 2016-08-29 05:19:47 +02:00
Magnus Norddahl
bb066f6f07 Fall back to gl_renderbuffers 0 if buffer creation fails 2016-08-28 18:07:44 +02:00
alexey.lysiuk
47714509d6 Changed render buffers format back to RGBA16F
Reverted a03b2ff48b to fix issues with nVidia graphics on macOS
2016-08-28 11:15:16 +03:00
Christoph Oelckers
03d055a5ec - adjustments for message modes. 2016-08-28 10:11:09 +02:00
alexey.lysiuk
9b91a13487 Restored legacy way to collect OpenGL extensions 2016-08-28 10:21:20 +03:00
Magnus Norddahl
6c5109ec99 Fix uninitialized mPipelineTexture and fix BindCurrentTexture using the wrong handle 2016-08-27 06:24:36 +02:00
Magnus Norddahl
b1a0108a96 Fix tonemap palette not being rebuilt on palette change 2016-08-26 19:52:15 +02:00
Christoph Oelckers
c9578ae72d - create vertex buffer data for horizon portals in the constructor instead of in the draw function.
This was the last remaining place where the vertex buffer was accessed in the render pass.
2016-08-26 18:18:50 +02:00
Christoph Oelckers
597e10116f - added missing framebuffer function to fudging block. 2016-08-26 08:30:47 +02:00
Christoph Oelckers
10550c4ef0 Merge branch 'init_global_state' of https://github.com/dpjudas/zdoom 2016-08-26 02:20:00 +02:00
Christoph Oelckers
abba548e40 - render sector hacks through the quad renderer if the vertex buffer is not accessible. 2016-08-26 02:03:24 +02:00
Magnus Norddahl
5f09d3b7ef Add FBufferedUniformSampler because sampler uniforms may default bind to other locations than zero 2016-08-26 01:46:39 +02:00
Magnus Norddahl
b68bbaf617 Fix uninitialized memory access if a FShaderProgram is destroyed without being fully compiled and linked 2016-08-26 01:40:28 +02:00
Magnus Norddahl
960038bb81 Clear global state tracking variables when the OpenGL context is (re)created 2016-08-26 01:36:21 +02:00
Christoph Oelckers
f6544f3c44 - removed unused GLFLat::sub and all codes depending on it a valid pointer. 2016-08-26 00:04:29 +02:00
Christoph Oelckers
6755cb2a25 - use the quad drawer for skybox-flagged sectors. 2016-08-26 00:02:32 +02:00
Christoph Oelckers
b83c2056a8 - store the stencil caps in the reserved part of the main vertex buffer instead of constantly recreating them. 2016-08-26 00:01:51 +02:00
Christoph Oelckers
76d7b52fcd - handle the case where a wall gets drawn with an unmapped buffer and no vertex data.
This uses the quad drawer because it can only happen with translucent walls that got split during sorting.
2016-08-25 23:20:23 +02:00
Christoph Oelckers
4598c4138c - added vertex initialization for walls in the processing pass for core profile without persistent buffers.
This is slower than doing it in the render pass so it's only active when actually needed - it's also slower than using a client array so this code only gets used when there is no choice but to work with a 3.x core profile context.
2016-08-25 23:13:49 +02:00
Christoph Oelckers
8f331f56e2 - use MakeVertices directly in the portal code and remove all related code from RenderWall. 2016-08-25 23:02:43 +02:00
Christoph Oelckers
8cf53f04e8 - split off the vertex creation from RenderWall. 2016-08-25 22:54:08 +02:00
Christoph Oelckers
4ab8ca63ce - use more desctiptive names for the predefined vertex buffer indices. 2016-08-25 22:23:31 +02:00
Magnus Norddahl
9525d3690f Added gl_light_math and changed pixelpos + lights to be in eye space 2016-08-25 06:25:05 +02:00
alexey.lysiuk
52b51e79b9 Fixed missing decals in compatibility renderer
The problem was appeared in conjunction with dynamic lights only
See http://forum.zdoom.org/viewtopic.php?f=4&t=19321&start=405#p932733
2016-08-24 10:27:14 +03:00
alexey.lysiuk
a185886924 Added compatibility handling for fog and dynamic lights used together
See http://forum.drdteam.org/viewtopic.php?t=7063
2016-08-24 10:26:11 +03:00
Magnus Norddahl
25645d901e Add Palette LUT tonemap mode 2016-08-23 09:18:18 +02:00
Christoph Oelckers
9555617816 - fixed: The default for position.w is 1, so gl_quaddrawer.cpp needs to set this, too, for the uniform vertex positions. 2016-08-22 22:02:02 +02:00
Christoph Oelckers
b946114145 - removed unused variable. 2016-08-22 22:00:45 +02:00
Magnus Norddahl
1594cc9570 Only use KHR_debug if available 2016-08-22 19:25:13 +02:00
Christoph Oelckers
250be72939 - added handling for drawing with uniform vertices. It draws something but in the wrong place. Right now I have no idea what's happening... 2016-08-22 15:31:23 +02:00
Christoph Oelckers
7ba5acfb35 - added quad drawer interface so that this part can be done without altering a vertex buffer.
So far it's only the framework, the new code is not active yet.
2016-08-22 14:00:25 +02:00
Magnus Norddahl
302f59ea33 Fix r_clearbuffer color not being used 2016-08-22 01:52:51 +02:00
alexey.lysiuk
3e01039bbb Fixed missing #include for GCC/Clang 2016-08-21 15:47:56 +03:00
Christoph Oelckers
dde81b33ea - glEnable(GL_TEXTURE_2D) only makes sense if no shaders are being used. 2016-08-21 08:45:21 +02:00
Christoph Oelckers
97ff4cc025 Merge branch 'debug' of https://github.com/dpjudas/zdoom 2016-08-20 12:34:56 +02:00
Magnus Norddahl
f63635e07a Fix RFL_INVALIDATE_BUFFER check being inverted 2016-08-19 01:11:11 +02:00
Christoph Oelckers
eadc2f35dd - fixed: The crossfade wipe must use its own alpha for the second layer, not the one from the vertex buffer. 2016-08-19 00:21:17 +02:00
Magnus Norddahl
e8fc935f04 Another IsFilteredByDebugLevel typo.. 2016-08-18 02:24:57 +02:00
Magnus Norddahl
4241026f1c Swapped order in IsFilteredByDebugLevel 2016-08-18 02:21:53 +02:00
Magnus Norddahl
f75b6d8c5d Improve debug level filtering 2016-08-18 02:10:54 +02:00
Magnus Norddahl
b21b65eb43 Rearrange binding of texture and sampler to get rid of texture state usage warning 2016-08-18 01:32:41 +02:00
Magnus Norddahl
01f9a2d27a Fix clear warning 2016-08-18 00:21:33 +02:00
Magnus Norddahl
18ff65fb0e Filter logging to only display each message once 2016-08-17 23:52:20 +02:00
Magnus Norddahl
d380d765c9 OpenGL object labels and debug groups 2016-08-17 23:18:47 +02:00
Magnus Norddahl
2825bd4967 Fix invalid value error 2016-08-17 21:25:31 +02:00
Magnus Norddahl
a37225b81e Don't debug break on notifications 2016-08-17 21:25:03 +02:00
Magnus Norddahl
2cb5f1740e Add OpenGL debug messages to the console 2016-08-17 20:33:10 +02:00
Magnus Norddahl
fc01a6b832 Only query for GL_MAX_SAMPLES once 2016-08-17 17:59:47 +02:00
Magnus Norddahl
3c08f5ae48 Fix multisample count bug 2016-08-17 17:37:49 +02:00
Magnus Norddahl
5eeac830eb Clear and InvalidateFramebuffer optimization 2016-08-17 17:37:13 +02:00
Magnus Norddahl
fa2bcebd51 Add KHR_debug and ARB_invalidate_subdata 2016-08-17 16:48:11 +02:00
Magnus Norddahl
a8d1197ea7 Make sure we never pass a negative value to pow, and optimize gamma uniform 2016-08-16 00:01:18 +02:00
Magnus Norddahl
a03b2ff48b Change render buffers from RGBA16F to RGBA16 2016-08-15 23:51:49 +02:00
Christoph Oelckers
ac80ffcc00 - fixed scissor calculations in 2D drawer. 2016-08-15 08:53:49 +02:00
Christoph Oelckers
e03696a6c9 - fixed: The model matrix must be disabled right after rendering the sky dome, so that it won't get used for the skyfog layer. 2016-08-14 20:11:46 +02:00
Christoph Oelckers
4e8a96aa0e - removed FRenderState::set2DMode because it had no effect. This looks like development garbage from old times. 2016-08-14 09:14:26 +02:00
Magnus Norddahl
f8cc56ea3a Move SetOutputViewport to OpenGLFrameBuffer::Update as it cannot be safely called from Begin2D 2016-08-14 09:05:54 +02:00
Magnus Norddahl
fd4422eb62 Restore bound texture when FGLRenderBuffers::Setup finishes 2016-08-14 09:05:53 +02:00
Magnus Norddahl
94b72d25e9 First render may not have known scene dimensions 2016-08-14 09:05:52 +02:00
Magnus Norddahl
af62352860 Fix uninitialized data in render buffers at creation 2016-08-14 09:05:52 +02:00
Magnus Norddahl
847d2e8862 Fix viewport not being updated when resizing window when no scene is active 2016-08-14 09:05:51 +02:00
Magnus Norddahl
647ef5d029 Fix blur shader to use RenderScreenQuad 2016-08-14 09:05:50 +02:00
Magnus Norddahl
210fce1193 Fix bloom shader missing its target 2016-08-14 09:05:50 +02:00
Magnus Norddahl
4ecb77385d GetScreenshotBuffer bug fix 2016-08-14 09:05:49 +02:00
Magnus Norddahl
d5b122b092 Fix GetScreenshotBuffer grabbing from wrong location 2016-08-14 09:05:48 +02:00
Magnus Norddahl
c817979eae Remove GetTrueHeight from GL renderer and concentrate all viewport calculations in SetOutputViewport 2016-08-14 09:05:48 +02:00
Christoph Oelckers
353a464f5b - fixed: The 2D texture drawer did not reset the render state's color so any previously set desaturation would persist. 2016-08-13 22:15:00 +02:00
Christoph Oelckers
0fdd80eae7 - removed debug Printf. 2016-08-10 16:32:31 +02:00
Christoph Oelckers
0e5a3ebe50 - fixed bad function call in vertex buffer init code. 2016-08-10 00:35:42 +02:00
Christoph Oelckers
56a60ebe85 - restored a line that got accidentally deleted. 2016-08-08 20:47:54 +02:00
Christoph Oelckers
e5f88a9883 - fixed: The textured automap was not using correct light levels.
In order for the externally passed vertex attribute to work the buffer's color attrib array needs to be disabled for these.
2016-08-08 16:18:07 +02:00
Christoph Oelckers
675822004d - use static buffer data and a uniform to handle the texture positioning of the present shader.
That's again one less write access to the buffer. The uniform method was chosen because this way a buffer update can be completely avoided, and setting a single uniform is a lot cheaper and simpler to handle.
2016-08-08 16:06:02 +02:00
Christoph Oelckers
8daaf61160 - predefine the vertex data for the blend overlay which will never change throughout the lifetime of the GLRenderer object. 2016-08-08 14:24:48 +02:00
Christoph Oelckers
9c9edbffdb - on older ATI drivers where the clip planes are broken, only disable the clip planes themselves, but not OpenGL 3.x so that dynamic lights still work as intended.
- only disable clip planes on Windows, but not on Linux or macOS.
- If a driver reports full OpenGL 4.5 support, assume that all features are working properly.
2016-08-08 12:55:09 +02:00
Magnus Norddahl
2ac91f0c5a Fix Nvidia driver ignoring wglSwapIntervalEXT 2016-08-08 12:22:40 +02:00
alexey.lysiuk
9ab9548723 Additional fix for splitting of complex wall in compatibility renderer
warp 2720 -200 -32 on Extreme Terror
https://www.doomworld.com/idgames/levels/doom2/Ports/d-f/exterror
2016-08-08 12:19:37 +02:00
Christoph Oelckers
def3ad7533 - refactored all 2D drawing to use its own vertex buffer which does not need to be mapped permanently. 2016-08-08 12:13:09 +02:00
Magnus Norddahl
d4615861ae Fix missing FGLRenderBuffers::IsEnabled checks 2016-08-07 00:41:17 +02:00
Christoph Oelckers
04c59b434b - renamed WipeVertexBuffer to FSimpleVertexBuffer because this will be useful elsewhere, too. 2016-08-07 00:40:31 +02:00
Christoph Oelckers
8f0629932d - ImmRenderBuffer is not needed anymore. 2016-08-06 14:29:21 +02:00
Christoph Oelckers
6a66d0255d - use a dedicated vertex buffer for rendering the wipes.
- fixed: The postprocessing shaders clobbered the render state's vertex buffer info by bypassing and not notifying it of the change.
2016-08-06 14:12:40 +02:00
Christoph Oelckers
7576e85cef - force use of shaders on all hardware, unless -noshader is specified.
Right it's only for easy testing, so only the code that does the feature checking has been disabled.
2016-08-06 13:06:55 +02:00
Christoph Oelckers
2e555e6dab - use client arrays on compatibility profiles instead of calling glBegin/glEnd.
This eliminates most behavioral differences for FFlatVertexBuffer between both operating modes, now the only difference is where the buffer is located.
2016-08-06 12:03:16 +02:00
Magnus Norddahl
346badf25f Moved state to FGLPostProcessState and merged vertex shaders 2016-08-06 11:51:08 +02:00
Christoph Oelckers
13a2bf57e5 - fixed vertex coordinate ordering for the sky cubemap.
This was done differently for FFlatVertex and FSkyVertex which caused a switch of the y and z coordinates for the skybox image.
2016-08-06 11:47:03 +02:00
Christoph Oelckers
5b201287fa - fixed bad #pragma pack combination in hqnx_asm_Image.h 2016-08-05 15:27:35 +02:00
Christoph Oelckers
13527fdd0a Merge branch 'lensshader' of https://github.com/dpjudas/zdoom 2016-08-05 00:58:14 +02:00
Magnus Norddahl
976a78429e Simplify post process buffer handling 2016-08-04 17:16:49 +02:00
Magnus Norddahl
6fc7596d52 Fix aspect ratio and texture clipping in lens shader 2016-08-04 15:47:15 +02:00
Christoph Oelckers
21536781a9 - forgot to save this. 2016-08-04 13:01:42 +02:00
Christoph Oelckers
63ad7d99d1 - fixed: The dynamic light buffer's behavior needs to obey the gl.lightmethod variable, and not depend on presence of persistently mapped buffers.
Since there is a command line switch to revert to the lower behavior it can well be that they do not match.
2016-08-04 12:55:21 +02:00
Christoph Oelckers
7ba6269450 - changed rendering of sky cubemaps to use precalculated vertex data from the SkyVertexBuffer. 2016-08-04 12:16:53 +02:00
Magnus Norddahl
6b9529d70f Added lens distortion shader 2016-08-02 17:32:21 +02:00
Magnus Norddahl
43e577ce79 Merge remote-tracking branch 'gzdoom_upstream/master' into postprocess_vbo_bind_fix
# Conflicts:
#	src/gl/renderer/gl_postprocess.cpp
2016-08-02 10:00:53 +02:00
Magnus Norddahl
5a67ae6021 Fix missing VBO bind calls 2016-08-02 00:27:01 +02:00
Magnus Norddahl
f980a1f42b Fix wrong UV calculations when resizing or maximizing window 2016-08-01 15:12:13 +02:00
Christoph Oelckers
8aebfdb3ab - fixed: gl_bloom_amount may never be 0. 2016-08-01 11:29:28 +02:00
Magnus Norddahl
e8c98a5901 No gamma and player sprites on screenshots 2016-07-31 16:56:41 +02:00
Magnus Norddahl
7709db4bb0 Fix broken viewport/backbuffer location for WriteSavePic 2016-07-31 16:23:21 +02:00
Magnus Norddahl
a6354c74cf Fix incorrect viewport location when not using fullscreen HUD 2016-07-31 13:23:49 +02:00
Christoph Oelckers
20f4975e2b Merge branch 'blurshader_120_fix' of https://github.com/dpjudas/zdoom 2016-07-31 09:17:28 +02:00
Magnus Norddahl
849e80074e Added GLSL 120 fallback support 2016-07-31 03:54:16 +02:00
Magnus Norddahl
b789aaa0eb Fix binding error that Nvidia didn't complain about but Intel on Mac does 2016-07-31 03:16:48 +02:00
Christoph Oelckers
c93204cace Merge branch 'master' of https://github.com/coelckers/gzdoom 2016-07-30 22:09:56 +02:00
Christoph Oelckers
bc51e98612 Merge branch 'blackscreenfix' of https://github.com/dpjudas/zdoom 2016-07-30 20:28:41 +02:00
Magnus Norddahl
1682b02c67 Fix glBindSampler state messing up post processing shaders 2016-07-30 19:54:20 +02:00
Magnus Norddahl
cfc20d1198 Added multisample support to FGLRenderBuffers and added gl_multisample to the menus 2016-07-30 15:33:30 +02:00
alexey.lysiuk
7de242930a Removed obsolete gamma correct shader used on macOS only 2016-07-30 15:30:35 +03:00
Christoph Oelckers
b52d457146 Merge branch 'master' of https://github.com/coelckers/gzdoom 2016-07-30 11:45:19 +02:00
alexey.lysiuk
e2a2d38a25 Removed redundant comparison in compatibility renderer
Clang no longer reports "warning: comparison of array 'this->tcs' not equal to a null pointer is always true"
2016-07-30 10:25:42 +03:00
Major Cooke
36705b0f04 Added GZDoom version of SpriteAngle and SpriteRotation. 2016-07-30 00:33:33 +02:00
Christoph Oelckers
f4cbde856b Merge branch 'bloom' of https://github.com/dpjudas/zdoom 2016-07-30 00:30:27 +02:00
Magnus Norddahl
9bfce5b6ea Moved post processing effects to its own file 2016-07-30 00:02:26 +02:00
Magnus Norddahl
5849c83028 Added bloom and tonemap to menus
Added gl_renderbuffers CVAR that disables render buffers
Added patch shader support to FShaderProgram
Added OpenGL 2 fallback support to render buffers
2016-07-29 21:31:20 +02:00
Magnus Norddahl
0efee85bd8 Added tonemapping and sector based exposure control 2016-07-29 00:36:43 +02:00
Magnus Norddahl
69f52cc898 Added bloom shaders 2016-07-27 21:50:30 +02:00
Christoph Oelckers
da1762ac2c - fixed: DoSetMapSection could cause a stack overflow on large maps. Made it iterative instead of recursive to avoid that. 2016-07-27 16:27:40 +02:00
Magnus Norddahl
e82c38e4f9 Update copyright and typo fix 2016-07-27 11:15:20 +02:00
Magnus Norddahl
aeb7df09de Added hardware gamma option and improved window handling on Windows 2016-07-27 11:15:19 +02:00
Christoph Oelckers
071485b22e - fixed: If the resulting render style, after all adjustments, is None for the weapon sprite, do not attempt to draw it at all. 2016-07-25 11:55:47 +02:00
Magnus Norddahl
41e959e102 Adds the last texture filter mode (trilinear min filter with nearest magnification) 2016-07-23 18:57:37 +02:00
Christoph Oelckers
54a120d612 - do not process subsectors if rendering a stacked sector portal and the clipper is set to 'blocked', i.e. no visible parts are present.
This solves the most severe occurences of sprites being drawn in front of a portal's contents. It is not a full fix, though, there's still some extreme cases where portals may glitch if some stuff gets between the camera and the actual portal area.
Normally this has to perform a full check of the subsector against the portal's camera-facing linedefs but that's too costly for those rare cases where it may be an issue.
2016-07-23 10:23:34 +02:00
Christoph Oelckers
d405cf5b7c - fixed: Before rendering a sector stack portal the clipper needs to be completely filled, if the view point's subsector is not inside the portal. If this is not done, some setups where a recursive look into the originating area is possible may exhibit some issues. 2016-07-23 09:47:14 +02:00
MajorCooke
35666f1e09 Fixed a nullptr crash with flatsprite actors. 2016-07-21 13:12:59 -05:00
Christoph Oelckers
c5db5dff99 - fixed a crash when initializing the GL portal data for an incomplete or inactive portal. Also did a bit of cleanup on this code, the 'delta' member was never used. 2016-07-16 12:45:49 +02:00
Christoph Oelckers
a2f56b6ef5 - This should have been part of an earlier commit, no idea why it wasn't saved... 2016-07-16 09:35:20 +02:00
Jordon Moss
1ef8057fa7 Updated SurfaceSkin to take the path property. 2016-07-16 09:30:26 +02:00
Jordon Moss
6014bde3d0 Renamed PushSpriteFrame to PushSpriteMDLFrame for consistency. 2016-07-16 09:30:26 +02:00
Jordon Moss
8bbc04a46f Fixed a minor typo in SurfaceSkin validity check. 2016-07-16 09:30:25 +02:00
Jordon Moss
b3b2eb42c6 Added SurfaceSkin MODELDEF property, allows overriding MD3 per-surface skins. 2016-07-16 09:30:25 +02:00
Christoph Oelckers
bc7b439dd0 - addressed: MDL_INHERITACTORPITCH got the direction of the rotation wrong. Fixed by deprecating this flag (and also MDL_INHERITACTORROLL) and introducing proper flags, named MDL_USE*. This not only resolves the issue but also elimintates the nonsensical INHERIT part of the names. 2016-07-16 09:10:18 +02:00
Christoph Oelckers
f4b80a451e - fixed: The render style specific blend settings were overridden when adding code to ensure proper setup of all properties.
It turned out that the only thing that wasn't set is the alpha function, not the blend settings themselves.
2016-07-16 08:57:48 +02:00
MajorCooke
e56196eb1a Disable facing camera rotations if the actor is a flat/wall sprite.
- It not only looks bad, it also throws off users when trying to make perfectly aligned images since the plane is distorted wildly.
2016-07-13 09:31:22 +02:00
MajorCooke
cc8d84cd5d Fixed sprites defaulting to rotate around the center instead of the offsets. Seeing how it's still useful however, ROLLCENTER can still be used to center upon actors that are offsetted like monsters. 2016-07-13 09:31:22 +02:00
Christoph Oelckers
6b0b7ea049 - fixed sprite z coordinate calculation for flatsprites. 2016-07-04 01:00:01 +02:00
Christoph Oelckers
cc784fff14 Merge branch 'rollGZ2' of https://github.com/MajorCooke/zdoom 2016-07-04 00:45:37 +02:00
alexey.lysiuk
924b8105c5 Fixed splitting of complex walls in compatibility renderer
Example: +warp 2720 -200 -32 on Extreme Terror
https://www.doomworld.com/idgames/levels/doom2/Ports/d-f/exterror
2016-06-29 12:34:35 +02:00
alexey.lysiuk
e6a7db99e4 Fixed missing polyobjects in compatibility renderer 2016-06-29 12:23:16 +02:00
alexey.lysiuk
fc8eaab57b Fixed crash in dynamic lights compatibility renderer
Reproduces using -iwad plutonia -file brutalv20b.pk3 +map map07
2016-06-29 12:21:39 +02:00
Christoph Oelckers
17c212d5bc - disable transparent door render hacks if any of the involved sectors contains floor slopes.
These lead to false positives but rarely represent actual hacks.
2016-06-29 12:19:00 +02:00
alexey.lysiuk
2813a22740 Fixed inconsistent state of lights in compatibility renderer 2016-06-19 11:19:31 +03:00
Christoph Oelckers
7b99c883e1 - use the exact same semantics and methods to handle player visibility as in the software renderer.
This fixes invisible player sprites in recursive line portals.
2016-06-18 12:14:20 +02:00
Christoph Oelckers
87d27b8db3 - fixed some crash issues with recent changes. 2016-06-18 10:01:24 +02:00
Christoph Oelckers
92e2ce2aef - adjustments for weapon rendering in GL.
This adds support for the new weapon state code and fixed some lighting calculations.
Note that this currently will not allow combination of HUD models with other sprite frames yet.
2016-06-17 17:21:42 +02:00
Christoph Oelckers
8ca07443f1 - fixed: Sprite splitting at 3D floors must set the fog parameters for the new light level. 2016-06-17 16:16:31 +02:00
MajorCooke
b2d2389343 Fixed: Slanted flat + roll sprites didn't take DONTFLIP into account. 2016-06-05 15:51:23 -05:00
MajorCooke
e58c6de7d6 DONTFLIP flag prevents the backside from flipping over. 2016-06-05 15:14:40 -05:00
alexey.lysiuk
56ce6abbc2 Fixed splitting of walls in compatibility renderer
Any wall adjacent to 3D floor sector were not rendered at all
2016-06-05 12:38:23 +03:00
Christoph Oelckers
5017a192eb - fixed: The texture matrix was not reset after drawing the texture pass for multipass textured dynamic lights. 2016-05-19 12:22:39 +02:00
Christoph Oelckers
13da14e915 - disable dynamic lights on additively blended surfaces because it doesn't look good at all. 2016-05-18 22:20:18 +02:00
Christoph Oelckers
362e21a6b3 - fixed: The pitch negation required for INHERITACTORPITCH was also applied to the one from PITCHFROMMOMENTUM. 2016-05-17 09:12:26 +02:00
Christoph Oelckers
52e19c59b3 Revert "- let gl_draw_sync default to false."
This reverts commit 616f84209b.

Now I remember why this is not active: This is causing some problems with interpolated plane heights. Since there is no synchronization with the vertex buffer, the next frame will reset all plane coordinates before the GPU can use them. This will require some rethinking about when to update the buffer - it cannot be done in the render data setup loop.
2016-05-13 20:44:04 +02:00
Christoph Oelckers
99bfc64af6 - another failed attempt to use GL_CLIP_PLANE. Leave it in because it's closer to what is needed than the old code. 2016-05-12 23:41:06 +02:00
Christoph Oelckers
616f84209b - let gl_draw_sync default to false.
No need to waste valuable processing time if we can let the GPU run in parallel with the code that generates the next frame.
2016-05-12 20:23:18 +02:00
Christoph Oelckers
15933f9c72 - fixed: Texture precaching for sprites had some inverted logic and deleted everything that was still required. 2016-05-10 20:51:23 +02:00
Christoph Oelckers
15c711f2a1 - added a missing break in the wall draw dispatcher. 2016-05-09 00:58:55 +02:00
Christoph Oelckers
d5eb1008a4 - implemented texture overlay pass for textured dynamic lights. 2016-05-08 22:07:18 +02:00
Christoph Oelckers
b90173ed21 - fixed: ADynamicLight::visibletoplayer was not initialized for placed lights when restoring a savegame. 2016-05-08 09:34:22 +02:00
Christoph Oelckers
6753cddce1 - fixed: The HUD weapon drawer partially took the render state from the previous things that got rendered. Especially the blend mode could be randomly set to different values. 2016-05-08 09:22:38 +02:00
Christoph Oelckers
d61ec05c0f - draw texture based dynamic lights on walls. 2016-05-05 12:18:09 +02:00
Christoph Oelckers
2b92048a5b - renamed the texture coord variables in GLWall.
It makes no sense having them organized differently in this struct than what the rendering code needs. This saves one redundant copy operation and a function-local static variable.
2016-05-05 11:48:39 +02:00
Christoph Oelckers
51baa7d137 - added code to calculate light texture coordinates on walls. 2016-05-05 11:32:21 +02:00
Christoph Oelckers
0b2821d696 - added dynamic light rendering with textures on flats 2016-05-05 10:28:21 +02:00
Christoph Oelckers
c9d4c68039 - added dynamic light drawer for flats. 2016-05-05 00:24:47 +02:00
Christoph Oelckers
4412f99b38 - added the flat dispatcher for textured lighting. 2016-05-04 23:07:16 +02:00
Christoph Oelckers
ec7b4b1ba4 - initial work on textured dynamic light processing. 2016-05-04 22:14:39 +02:00
Christoph Oelckers
8817f89192 - do not clip the first frame of very slow projectiles. 2016-05-04 20:31:21 +02:00
Christoph Oelckers
7b65e6d424 - use glMapBuffer instead of glMapBufferRange on older hardware. 2016-05-04 19:16:07 +02:00
Christoph Oelckers
bdb7594e60 - fixed: Incomplete model definitions flagged the actor as having a model, which could cause a crash. 2016-05-04 14:25:58 +02:00
Christoph Oelckers
5f095082c0 - fixed: The 2D drawing code incorrectly set the shader override to disable all special effects. 2016-05-04 14:10:06 +02:00
Christoph Oelckers
54571beaca - reset the path to "" before a model definition is parsed. 2016-05-04 12:28:35 +02:00
Christoph Oelckers
fd8a59bd24 - fixed: INHERITACTORPITCH was inverted.
- changed PITCHFORMOMENTUM to do nothing for very small velocities.
2016-05-04 12:23:40 +02:00
Christoph Oelckers
ab8a647433 - fixed the disabled visibility rules check for dynamic lights by doing the actual check in the light's Tick() method and letting the renderer only use the result. 2016-05-04 11:33:18 +02:00
Christoph Oelckers
0a94371974 - reinstated old code for rendering fog boundaries and mirrot surfaces without shaders.
- added code for filling the render list for textured dynamic lights. This is not yet active because no code is present to handle this data.
2016-05-03 23:28:42 +02:00
Christoph Oelckers
0f8f08edfd - fixed: camera facing sprites need to orient themselves toward the actual camera position, not the view actor (which may be invalid or in a completely different part of the map if a portal is being rendered.) 2016-05-03 19:24:28 +02:00
Christoph Oelckers
b6af4677f3 - implemented model precaching. 2016-05-03 18:14:16 +02:00
Christoph Oelckers
534500f36d - fixed software-based model interpolation. 2016-05-03 16:49:10 +02:00
Christoph Oelckers
f7fda94ec9 - changed model data to store models and textures by index instead of by pointer.
The indices are needed for efficient precaching and actual changes to the logic are minor so that this was the best option overall.
2016-05-03 15:45:21 +02:00
Christoph Oelckers
0e14f00b51 - fixed caching of texture sampler state for old hardware.
- fixed handling of CLAMP_XY_NOMIP sampler mode. This cannot be lumped together with CLAMP_XY because it has different mipmap requirements.
2016-05-03 13:39:41 +02:00
Christoph Oelckers
4d7be0e20e - added software interpolation as a fallback for models.
This is not tested yet so no guarantees!
2016-05-03 13:10:00 +02:00
Christoph Oelckers
942138b307 - undid some leftover texture state checks from the first attempt to handle this without sampler objects.
This code was written under the assumption that the glGenerateMipmap function does not exist. But all supported hardware has this function through the GL_EXT_framebuffer_object extension.
2016-05-03 11:27:52 +02:00
Christoph Oelckers
6f2b0a6293 - rewrote texture caching so that not the base texture but the actually used translations for sprites get precached. 2016-05-03 01:00:52 +02:00
Christoph Oelckers
ec037bfd1a - fixed: The check for one-way portals in the renderer was incomplete. 2016-05-02 19:47:27 +02:00
MajorCooke
16bea6cf1f - Fixed: Roll must orient the rotation based on pitch, not the other way around. 2016-05-02 10:46:44 -05:00
MajorCooke
9ec3093a34 Fixed some missed cases. 2016-05-02 08:52:44 -05:00
MajorCooke
673dab7f23 Removed PITCHFLATSPRITE. FLATSPRITE now encompasses the behavior. 2016-05-02 06:29:19 -05:00
alexey.lysiuk
4c4b97316e Fixed inconsistent texture wrapping
Sampler state needs to be reseted when hardware texture resources are released
2016-05-02 13:02:55 +03:00
alexey.lysiuk
44b019413c Implemented gamma correction in OS X native backend using shader effect 2016-05-02 10:04:09 +03:00
MajorCooke
a163220e8c Removed FlatAngle. 2016-05-01 17:30:30 -05:00
Christoph Oelckers
f2f3fa6d09 - parched the texture precaching so that it compiles and works again. The real work will come later. 2016-05-02 00:13:00 +02:00
MajorCooke
980a310755 GZDoom Roll Submission 2016-05-01 14:08:09 -05:00
Christoph Oelckers
26acf8e994 - fixed conditions for menu patching. 2016-05-01 17:43:30 +02:00
Christoph Oelckers
50ba1ecde8 - add menu patching for GL 2.x mode.
- use stdint types in model code, because we have to start somewhere with the transition.
2016-05-01 13:09:13 +02:00
Christoph Oelckers
4fb17561bc - optimize VSMatrix::Translate.
- use FVector3 for sprite rotations.
2016-05-01 12:39:08 +02:00
Christoph Oelckers
47064e24c9 - only bind the uniform buffer if it is actually going to be used. No need to check if we are use a shader storage buffer. 2016-05-01 12:01:44 +02:00
Christoph Oelckers
5ead3503b2 Merge branch 'master' of https://github.com/coelckers/gzdoom 2016-05-01 11:57:13 +02:00
Christoph Oelckers
24526f7da5 - made adjustments to floating point bounding boxes for nodes and changes to the WarpBuffer function. 2016-05-01 11:56:45 +02:00
alexey.lysiuk
1deb9742de Do not call UBO functions when no extension available 2016-05-01 11:46:49 +03:00
Christopher Bruns
6d95c9d544 Fix floating point update for camera facing billboard mode. 2016-04-30 18:15:29 -04:00
Christopher Bruns
5a33005303 Reorder two billboard rotations, so they work together correctly.
Fixes #126

# Conflicts:
#	src/gl/scene/gl_sprite.cpp
2016-04-30 18:15:27 -04:00
Christopher Bruns
b320787102 Implement new CVAR gl_billboard_faces_camera, which orients sprites toward camera, rather than along view direction.
# Conflicts:
#	gz3doom/GZ3DoomRiftMonitor1.bat
#	src/gl/scene/gl_sprite.cpp
#	src/gl/scene/gl_stereo3d.cpp
2016-04-30 18:15:27 -04:00
Christoph Oelckers
51991ef22d * - render partial sprites on the front side of a portal for actors behind it. 2016-04-30 23:18:37 +02:00
Christoph Oelckers
ca95371a27 - fixed: gl_load.c did not handle the GL 2.x fallback for the lack of glGetStringi correctly, if that function was missing it just crashed. 2016-04-30 17:16:16 +02:00
Christoph Oelckers
8011958ebe Merge branch 'gz2x' of https://github.com/alexey-lysiuk/gzdoom
# Conflicts:
#	src/gl/system/gl_interface.cpp
2016-04-30 17:09:57 +02:00
Christoph Oelckers
d84e079282 - render partial sprites oon the back side of a portal for actors in front of it. This is needed because the stencil will clip away those parts. 2016-04-30 16:57:53 +02:00
Christoph Oelckers
c29e96d369 - print buffer info only if the buffer type is used.
- removed some GL specs that are not informative in GZDoom's context.
2016-04-30 16:31:09 +02:00
Christoph Oelckers
50ab301bd8 - fixed: If we want to support pre-GL3 hardware, we may not require the presence of glGetStringi. 2016-04-30 16:23:32 +02:00
alexey.lysiuk
4400d0cfcc Fixed restoration of previously bound FBO 2016-04-30 16:29:22 +03:00
alexey.lysiuk
32412c7f75 Disabled printing of junk values for unsupported extensions in OpenGL startup log on OS X 2016-04-30 16:28:50 +03:00
alexey.lysiuk
6757447f1b Enabled printing of OpenGL startup log on all platforms 2016-04-30 16:28:35 +03:00
alexey.lysiuk
461c97d25b Fixed remaining issue with shader patching for old OpenGL 2016-04-30 16:28:19 +03:00
alexey.lysiuk
893d0c8915 Added old method to collect extensions
This required manual changes in generated file gl_load.c
2016-04-30 13:33:54 +03:00
alexey.lysiuk
3816b46938 Fixed compilation of OS X with native backend
TODO: check Linux build
2016-04-30 11:53:31 +03:00
alexey.lysiuk
de6f13f0b4 Updated gl_load.* files generated with glLoadGen 2.0.5
Added OpenGL extensions list file for glLoadGen
Added extensions for OS X version
2016-04-30 11:43:08 +03:00
Christoph Oelckers
70bf649364 - added clip planes for line portals and mirrors. This should eliminate the remaining problems with some visible geometry in front of the portal, it is also necessary to handle sprite splitting across line portals properly. 2016-04-29 12:26:57 +02:00
Christoph Oelckers
21283b18f4 - preparations for using clip planes on line portals. 2016-04-29 01:48:06 +02:00
Christoph Oelckers
e3fad118d2 - use the templated warp functions instead of the limited GZDoom 1.x version. gl_WarpBuffer has been removed. 2016-04-28 19:04:01 +02:00
Christoph Oelckers
434e39e62f - made adjustments to ZDoom's last changes. 2016-04-28 17:55:58 +02:00
Christoph Oelckers
d4806f82ca - reinstated some texturing-based dynamic light code. Not active yet and not tested yet. 2016-04-28 00:58:44 +02:00
Christoph Oelckers
ee7a4daa8c - preparations for textured dynamic lights. 2016-04-27 23:19:54 +02:00
MajorCooke
3be33b5725 The GL part of Quake Rolls. 2016-04-27 13:49:51 +02:00
Christoph Oelckers
73823e6a09 - fixed the texture size checks for determining if a camera texture requires offscreen rendering were wrong and checked the scaled size, not the physical size. 2016-04-27 02:56:55 +02:00
Christoph Oelckers
09f54b0940 - cleaned up the clip plane management for portals.
Unfortunately the math behind the old clip planes is utterly impenetrable and so poorly documented that I have no idea how to set that up, so it is deactivated for now. It wasn't working anyway.
2016-04-27 00:41:00 +02:00
Christoph Oelckers
066d5c63e2 - better be safe and not call GL_CLIP_DISTANCE functions on old hardware. 2016-04-26 21:55:17 +02:00
Christoph Oelckers
3faf5afa3a - re-added software translucency splitting for old hardware. 2016-04-26 21:49:30 +02:00
Christoph Oelckers
b06c86db38 - added old wall splitting code as a fallback for old hardware. 2016-04-26 21:42:15 +02:00
Christoph Oelckers
6e1b21d513 - added back sprite splitting for low end, plus some dynamic light code. 2016-04-26 21:31:24 +02:00
Christoph Oelckers
89f36fb963 - enabled texture and model matrices for shader-less rendering and fixed the sky cap color application. 2016-04-26 20:45:56 +02:00
Christoph Oelckers
9d71c91f01 - reenabled software warping for shader-less rendering. 2016-04-26 20:20:00 +02:00
Christoph Oelckers
924b72b633 - added workarounds for the invulnerability colormap for non-shader rendering. Unlike the shader based versions these do not decolorize the screen. The advantage to the old texture duplication is that this is far less stressful on performance. 2016-04-26 20:02:57 +02:00
Christoph Oelckers
913e3df7e3 - fixed display of alpha textures without shaders.
As it turned out, the translation's alpha channel was clobbered by the whole setup.
2016-04-26 19:11:32 +02:00
Christoph Oelckers
7e6e2bc0a8 - stated adding GL 2.0 compatibility handling 2016-04-26 18:24:02 +02:00
Christoph Oelckers
eb27057853 - enable shader-less rendering. Still very incomplete, but at least the basics are working. 2016-04-26 16:44:03 +02:00
Christoph Oelckers
3b1500438d - got rid of VAO's. they have no impact on performance and are a general nuisance if some render paths cannot use them.
- cleaned up gl_interface and removed gl.compatibility.
2016-04-26 16:26:34 +02:00
Christoph Oelckers
f066457a48 - add shader patching to allow running the engine with GLSL 1.2.
- made some initial preparations for the shader-less fallback path.
2016-04-26 15:26:52 +02:00