Commit graph

287 commits

Author SHA1 Message Date
Christoph Oelckers
cd5aa65fda - eliminate an unexpected slow path in the fragment shader.
Apparently with checking uLightLevel the shader cannot discard the slow software lighting path entirely adding a significant amount of processing time.
Changed to check the actual lightmode value, which re-enables the fast path again.
2021-08-09 19:50:45 +02:00
Marisa Kirisame
fd07183585 Fix model normals being distorted by MODELDEF scaling. 2020-12-12 00:21:33 +01:00
Christoph Oelckers
b20de184a0 - made the new Build light mode operational 2020-06-11 08:48:33 +02:00
Christoph Oelckers
5896f24eba - added a new light mode that emulates Build's depth fading.
Not active yet, this needs some testing and finetuning.
2020-06-08 23:37:20 +02:00
Christoph Oelckers
9e51a2f63c - added Build's NPOT emulation to the backend.
For GZDoom this is completely disabled, of course, because the Doom engine does not need it, but in order to have the same backend code in both engines it needs to be present.
2020-06-08 23:37:20 +02:00
Christoph Oelckers
f8dcb09ff0 - moved postprocessing shaders to their own folder. 2020-04-26 21:22:57 +02:00
Christoph Oelckers
7c46dace03 - this still doesn't work on Vulkan. :( 2020-04-19 10:57:44 +02:00
Christoph Oelckers
8381092cce - major shader rework
* handle brightmaps in the main shader instead of keeping separate instances around.
* added detail and glow layers from Raze.
* fixed material setup which could not guarantee that everything was initialized correctly.
* for warped textures, warp all layers. With this brightmaps finally work on warped textures.

Note: Vulkan reports a "device lost" error with this which still needs to be investigated.
2020-04-19 10:57:43 +02:00
Christoph Oelckers
738b9ceb08 - fixed incompletely changed shader.
It was still using a variable from the first revision that no longer exists.
2019-12-21 21:07:00 +01:00
Christoph Oelckers
bb8db9422f - scaled down the texture colorization feature for easier usability.
It makes little sense exposing every minute detail of this through UDMF.
Setting it up that way is far too complicated. Using virtual textures that map to a real texture plus a colorization record should be far easier to use by mappers.
This also doesn't piggyback on the Doom64 color feature anymore and is completely separate, despite some redundancies.
This is still missing the texture definition part, though.
2019-12-20 22:25:10 +01:00
Christoph Oelckers
3209d4ed23 - added a few more texture coloring options to the shader.
Aside from adding an additive component it can now also do:

