Christoph Oelckers
c8852b8fea
- enabled the linear shadowmap filter.
...
Although this doesn't look as good as the PCF version it is a lot less calculation intensive and therefore more suitable for weaker hardware.
It also tends to bleed through walls a lot less.
2018-09-29 13:23:40 +02:00
Christoph Oelckers
86c7e87767
Merge branch 'master' of https://github.com/coelckers/gzdoom
2018-09-29 12:59:11 +02:00
Magnus Norddahl
3b8b312fae
- clamp the software light to never get brighter than the initial light level
2018-09-23 17:58:17 +02:00
Christoph Oelckers
bc1e659c7b
Revert "- reworked fog uniforms to move the global fog mode setting to the viewpoint buffer."
...
This reverts commit 8b26b6dd1e
.
This was causing problems with light mode 2 because some edge cases were no longer handled properly.
2018-09-16 22:38:20 +02:00
Christoph Oelckers
8b26b6dd1e
- reworked fog uniforms to move the global fog mode setting to the viewpoint buffer.
2018-09-06 19:14:30 +02:00
Christoph Oelckers
5e39890118
- use a uniform buffer for per-scene data like rotation matrices.
2018-09-02 18:40:36 +02:00
Magnus Norddahl
d121fa21bf
- add gl_dither for toggling dithered output on and off
2018-08-08 21:58:23 +02:00
Magnus Norddahl
31addbc859
- use a texture for the dither matrix
2018-08-08 00:54:12 +02:00
Rachael Alexanderson
07c9db682d
- change 'halfstep' in the dither shader to a #define
2018-08-07 17:06:05 -04:00
Rachael Alexanderson
1cfed9de45
- expand the dither matrix from 4x4 to 8x8
2018-08-06 23:00:20 -04:00
Rachael Alexanderson
0cfe79d85d
- further math tweaks
2018-08-06 21:51:23 -04:00
Rachael Alexanderson
cdd77ad5fa
- fix up a bit of math on the dither shader
2018-08-06 21:37:45 -04:00
Magnus Norddahl
7362070504
- add dithering to present shader
2018-08-07 03:03:40 +02:00
Christoph Oelckers
4a7b1aada7
Merge remote-tracking branch 'remotes/origin/modern'
...
# Conflicts:
# wadsrc/static/shaders/glsl/main.fp
2018-07-20 10:19:07 +02:00
Magnus Norddahl
8a500a25f5
- rewrite the user shader support for materials - new syntax is to create a 'Material ProcessMaterial()' function
2018-07-15 23:01:40 +02:00
Christoph Oelckers
124fe63d00
Merge branch 'master' into modern
2018-07-14 10:24:41 +02:00
alexey.lysiuk
c29651da95
- restored initial grayscale conversion in fragment shader
...
Accidental change of red color multiplier was discovered during investigation of https://forum.zdoom.org/viewtopic.php?t=61126
2018-07-02 17:31:48 +03:00
Magnus Norddahl
8eb825e25a
- fix some postprocess bugs
2018-06-30 16:44:09 +02:00
Magnus Norddahl
32d837cdf1
Merge remote-tracking branch 'gzdoom/modern' into hw_postprocess
2018-06-24 17:57:02 +02:00
Magnus Norddahl
b2fad453fa
- change tonemaps to steps
2018-06-23 19:25:49 +02:00
Christoph Oelckers
1967165633
- move view and projection matrices to DrawInfo.
2018-06-21 21:02:14 +02:00
Christoph Oelckers
4937848123
- refactoring of fixed colormap stuff to have it better organized and to reduce the number of uniforms in the main shader.
...
This removes 3 uniforms, consisting of 9 floats. Those were merged into other values that never get used at the same time.
It also moves the costly setup of the fixed colormap out of the render state into the 2D processing code.
Since 3D forces use of render buffers now, it is no longer necessary to draw the entire scene with the colormap active, meaning it can be handled more efficiently.
2018-06-16 22:40:44 +02:00
Christoph Oelckers
612fb40f3a
- don't use uniforms related to fixed colormaps for other things.
...
The fixed colormap is a per-scene global setting that normally does not need to change ever during rendering of a scene so it's easily shoved aside into a static uniform buffer.
Having to change this buffer for inconsequential stuff should be avoided, especially when there's other uniforms that are just as good to hold these values.
2018-06-14 21:28:03 +02:00
Christoph Oelckers
ce50b0e46b
- read sampler bindings from the shader instead of tagging along a large amount of support data.
...
Works for most shaders, except SSAO.
2018-06-13 17:44:49 +02:00
Christoph Oelckers
d2dea17e81
- specify vertex attributes in the shader source for Vulkan compatibility.
2018-06-13 08:40:04 +02:00
Christoph Oelckers
ad7aaa8f2a
- specify fragment output locations in the shader source.
...
OpenGL has been supporting this since version 3.3 and Vulkan requires it so it's the way to go.
2018-06-12 23:52:33 +02:00
Magnus Norddahl
832e7818c8
- rewrote the blur shader so that it works the same way as the rest
2018-06-12 22:14:44 +02:00
Magnus Norddahl
49073489e5
- uniform buffers for the fxaa, blur and bloom shaders
2018-06-11 22:06:46 +02:00
Magnus Norddahl
48f753061a
- uniform buffers for the present and shadowmap shaders
2018-06-11 21:42:09 +02:00
Magnus Norddahl
6fcc79d72a
- uniform buffers for the tonemap shaders
2018-06-11 21:18:20 +02:00
Magnus Norddahl
2bde741a7e
- Uniform buffer for colormap shader
2018-06-11 21:03:55 +02:00
Magnus Norddahl
d22fb24e28
- Uniform buffers for lens shader
2018-06-11 20:58:20 +02:00
Magnus Norddahl
763c5c9769
- change ssao pass to use an uniform block
2018-06-11 20:48:43 +02:00
Christoph Oelckers
cce6c9a085
- fixed precision issue with dot product.
...
Apparently the shader math is not precise enough to ensure that two supposedly orthogonal vectors are truly orthogonal, resulting in a non-zero dot product
2018-05-24 20:31:44 +02:00
Christoph Oelckers
1266339c0f
- fixed shader compilation.
2018-05-19 21:17:58 +02:00
Christoph Oelckers
3dc6ddbcc3
- check light direction in the shader.
...
There are situations where lights on the wrong side of a linedef may be passed and those need to be skipped in the shader code.
2018-05-19 19:20:45 +02:00
Christoph Oelckers
286846a8ec
2D must consider brightmaps.
2018-04-27 08:59:59 +02:00
Christoph Oelckers
221beec979
- added palette shader and fixed a few things.
2018-04-07 12:17:23 +02:00
Christoph Oelckers
b34d7f9e08
- added a software scene drawer to the GL renderer.
...
It still looks like shit and only works on the modern render path but at least the basics are working.
2018-04-07 10:20:59 +02:00
Christoph Oelckers
a001a5304d
- removed the old software renderer framebuffers for Windows
...
This cannot be refactored with the old code still present and done properly both renderers should share what they can.
2018-03-30 23:18:25 +02:00
Christoph Oelckers
832df6d43a
- implemented desaturation for the legacy GL renderer's 2D.
...
A lot of work that's only needed to be able to use the hardware renderer's 2D code with the software renderer.
2018-03-30 18:14:42 +02:00
Christoph Oelckers
811d96e07e
D3D 2D code refactored but not tested yet.
2018-03-29 23:21:25 +02:00
Christoph Oelckers
a40e085a46
- 2D drawer implementation complete for hardware renderer.
...
This also replaces DTA_ColormapStyle with proper implementations of its components. As implemented it was a very awkward mixture of various effects that already existed in a separate form. As a result of its implementation it required additional but completely redundant shader support which could be removed now. As a side effect of this change a new DTA_Desaturate option was added.
2018-03-29 16:21:21 +02:00
Christoph Oelckers
25999c1c6a
- looks like the 2D drawer sources did not get committed...
...
- This also adds the missing draw modes to the GLSL shader.
2018-03-28 19:07:43 +02:00
Magnus Norddahl
4ffa344f7d
- Fix black pixels when subtractive lights are in range for PBR materials
2018-03-26 00:01:52 +02:00
Christoph Oelckers
d586d774cf
- adjusted GL renderer to the new rules for alpha textures. This means that the translation fallback is only needed for the legacy renderer now. Modern GL can use the regular texture and will apply a grayscale mapping instead of merely using the red channel.
2018-03-22 20:42:17 +01:00
Magnus Norddahl
9b7bef59d2
- fixed Intel rendering glitch with uDynLightColor
2018-03-12 21:44:55 +01:00
Magnus Norddahl
07fa310f23
- move material light modes to their own subshader lumps
2018-02-20 00:13:05 +01:00
Magnus Norddahl
eb39e88682
- clean up the main.fp light handling code so that a single ApplyDynLights function applies all dynamic light
2018-02-19 02:01:33 +01:00
Magnus Norddahl
94fbcacf22
Merge branch 'gzdoom' into materials
2018-02-10 00:08:17 +01:00
Magnus Norddahl
3207d8aef7
- generate uniform declarations from c++
2018-02-09 23:29:31 +01:00
Magnus Norddahl
769867475c
- Replaced max(dot(a,b), 0.0) with clamp as some rounding errors caused pow to receive negative values when then value was subtracted from 1.0 (undefined glsl behavior)
...
- Fixed that surface angle attenuation was getting applied twice
2018-02-03 23:56:55 +01:00
Magnus Norddahl
7b9a334f77
- Change PBR materials to use quadratic light falloff
2018-02-03 13:17:09 +01:00
Magnus Norddahl
747ef8324e
- Improve sector light slightly for PBR
2018-01-29 19:09:24 +01:00
Magnus Norddahl
6deb51f23c
- disable the tonemapping to let it bloom instead
2018-01-27 00:42:17 +01:00
Magnus Norddahl
a6da1d356a
- add PBR materials to main.fp
2018-01-27 00:22:15 +01:00
alexey.lysiuk
7206bfcfbc
Made software fuzz shader compatible with supported OpenGL versions
...
Use array constructors because initializer list is a core feature since OpenGL 4.2
2018-01-26 09:53:31 +02:00
Magnus Norddahl
7a59bcde4c
- move glossiness and specular level to GLDEFS
2018-01-25 19:53:55 +01:00
Magnus Norddahl
0855418475
Merge branch 'gzdoom' into materials
...
# Conflicts:
# src/gl/shaders/gl_shader.cpp
# src/gl/shaders/gl_shader.h
2018-01-25 19:21:19 +01:00
Magnus Norddahl
4c0dce875f
Merge branch 'fuzz_software' into gzdoom
2018-01-25 19:00:14 +01:00
Magnus Norddahl
1875902414
- Do not flip the normal based on face direction
2018-01-23 23:59:58 +01:00
Magnus Norddahl
81c6808d2a
- Add specular and normal map handling to main.fp
2018-01-23 23:10:28 +01:00
Magnus Norddahl
e045fb57c9
- Declare new textures for specular and pbr modes
2018-01-23 20:51:48 +01:00
Magnus Norddahl
a23e5f49f6
- Add "fuzz software" to GL that renders fuzz like the scaled fuzz mode in the software renderer
2018-01-07 02:29:55 +01:00
Magnus Norddahl
5f36b86013
- Add dynamic spot lights
2018-01-04 17:58:11 +01:00
Magnus Norddahl
c3562fead2
Merge branch 'dynlightmodels'
2017-08-15 00:27:26 +02:00
Magnus Norddahl
a6d4bfc748
- Added linear and nearest shadowmap filters (enabled with defines)
2017-08-13 13:49:02 +02:00
Magnus Norddahl
5c7b1ee8e1
- Significantly improve shadowmap light performance for faces with a large number of lights but where only a few applies to each individual fragment
2017-08-08 23:28:42 +02:00
Magnus Norddahl
65d5f4ae18
- Fix normal normalize
2017-07-27 22:31:57 +02:00
Magnus Norddahl
2000784307
- normalize the normal vector in the vertex shader because our vertex attribute uses a low precision format (10 bits)
2017-07-25 20:20:13 +02:00
Rachael Alexanderson
8d3d271484
- tweaked the banded software lightmode shader a bit more, looks a little closer (but still not quite...) to real ZDoom in paletted mode
2017-07-21 18:45:08 -04:00
Rachael Alexanderson
e1b4bb11ba
Merge https://github.com/coelckers/gzdoom
2017-07-09 20:09:12 -04:00
Magnus Norddahl
ddd1b629c3
- Calculate globvis/r_visibility in r_utility and use it in GL and poly renderers
2017-07-09 19:01:34 +02:00
Rachael Alexanderson
b4915d624d
- removed 'cooling' component of the shader since it technically wasn't really functional (guess we have to use a separate shader to do that)
...
- changed the math to use the 'mix' formula
2017-07-02 16:59:15 -04:00
Rachael Alexanderson
0d8b7c55ef
- added a grayscale formula selector
2017-07-02 16:45:06 -04:00
Rachael Alexanderson
bd02893ce7
- expanded hard limits for saturation to -15.0/15.0
...
- added menu option for saturation
- tried to get the new saturation shader to consume less GPU power by turning it off when it is 1.0
2017-07-02 16:45:06 -04:00
Rachael Alexanderson
63da6e70c0
- added a vid_saturation control - works in postprocessing, only.
2017-07-02 16:45:06 -04:00
Rachael Alexanderson
1562d64580
- fixed: in the availability of gl_fogmode == 0, default to having square fog instead of radial fog in gl_lightmode == 8
2017-06-25 09:37:14 -04:00
Magnus Norddahl
b6e035e796
- Implemented radial fog support in software light mode
2017-06-25 15:02:34 +02:00
Rachael Alexanderson
4229389680
- fixed: banded sw light was broken in a recent commit. Added back the 32 light levels and also made it prefer darker shades.
2017-06-21 19:10:39 -04:00
Magnus Norddahl
28acf2ad06
- Fix OpenGL software diminishing light to be identical to truecolor swrenderer and softpoly
...
All there is left is to make globVis an uniform and move the LightVisibility::SetVisibility calculations out of the software renderer.
That will make it 100% correct for all r_visiblity values and aspect ratios.
2017-06-22 00:01:57 +02:00
Magnus Norddahl
7acb492852
- Add gl_shadowmap_quality cvar that controls the resolution of the 1D shadow map texture
2017-06-04 00:44:49 +02:00
Magnus Norddahl
265df4b797
- Change shadowmap resolution from 1024 to 128
2017-06-03 21:19:34 +02:00
Magnus Norddahl
85a9984807
- Add OpenGL ES 3 support to GL renderer
2017-04-06 23:34:42 -04:00
Christoph Oelckers
9eae422dab
Merge branch 'shadowmaps' of https://github.com/raa-eruanna/qzdoom into 3.0_work
...
# Conflicts:
# src/CMakeLists.txt
# wadsrc/static/language.enu
2017-03-11 19:55:43 +01:00
Magnus Norddahl
59ec97d2d5
Fix shadow map acne and the attenuate flag
2017-03-10 22:08:55 +01:00
Magnus Norddahl
b660493051
Add menu option for disabling shadow maps and detecting if storage buffers are available or not
2017-03-10 19:10:40 +01:00
Magnus Norddahl
cb40c369cd
Added PCF shadows
2017-03-08 01:35:07 +01:00
Magnus Norddahl
818b72fbf5
Reduce margin a little
2017-03-08 00:33:42 +01:00
Magnus Norddahl
6df3b3fbca
Changed the light collision structure uploaded to the GPU to be a binary tree using AABBs for the nodes instead of a BSP plane
2017-03-07 15:58:22 +01:00
Magnus Norddahl
8515f9720a
1D shadow maps are now working
2017-03-04 09:14:01 +01:00
Magnus Norddahl
0d1deddae5
Bind shadow map texture for main.fp and sample from the shadowmap texture
2017-03-02 19:10:57 +01:00
Magnus Norddahl
538d516c9a
Upload shadow map index for each light to main.fp
...
Move storage buffer binding location
2017-03-02 18:07:47 +01:00
Magnus Norddahl
d450deee76
Generate shadow map for lights
2017-03-02 16:19:07 +01:00
Magnus Norddahl
62c285f7b3
Create a shadowmap texture and upload light list
2017-03-02 16:19:06 +01:00
Magnus Norddahl
7a4b01471d
Add class updating and managing the shadow map texture
2017-03-02 16:19:06 +01:00
Magnus Norddahl
6363c6cf58
Add a shadowmap shader
2017-03-02 16:19:06 +01:00
Rachael Alexanderson
226e5238fc
Merge https://github.com/coelckers/gzdoom
2017-02-01 21:57:37 -05:00
alexey.lysiuk
1fd37ff2ff
Removed unused input from fog boundary fragment program
...
This should fix https://mantis.zdoom.org/view.php?id=151
2017-02-01 10:05:38 +02:00
Rachael Alexanderson
0c101102dc
Merge https://github.com/coelckers/gzdoom
...
# Conflicts:
# src/r_bsp.cpp
# src/r_main.cpp
# src/r_segs.cpp
# src/r_things.cpp
# wadsrc/static/language.enu
# wadsrc/static/menudef.txt
2017-01-28 17:39:55 -05:00