Commit graph

243 commits

Author SHA1 Message Date
Christoph Oelckers
daf1a40521 - allow swapping the order of gl_finish and SwapBuffers calls, because some cards do not seem to like the correct order. 2016-12-03 20:09:25 +01:00
Christoph Oelckers
34970c9b9c - removed hexenglobal include from GL files. 2016-12-03 18:49:52 +01:00
Magnus Norddahl
9416d436fe Move software renderer into its own namespace to isolate its globals and make
any access explicit. This reveals the places in the code where they are being
accessed where they shouldn't and prevents accidental usage.
2016-12-01 02:38:32 +01:00
Magnus Norddahl
284a99f204 Merge branch 'gl_swframebuffer' into qzdoom 2016-11-29 22:16:58 +01:00
Magnus Norddahl
00387a7211 Add bounds check to palette upload buffer size 2016-11-29 22:16:40 +01:00
Magnus Norddahl
057060022a Merge remote-tracking branch 'gzdoom/master' into ssao 2016-11-27 09:59:57 +01:00
Magnus Norddahl
17ed585c1f Fix vsync not working 2016-11-19 12:30:58 +01:00
Christoph Oelckers
3a2d0e3486 - copied all necessary adjustments from the test branch in the QZDoom repo. 2016-11-15 11:49:27 +01:00
Rachael Alexanderson
9413ea6edf - Textured automap would crash due to an additional parameter in the software renderer to the FillSimplePoly function call, causing stack issues. 2016-11-08 15:35:51 -05:00
Rachael Alexanderson
d36993a03b - Textured automap would crash due to an additional parameter in the software renderer to the FillSimplePoly function call, causing stack issues. 2016-11-08 15:05:23 -05:00
Rachael Alexanderson
9f9e4ea19d - Added randi's "bottomclip" parameter to dpJudas's OpenGLSWFrameBuffer::FillSimplePoly implementation. The code refused to compile because of the new changes. Note that this is not tested on Linux or Mac, and will likely need changes there as well. 2016-11-06 08:58:06 -05:00
Magnus Norddahl
df3f5ae882 Use OpenGL to allocate the canvas buffer to avoid a costly memcpy 2016-10-18 01:16:36 +02:00
Magnus Norddahl
8b297221fe Merge branch 'gl_swframebuffer' into qzdoom 2016-10-16 23:18:16 +02:00
Magnus Norddahl
f81d0d3964 macOS support and Intel driver bug fixes 2016-10-16 22:40:08 +02:00
Magnus Norddahl
3146f75ae0 Merge remote-tracking branch 'origin/gl_swframebuffer' into qzdoom 2016-10-12 08:05:39 +02:00
Magnus Norddahl
c5ebfd9e65 Add vid_max_width and vid_max_height 2016-10-12 08:05:31 +02:00
Magnus Norddahl
052f7900c2 Fix swapped x and y in DrawLetterbox 2016-10-12 08:04:42 +02:00
Magnus Norddahl
77a566a57e Merge remote-tracking branch 'origin/gl_swframebuffer' into qzdoom 2016-10-12 07:38:56 +02:00
Magnus Norddahl
698b05ee69 Fix pixel center and letter box issues 2016-10-12 07:34:07 +02:00
Magnus Norddahl
f37ee3a024 Add bgra support to OpenGLSWFrameBuffer 2016-10-11 15:43:12 +02:00
Magnus Norddahl
f5c069c759 Merge remote-tracking branch 'origin/gl_swframebuffer' into qzdoom 2016-10-11 14:54:18 +02:00
Magnus Norddahl
3c7d6234cb Add wipes 2016-10-11 14:37:57 +02:00
Magnus Norddahl
7911302ad8 Hook in gamma shader 2016-10-11 13:09:32 +02:00
Magnus Norddahl
01dc9de8d1 Misc bug fixes and performance improvements 2016-10-11 10:27:18 +02:00
Magnus Norddahl
682b040b97 OpenGL based software renderer hardware accel now works for most things 2016-10-11 00:03:46 +02:00
Magnus Norddahl
f4308b3184 Add glsl shader version of the d3d9 shaders and get enough of it working for it to boot without errors 2016-10-10 21:03:55 +02:00
Magnus Norddahl
40df46f94e Implement OpenGL versions of GPU objects 2016-10-10 07:39:02 +02:00
Magnus Norddahl
5f0088ab8b Created new OpenGL framebuffer using the software renderer's hardware acceleration 2016-10-09 12:50:57 +02:00
Magnus Norddahl
00e72028ef Add another gbuffer with normal data and make ssao pass use it 2016-10-05 07:57:27 +02:00
Magnus Norddahl
ecb57d6cd9 Merge remote-tracking branch 'gzdoom/master' into ssao
# Conflicts:
#	src/gl/renderer/gl_renderer.cpp
#	src/gl/scene/gl_scene.cpp
#	src/gl/shaders/gl_shader.cpp
#	wadsrc/static/language.enu
#	wadsrc/static/menudef.zz
2016-10-04 00:01:03 +02:00
Christoph Oelckers
b75395aa74 - fixed: Screen size update coordinates were copied into the wrong buffer location. 2016-09-28 09:25:48 +02:00
Christoph Oelckers
750c194959 - changed order of SwapBuffers and glFinish call. The new order with glFinish coming last is recommended by OpenGL and it fixes a stalling problem with portals and camera textures visible at the same time.
- check and use WGL_EXT_swap_control_tear extension. The above change makes the system always wait for a full vsync with a wglSwapInterval of 1, so it now uses the official extension that enables adaptive vsync. Hopefully this also works on the cards where the old setup did not.
2016-09-26 01:38:25 +02:00
Magnus Norddahl
979e70ca8f Add gl_ssao_portals for controlling how many portals gets SSAO 2016-09-25 00:22:38 +02:00
Magnus Norddahl
3f11c0562c Add ssao quality setting 2016-09-25 00:22:38 +02:00
Magnus Norddahl
d774136282 Added SceneData texture as the second colorbuffer when rendering a scene and placed fog data into it 2016-09-25 00:22:32 +02:00
Christoph Oelckers
ee2766d00b - made adjustments for new savegame code. 2016-09-24 01:47:44 +02:00
raa-eruanna
72491049e0 Changes to the contrast/brightness/gamma formula for both hardware and shader gamma correction. Mainly makes a correction with the shader version where contrast/brightness being negative values would clip them inappropriately. 2016-09-22 09:23:25 +02:00
Magnus Norddahl
3c1868f7e6 Fix wrong flash rectangle size after window resize 2016-09-16 02:53:19 +02:00
Christoph Oelckers
8b6e09ca09 - changed the license of the OpenGL renderer to LGPL v3.
This was done to clean up the license and to ensure that any commercial fork of the engine has to obey the far stricter requirements concerning source distribution. The old license was compatible with GPLv2 whereas combining GPLv2 and LGPLv3 force a license upgrade to GPLv3. The license of code that originates from ZDoomGL has not been changed.
2016-09-14 20:01:13 +02:00
alexey.lysiuk
dcabcaa5b6 Fixed compilation on non-Windows platforms 2016-09-13 22:10:07 +03:00
Magnus Norddahl
b378b3d05a Remove black bars from windowed mode 2016-09-12 20:43:45 +02:00
Magnus Norddahl
ccbe5160b0 Split F2DDrawer::Flush into Draw and Clear 2016-09-09 00:36:10 +02:00
Christoph Oelckers
8b01a88b76 - removed gl_lights_size and gl_lights_intensity.
Both of these were inherited from ZDoomGL and in terms of light design in maps it makes absolutely no sense to have them user configurable. They should have been removed 11 years ago.
2016-09-04 12:45:09 +02:00
Christoph Oelckers
e7856ce1e3 - removed unused forceadditive parameter from gl_GetLight.
- restricted gl_lights_additive to legacy code and removed menu entry for this.

