Commit graph

379 commits

Author SHA1 Message Date
Magnus Norddahl
37e3172c94 Fix random texture sampling bug 2016-09-25 00:22:31 +02:00
Magnus Norddahl
0a8cc1b74c Fix depth blur 2016-09-25 00:22:31 +02:00
Magnus Norddahl
24ab13f1ce Fix stripes in the reconstructed normals due to down scaling 2016-09-25 00:22:31 +02:00
Magnus Norddahl
11725c435e Grab tanHalfFovy from the projection matrix 2016-09-25 00:22:31 +02:00
Magnus Norddahl
e025f6e54b Mark portals in scene alpha channel for the SSAO pass 2016-09-25 00:22:31 +02:00
Magnus Norddahl
c7c0ffadb5 Move SSAO pass to be before translucent rendering
Fix depth sampling location when not using fullscreen scene
2016-09-25 00:19:16 +02:00
Magnus Norddahl
09bec67821 Resolve multisampling depth in shader 2016-09-25 00:19:16 +02:00
Magnus Norddahl
a246b58673 Change SSAO blur to be depth aware 2016-09-25 00:19:16 +02:00
Magnus Norddahl
a6fdaca633 Fix precision issue in SSAO shader 2016-09-25 00:19:16 +02:00
Magnus Norddahl
723eb746f6 Add ssao random texture 2016-09-25 00:19:15 +02:00
Magnus Norddahl
9076d46261 Added SSAO pass 2016-09-25 00:19:15 +02:00
Magnus Norddahl
8172949800 Merge branch 'lightmath' into dpdoom 2016-09-24 08:40:47 +02:00
Magnus Norddahl
4350587714 Remove accidental UpdateCameraExposure duplicate from merge 2016-09-24 08:40:28 +02:00
Magnus Norddahl
c21090333f Merge remote-tracking branch 'qzdoom/master' into dpdoom 2016-09-24 08:17:49 +02:00
Magnus Norddahl
d126e91ded Merge remote-tracking branch 'gzdoom/master' into lightmath
# Conflicts:
#	src/gl/renderer/gl_renderbuffers.cpp
#	src/gl/renderer/gl_renderbuffers.h
#	src/gl/renderer/gl_renderer.h
#	src/gl/scene/gl_scene.cpp
2016-09-24 08:12:12 +02:00
Christoph Oelckers
ee2766d00b - made adjustments for new savegame code. 2016-09-24 01:47:44 +02:00
raa-eruanna
2a9e97688d Merge http://github.com/coelckers/gzdoom 2016-09-22 05:23:02 -04:00
Christoph Oelckers
960ed5130c - fixed: DTA_ColorOverlay was not properly handled by F2DDrawer. 2016-09-22 10:20:36 +02:00
Christopher Bruns
1f79e23d5b Implement wide side-by-side mode, using adjusted aspect ratio in projection matrix.
Use optimal framebuffer size for side-by-side modes.
2016-09-22 09:25:46 +02:00
Magnus Norddahl
af699dcebc Make bloom/exposure less aggressive 2016-09-22 09:13:33 +02:00
Magnus Norddahl
f7b6b1433c Added exposure pass calculating the bloom/tonemap exposure based on what the eye is seeing 2016-09-22 09:13:32 +02:00
Magnus Norddahl
b6c64416be Added SceneData texture as the second colorbuffer when rendering a scene and placed fog data into it 2016-09-21 02:04:56 +02:00
Magnus Norddahl
24f748da03 Add gbuffer pass support to FShaderManager and FRenderState 2016-09-20 02:57:57 +02:00
Magnus Norddahl
b1871b272b Merge branch 'exposure_pass' into lightmath 2016-09-18 19:31:36 +02:00
Magnus Norddahl
210dd6d26a Make bloom/exposure less aggressive 2016-09-18 19:31:09 +02:00
Magnus Norddahl
38be2333d0 Merge branch 'exposure_pass' into lightmath
# Conflicts:
#	src/gl/renderer/gl_renderbuffers.cpp
#	src/gl/renderer/gl_renderbuffers.h
#	src/gl/renderer/gl_renderer.h
#	src/gl/scene/gl_scene.cpp
2016-09-18 16:22:44 +02:00
Magnus Norddahl
1e2935f4e0 Added exposure pass calculating the bloom/tonemap exposure based on what the eye is seeing 2016-09-18 15:57:22 +02:00
Magnus Norddahl
95fef44200 Merge remote-tracking branch 'gzdoom_upstream/master' into lightmath 2016-09-15 00:31:34 +02:00
raa-eruanna
343cde4595 Merge http://github.com/coelckers/gzdoom 2016-09-14 14:08:19 -04: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
raa-eruanna
004c7de89b Part 1 of code merge 2016-09-14 04:03:39 -04:00
Magnus Norddahl
a0b6a0275c Fix random texture sampling bug 2016-09-11 11:09:40 +02:00
Magnus Norddahl
03d0b09f29 Fix depth blur 2016-09-10 22:39:09 +02:00
Magnus Norddahl
63fb604e98 Fix stripes in the reconstructed normals due to down scaling 2016-09-09 18:19:00 +02:00
Magnus Norddahl
8861b1aaff Grab tanHalfFovy from the projection matrix 2016-09-09 09:47:46 +02:00
Magnus Norddahl
f6bede8374 Merge remote-tracking branch 'gzdoom_upstream/master' into lightmath
# Conflicts:
#	src/gl/renderer/gl_renderbuffers.cpp
#	src/gl/renderer/gl_renderbuffers.h
#	src/gl/renderer/gl_renderer.h
#	src/gl/scene/gl_scene.cpp
#	wadsrc/static/language.enu
#	wadsrc/static/menudef.z
2016-09-09 09:31:30 +02:00
Magnus Norddahl
8b7267cf87 MaskAnaglyph present mode 2016-09-09 00:36:11 +02:00
Magnus Norddahl
ccbe5160b0 Split F2DDrawer::Flush into Draw and Clear 2016-09-09 00:36:10 +02:00
Magnus Norddahl
aaa3581ee6 Hook up eye textures in renderer 2016-09-09 00:36:10 +02:00
Magnus Norddahl
4bdd872f09 Add eye textures and FBOs to FGLRenderBuffers 2016-09-09 00:36:09 +02:00
raa-eruanna
5a64307ad1 Changes the tonemap generation algorithm. 2016-09-08 00:51:48 +02:00
Magnus Norddahl
3727c5ed0f Mark portals in scene alpha channel for the SSAO pass 2016-09-04 08:15:29 +02:00
Magnus Norddahl
5f02e08c8e Fix minimize crash 2016-09-04 03:15:50 +02:00
Magnus Norddahl
dc39a006dc Fix palette tonemap precision and compile error on Intel 2016-09-04 02:37:59 +02:00
Magnus Norddahl
e7765bb240 Move SSAO pass to be before translucent rendering
Fix depth sampling location when not using fullscreen scene
2016-09-03 04:29:50 +02:00
Magnus Norddahl
902097d6da Resolve multisampling depth in shader 2016-09-03 04:12:00 +02:00
Magnus Norddahl
b1c1e6aae7 Merge remote-tracking branch 'gzdoom_upstream/master' into lightmath
# Conflicts:
#	src/gl/renderer/gl_renderbuffers.cpp
2016-09-03 01:17:16 +02:00
Christoph Oelckers
90ab0223a6 - handle colormap parameter reset when renderbuffers are toggled. 2016-09-03 00:36:23 +02:00
Magnus Norddahl
77dde2e3ad Fix not switching back to the default frame buffer when gl_renderbuffers is toggled off 2016-09-03 00:13:05 +02:00
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
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
Magnus Norddahl
55ea4a7729 Add ssao random texture 2016-08-30 01:09:21 +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
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
10550c4ef0 Merge branch 'init_global_state' of https://github.com/dpjudas/zdoom 2016-08-26 02:20:00 +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
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
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
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
Magnus Norddahl
f63635e07a Fix RFL_INVALIDATE_BUFFER check being inverted 2016-08-19 01:11:11 +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
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
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
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
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
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
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
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
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
Magnus Norddahl
346badf25f Moved state to FGLPostProcessState and merged vertex shaders 2016-08-06 11:51:08 +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
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
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
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
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
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
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
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
ec7b4b1ba4 - initial work on textured dynamic light processing. 2016-05-04 22:14:39 +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
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
alexey.lysiuk
44b019413c Implemented gamma correction in OS X native backend using shader effect 2016-05-02 10:04:09 +03: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
alexey.lysiuk
4400d0cfcc Fixed restoration of previously bound FBO 2016-04-30 16:29:22 +03:00
Christoph Oelckers
21283b18f4 - preparations for using clip planes on line portals. 2016-04-29 01:48:06 +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
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
6e1b21d513 - added back sprite splitting for low end, plus some dynamic light code. 2016-04-26 21:31:24 +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
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
Christoph Oelckers
090d13b915 - updated gl_interface to deal with older GL versions.
- added the framework for allowing multipass textured dynamic lights again.
2016-04-26 15:20:26 +02:00
Christoph Oelckers
573d80f144 - render sproites through sector portals. 2016-04-18 23:52:15 +02:00
Christoph Oelckers
2e16f3d77e - made some adjustment for the DrawTexture changes. 2016-04-09 20:49:27 +02:00
Christoph Oelckers
1f0fd85d0e - adjustments for the DrawTexture interface changes. 2016-04-09 13:05:43 +02:00
Christoph Oelckers
f6b33acbb1 - fixed plane access in GL code. 2016-04-04 12:22:47 +02:00
Christoph Oelckers
af78937a15 - updated GL renderer. 2016-04-02 23:17:16 +02:00
Christoph Oelckers
cf44d2e37a - adjustments. 2016-03-30 20:01:44 +02:00
Christoph Oelckers
59bb003285 - GL adjustments for plane changes. 2016-03-29 13:45:50 +02:00
Christoph Oelckers
59406c1273 - adjust. 2016-03-24 16:40:15 +01:00
Christoph Oelckers
eadecaf407 - adjustments to GL renderer for decal and alpha changes.
- handle portals in sprite lighting, but do not use the playsim's utility functions for efficiency.
2016-03-22 23:19:21 +01:00
Christoph Oelckers
b54b34a512 - adjustments for floating point changes. 2016-03-21 02:57:02 +01:00
Christoph Oelckers
fc57180d7e - added necessary state to implement 3D light splitting using hardware clipping planes. 2016-01-30 23:01:11 +01:00
Christoph Oelckers
d037493ffe - fixed handling of FF_FADEWALLS on 3D floors. The problems with the old method became quite obvious in the demo map after the light list bug got fixed. 2016-01-29 17:13:14 +01:00
Christoph Oelckers
926e9fdac4 - fixed: For 2D-drawing of camera textures the render style was not set. 2016-01-07 22:20:57 +01:00
Christoph Oelckers
f2c890272f - FRenderState::Apply does not need to call ApplyColorMask. 2016-01-01 10:59:34 +01:00
Christopher Bruns
ac6e2f4979 Use gl_RenderState to manipulate OpenGL color mask for anaglyph modes, to avoid glGet... 2015-12-31 11:57:21 -05:00
Christopher Bruns
bcac352265 Merge branch 'master' of https://github.com/coelckers/gzdoom into stereo3d 2015-11-09 19:40:53 -05:00
Christoph Oelckers
ad6ce5a726 - added a NULL check to gl_enhanced_nightvision's handler so that it won't crash without an uninitialized GL renderer. 2015-11-09 13:49:17 +01:00
Christopher Bruns
789dca2ab3 Refactor stereo 3d projection matrix calculations to use VSMatrix. 2015-10-31 07:46:36 -04:00
Christopher Bruns
0874455faf Initial implementation of five 3D modes -- some bugs remain. 2015-10-30 20:51:35 -04:00
Christoph Oelckers
baa775b31c - fixed: Light level must be clamped before accessing the distfogtable. 2015-04-24 16:55:31 +02:00
Christoph Oelckers
052dda0fdd - made MD3 models reloadable. 2015-04-12 19:42:03 +02:00
Christoph Oelckers
45526c2769 - basics for using hardware clip planes to split translucent stuff by 3D floor planes. 2015-04-05 18:55:21 +02:00
Christoph Oelckers
45cf65afbd - moved the aspect ratio correction factor from the projection to the view matrix where it should have been from the start.
- removed the mCameraPos variable in FGLRenderer because it was only used in one place where it is just as easy to use the global viewx/y/z variables directly.
2014-12-29 22:42:19 +01:00
Christoph Oelckers
ec627d94dd - fixed: The depth clamp setting needs to be tracked per portal so that it can be properly restored afterward.
Regular skies need it off but SkyViewpoints need it on - and all others need to use the parent's setting.
So without engine side tracking we can end up rendering the sky with this setting off, resulting in omission of the fog layer.
2014-11-27 12:26:52 +01:00
Christoph Oelckers
e5cd90f323 - use separate vertex buffers per model to avoid large memory usage peaks. Also delete the geometry data for the models once it has been copied into the vertex buffer. 2014-10-24 11:43:25 +02:00
Christoph Oelckers
5302a10a7d - diable software lighting for textured automap.
* since it is designed for software-style light diminishing it doesn't work for 2D.
* additionally it left the lighting state in an unsuitable setting for further 2D rendering.
2014-10-23 09:19:30 +02:00
Christoph Oelckers
fd3128a164 - fixed: When changing enhanced nightvision mode the shaders need to have their fixed colormap state reset to ensure that the new settings get used.
- fixed: The shader code for handling special fixed colormaps did not use the color vertex attribute which was most evident with the 'shadow' render style on the spectre.
2014-10-05 09:40:36 +02:00
Christoph Oelckers
4682736585 - fixed: non-tiled mid textures on a fog boundary require some special clamping to be performed in the shader. 2014-09-21 11:08:17 +02:00
Christoph Oelckers
acf6c259d8 - changed the handling of alpha textures. The only special case they need is with palette-less textures and this can be handled far more easily and robustly with a predefined translation instead of passing another parameter through all the layers of the texture management code. This also fixes problems with paletted PNGs that get used as an alpha texture because the old method clobbered the image's palette. 2014-09-09 13:21:36 +02:00
Christoph Oelckers
4bb320a27c - route texture binding through the renderstate class for better control. Currently it's just a direct passthrough but this will change. 2014-09-09 12:00:42 +02:00
Christoph Oelckers
904cc2e158 - some code cleanup. 2014-08-23 18:54:24 +02:00
Christoph Oelckers
1050013017 major cleanup of the texture manager:
- use sampler objects to avoid creating up to 4 different system textures for one game texture just because of different clamping settings.
- avoids flushing all textures for change of texture filter mode.
- separate sprite and regular dimensions on the material level to have better control over which one gets used. It's now an explicit parameter of ValidateTexture. The main reason for this change is better handling of wall sprites which may not be subjected to such handling.
- create mipmaps based on use case, not texture type.
- allows removal of FCloneTexture hack for proper sharing of the same sprite for decals and other purposes.
- better precaching of skyboxes.
2014-08-22 23:50:38 +02:00
Christoph Oelckers
00d7707aef - allow reallocation of light buffer if more lights are needed.
- added a light preprocessing pass to the renderer so that a non-persistent buffer can be used with minimal mapping/unmapping. This only gets used if necessary because it adds some overhead to the renderer.
2014-08-19 14:18:21 +02:00
Christoph Oelckers
a63871d170 - at least for Intel GMA we need shaders without 'discard' to render non-transparent stuff. The performance penalty is rather hefty here. 2014-08-02 21:06:34 +02:00
Christoph Oelckers
7967082e60 - use the light buffer to handle dynamic lighting. 2014-08-01 20:59:39 +02:00
Christoph Oelckers
ef8f66c9a1 - removed the code for hardware alpha testing again because it didn't work anymore with how things are set up now.
- we need to check all GL versions when trying to get a context because some drivers only give us the version we request, leaving out newer features that are not exposed via extension.
- added some status info about uniform blocks.
2014-07-30 23:13:16 +02:00
Christoph Oelckers
c1d8f235c2 - renamed some stuff that clashed with gl function names. 2014-07-27 12:33:54 +02:00
Christoph Oelckers
bdf5bbd34e - make the shader timer part of the render state. 2014-07-26 20:56:10 +02:00
Christoph Oelckers
eb9d2d9917 - reactivate compatibility profile so that immediate mode drawing can be used on older hardware not supporting persistently mapped buffers.
- reactivate alpha testing per fixed function pipeline
- use the 'modern' way to define clip planes (GL_CLIP_DISTANCE). This is far more portable than the old glClipPlane method and a lot more robust than checking this in the fragment shader.
2014-07-17 02:37:18 +02:00
Christoph Oelckers
b8bcbe819b - removed texture based dynamic lighting. For GL 3.x the shader approach is always better.
- fixed: sky fog was not unset.
2014-07-15 20:49:21 +02:00
Christoph Oelckers
5a322742c3 - remove use of builtin and deprecated color vertex attribute. 2014-07-15 00:37:13 +02:00
Christoph Oelckers
ed8a21fd86 - replaced deprecated alpha testing with shader code. 2014-07-14 21:14:43 +02:00
Christoph Oelckers
1f2f7616e1 - remove timing of matrix application method 2014-07-14 00:31:10 +02:00
Christoph Oelckers
ce3653f6e1 - remove all uses of builtin matrices. 2014-07-13 23:13:40 +02:00
Christoph Oelckers
2214c0ac06 - remove all uses of builtin matrix manipulation. Only glLoadMatrix for view and projection matrix are left. 2014-07-13 22:37:34 +02:00
Christoph Oelckers
dbb05c5f33 - remove use of builtin texture matrices.
- make matrix class single precision.
2014-07-13 20:41:20 +02:00
Christoph Oelckers
00fcf4bc06 - for some reason using world coordinates for clipping in the shader is somewhat imprecise so the clip plane heights have to be adjusted a bit for it. 2014-07-13 13:25:42 +02:00
Christoph Oelckers
d868f60f6c - since the clip planes for plane mirrors did not work anymore I reimplemented them using shader based logic. It still needs to be seen if this affects performance on older hardware. 2014-07-13 12:14:12 +02:00
Christoph Oelckers
92185f96eb - fixed overflow with storing a sprite's dynamic light color in a PalEntry. 2014-07-01 09:52:41 +02:00
Christoph Oelckers
54297acde4 - removed obsolete gl_lightbuffer code.
This never worked properly and by now far better options are available to solve the problem of dynamic light data uploads.
2014-06-30 13:30:10 +02:00
Christoph Oelckers
1efc2938b7 - implement model vertex buffer and draw MD2 models using it instead of using the GLCommands from the model. 2014-06-29 23:24:16 +02:00
Christoph Oelckers
ffcb6cb70a - added second vertex coordinate attribute for model interpolation. 2014-06-29 11:00:21 +02:00
Christoph Oelckers
2925c96b59 removed all GL 2.x code.
After thinking about it for a day or so I believe it's the best option to remove all compatibility code because it's a major obstacle for a transition to a core profile.
2014-06-21 15:50:32 +02:00
Christoph Oelckers
412d6499d9 - removed the voxel vertex buffer because it needs to be gone before implementing a model vertex buffer. 2014-06-19 14:46:55 +02:00
Christoph Oelckers
3644073bbd - use a software buffer for immediate mode rendering. This allows using the regular buffer code to collect data for both render modes and allows removal of a lot of duplicated code. 2014-06-15 01:14:41 +02:00
Christoph Oelckers
8d9a90cd22 - rewrote sky dome rendering to use a static vertex buffer if not on OpenGL 2.x. 2014-06-14 01:24:28 +02:00