Commit Graph

247 Commits

Author SHA1 Message Date
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
Christoph Oelckers ee22a9371b - use Doom64 colors on sectors and linedefs. 2017-01-28 20:44:46 +01:00
Christoph Oelckers 12d073a27d - objectcolor stuff.
# Conflicts:
#	src/gl/renderer/gl_renderstate.cpp
2017-01-28 19:06:21 +01:00
Magnus Norddahl 9c4b11b671 Add OpenGL ES support to Linux target and enable it for ARM devices 2017-01-25 07:18:26 +01:00
Rachael Alexanderson a04699ec1c Merge https://github.com/coelckers/gzdoom 2017-01-24 18:15:39 -05:00
Rachael Alexanderson 3154652885 - fixed possible AMD compilation error. 2017-01-24 22:24:53 +01:00
Rachael Alexanderson 9a777f719b - Added "gl_bandedswlight" to reduce the software light emulation gradient to 32 levels. 2017-01-24 22:24:53 +01:00
Magnus Norddahl 057060022a Merge remote-tracking branch 'gzdoom/master' into ssao 2016-11-27 09:59:57 +01:00
Rachael Alexanderson b460ce31e8 Merge http://github.com/coelckers/gzdoom 2016-10-24 21:02:09 -04:00
Christoph Oelckers bea625a42c - added an ATTENUATE flag to dynamic lights, this is set by default for attached lights. For placed lights this is off, because it'd interfere with many existing maps that depend on unattenuated lights. 2016-10-23 20:42:48 +02:00
Magnus Norddahl be2c50f11c Merge remote-tracking branch 'gzdoom/master' into ssao 2016-10-21 23:48:30 +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 2a0ab96341 Merge remote-tracking branch 'origin/ssao' into qzdoom 2016-10-13 18:12:56 +02:00
Magnus Norddahl 14c1a77f8a Fix AmbientOcclusionColor bug where pixelpos was assumed to be in eye space coordinates 2016-10-13 18:08:04 +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 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
raa-eruanna 2a7b902a0a Merge http://github.com/coelckers/gzdoom
# Conflicts:
#	src/gl/renderer/gl_renderer.cpp
2016-10-10 10:39:07 -04:00
Christopher Bruns 779e6acb7b Create "final" two non-VR 3D modes: Column-interleaved and checkerboard. 2016-10-09 13:05:50 -04:00
Magnus Norddahl 1b7c42f45f Multisampling ssao bug fixes and split linear depth to its own buffer 2016-10-09 06:17:48 +02:00
Magnus Norddahl bb79dcb634 SSAO math bug fixes 2016-10-06 07:36:49 +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 4eb5f10b02 - use normals to have proper light attenuation. So far only implemented for walls and flats. Models are planned but need some thinking about how to efficiently collect all required lights for an object. 2016-10-03 16:09:32 +02:00
alexey.lysiuk c68aa2b241 Added FXAA post-processing
Implementation of Fast Approximate Anti-Aliasing is based on nVidia sample:
https://github.com/NVIDIAGameWorks/GraphicsSamples/tree/master/samples/es3-kepler/FXAA
2016-10-03 00:15:45 +02:00
Christopher Bruns 0240cdef18 Modulate row interleaved stereo 3d offset with window height parity, because gl_FragCoord.y approaches zero at the bottom, not the top of the window. 2016-10-02 16:10:58 -04:00
Christopher Bruns fcbf9342d6 Compute row location using gl_FragCoord. 2016-10-02 16:10:39 -04:00