- desaturation (not limited to the range of 0..1 so it can also be used for oversaturation by applying a negative number or negative saturation by going above 1.0.
- invert the texture
- apply a blend, including 3 special mode taken from EDuke32.

Currently only the implementation is done, it is not exposed to UDMF yet.
2019-12-20 16:05:00 +01:00
alexey.lysiuk
b6ada166fc - fixed compilation of FXAA shader by macOS OpenGL
Compile Shader 'shaders/glsl/fxaa.fp':
ERROR: 0:250: '' : syntax error: incorrect preprocessor directive
ERROR: 0:250: '' : syntax error: unexpected tokens following #if preprocessor directive - expected a newline
ERROR: 0:265: '' : syntax error: incorrect preprocessor directive
ERROR: 0:265: '' : syntax error: unexpected tokens following #if preprocessor directive - expected a newline
ERROR: 0:266: '' :   Macro Redefined lumaM
ERROR: 0:301: '' : syntax error: incorrect preprocessor directive
ERROR: 0:301: '' : syntax error: unexpected tokens following #if preprocessor directive - expected a newline
ERROR: 0:599: '' : syntax error: incorrect preprocessor directive
ERROR: 0:599: '' : syntax error: unexpected tokens following #if preprocessor directive - expected a newline

https://forum.zdoom.org/viewtopic.php?t=65003
2019-06-11 08:20:24 +03:00
alexey.lysiuk
addcad8ac0 - disabled discard in FXAA shader with Vulkan backend
Discard caused graphical corruptions on AMD hardware with Vulkan backend enabled

https://forum.zdoom.org/viewtopic.php?t=64230
2019-06-04 11:32:00 +03:00
alexey.lysiuk
da2d0e47e6 - removed array length() function from shadowmap shader
Array's length() function is not yet supported by SPIRV-cross and MoltenVK
Its usage was replaced by explicit nodes count value passed as uniform
2019-05-24 14:29:37 +03:00
Magnus Norddahl
f3cb5e09e4 - SIMPLE is never ever defined for main.fp 2019-05-13 22:38:16 +02:00
Magnus Norddahl
bab5862383 - fix some vulkan warnings 2019-05-13 21:15:10 +02:00
Magnus Norddahl
5f12191c05 - fix validation error for shader input not declared by main.vp 2019-05-12 23:15:49 +02:00
Magnus Norddahl
e75ab8ed09 - fix wrong fog color used for ssao when using multisampling 2019-05-05 23:23:47 +02:00
Magnus Norddahl
1973001834 - use the exact sRGB->linear transfer function in HDR mode as the 2.2 gamma approximation is visibly inaccurate in this case 2019-05-01 00:55:31 +02:00
Magnus Norddahl
d63513ec14 - fix normal vectors on models 2019-04-17 20:42:00 +02:00
Magnus Norddahl
15dae4cfe6 - rewrite depthblur.fp to workaround what seemed to be a bug in the NVidia driver 2019-04-16 16:17:23 +02:00
Magnus Norddahl
9d29a460de - simplify depthblur.fp into a single function 2019-04-16 08:59:29 +02:00
Magnus Norddahl
67490d13cb - add gl_ssao_debug mode showing the depth 2019-04-16 05:29:32 +02:00
Magnus Norddahl
558760c090 - fix the gl_ssao_debug cvar 2019-04-16 03:32:54 +02:00
Magnus Norddahl
db4310ca6b - prevent excessively bright pixels as this is actually visible on a HDR monitor 2019-04-11 03:34:34 +02:00
Magnus Norddahl
c28e56f9e8 - workaround buggy preprocessor in old AMD OpenGL drivers 2019-04-07 19:42:32 +02:00
Magnus Norddahl
2d8516b2ca - make shaderClipDistance optional 2019-03-25 19:44:46 +01:00
Magnus Norddahl
cce96ca87a - implement shadow maps 2019-03-15 07:54:34 +01:00
Magnus Norddahl
dca0b75038 - change the images to be upside down until presentation to increase compatibility with shaders designed for OpenGL
- clamp scissors fully to avoid NVidia's awful drivers locking up the entire system if they end up out of bounds
- perform buffer clears as part of the render pass. this puts some restrictions on how FRenderState.Clear can be used
- add an offset uniform to the present shaders so the vulkan target can flip the image during presentation
2019-03-12 23:53:20 +01:00
Magnus Norddahl
0620041228 - remove screenquadscale.vp 2019-03-12 16:24:55 +01:00
alexey.lysiuk
02ed758447 Merge branch 'master' into vulkan2
# Conflicts:
#	src/posix/cocoa/i_video.mm
2019-03-09 16:45:49 +02:00
Christoph Oelckers
99c8ba1288 - use uAddColor instead of uObjectColor2 for the ending color of a special colormap range.
Unlike uObjectColor2, this is more global state. uObjectColor2 is part of gradient calculation which may later be offloaded to a secondary buffer which already resulted in only conditionally setting it, resulting in broken special colormap application for the software renderer.
2019-03-09 12:12:33 +01:00
Magnus Norddahl
b313f91ab0 - add layout location decl to all postprocess shaders 2019-03-05 18:55:31 +01:00
Magnus Norddahl
56afcd210b - fix: gl_PointSize is required in Vulkan when drawing points
- fix: add depthstencil attachment when stencil is active while depth is not
2019-03-03 23:30:36 +01:00
Magnus Norddahl
f8aa48d053 - fix blinking caused by uninitialized clipping planes 2019-03-02 14:16:11 +01:00
Magnus Norddahl
05a6896d4f - Pass vertex color and normal via uniform buffer when the attribute isn't available 2019-03-02 01:56:08 +01:00
Magnus Norddahl
d4118a755c - load all the shaders and use the right one for each renderpass 2019-03-01 02:40:02 +01:00
Magnus Norddahl
2e0b34ca72 - hook up enough of renderstate to enable all of main.vp and main.fp 2019-02-28 00:26:49 +01:00
Magnus Norddahl
fe67a2c24f - fix enough bugs to finally get some visuals 2019-02-26 20:19:54 +01:00
Magnus Norddahl
52460d53d9 - compile main.vp and main.fp for vulkan 2019-02-22 11:30:48 +01:00
Magnus Norddahl
f10ded756e - split shadowmap AABB tree into two parts. one for static and one for dynamic
- upload only the dynamic AABB subtree using glBufferSubData
- change internal raytracing stack limit from 16 to 32
- update shadowmap AABB tree after R_SetupFrame for proper frame interpolation
2019-01-04 15:51:59 +01:00
Kevin Caccamo
9622ca7517 Add additive color before applying object colors
Based on what I saw in this video (https://youtu.be/Yx1tflavea8), the 
additive colors are applied before the object colors
2018-12-26 16:58:27 +01:00
Kevin Caccamo
33723e8904 Implement additive colour on walls and sprites
Also, don't modify the alpha channel when adding the additive colour.
2018-12-26 16:58:27 +01:00
Kevin Caccamo
758cd77e55 Rename ColorAdd to AddColor, and use it ingame
Rename ColorAdd to AddColor
Add AddColor to FRenderState
Tweak SpecialColors array in ZScript to include the additive color
Add uAddColor to the shader compiler
Add uAddColor to the texel
2018-12-26 16:58:27 +01:00
Magnus Norddahl
0c4602507e - remove shadow acne when dynlights perfectly align with planes 2018-12-23 15:13:38 +01:00
Magnus Norddahl
bc648015c7 - vWorldNormal is not normalized but R_DoomColormap requires this 2018-12-19 11:07:39 +01:00
Magnus Norddahl
f1fe9a0286 - fix vanilla light mode angle calculation 2018-12-15 10:02:57 +01:00
Magnus Norddahl
3af6ae4b37 - add vanilla lightmode that behaves exactly as Doom's original light did 2018-12-15 07:11:28 +01:00
Magnus Norddahl
96df21e3dc - fix typo 2018-11-20 13:54:18 +01:00
Magnus Norddahl
216191c86d - interpolate the normal for models 2018-11-20 13:41:27 +01:00