For modern hardware this setting is completely pointless, it offers no advantage and degrades visual quality. Its only reason for existence was that drawing additive lights with textures is a lot faster, and that's all it's being used for now.
2016-09-04 12:35:26 +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
Christoph Oelckers
45ff15559d - removed gl_draw_synv because with the postprocessing this is no longer useful. 2016-08-30 00:33:02 +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
alexey.lysiuk
9b91a13487 Restored legacy way to collect OpenGL extensions 2016-08-28 10:21:20 +03:00
Magnus Norddahl
b1a0108a96 Fix tonemap palette not being rebuilt on palette change 2016-08-26 19:52:15 +02:00
Christoph Oelckers
597e10116f - added missing framebuffer function to fudging block. 2016-08-26 08:30:47 +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
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
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
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
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
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
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
f8cc56ea3a Move SetOutputViewport to OpenGLFrameBuffer::Update as it cannot be safely called from Begin2D 2016-08-14 09:05:54 +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
0fdd80eae7 - removed debug Printf. 2016-08-10 16:32:31 +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
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
Christoph Oelckers
04c59b434b - renamed WipeVertexBuffer to FSimpleVertexBuffer because this will be useful elsewhere, too. 2016-08-07 00:40:31 +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
976a78429e Simplify post process buffer handling 2016-08-04 17:16:49 +02:00
Magnus Norddahl
6b9529d70f Added lens distortion shader 2016-08-02 17:32:21 +02:00
Magnus Norddahl
a6354c74cf Fix incorrect viewport location when not using fullscreen HUD 2016-07-31 13:23:49 +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
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
aeb7df09de Added hardware gamma option and improved window handling on Windows 2016-07-27 11:15:19 +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
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
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
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
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
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
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
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
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