Commit graph

331 commits

Author SHA1 Message Date
Magnus Norddahl
aa1ff58353 - convert triangle fan to triangle list on macOS 2019-03-08 21:34:21 +01:00
Christoph Oelckers
4668d0b1de - render simple quad-based render hacks as triangle strips. 2019-03-08 17:53:24 +01:00
Christoph Oelckers
f7112786d7 - use triangle strips to render decals. 2019-03-08 17:53:23 +01:00
Magnus Norddahl
ca570f1e78 - move shadowmap uniforms out of FShadowMapShader 2019-03-08 17:45:07 +01:00
alexey.lysiuk
965acde9c0 - added initial support of Vulkan renderer to Cocoa backend 2019-03-08 16:47:02 +02:00
Magnus Norddahl
ca1d8191aa - enable the binding code for the ssao gbuffers 2019-03-08 03:17:59 +01:00
Magnus Norddahl
c0c2743e89 - add multisample support
- fix BlurScene
- create the gbuffers needed by ssao
2019-03-08 02:24:54 +01:00
Magnus Norddahl
e823d5da52 - remove compute and sparse requirements as we use neither 2019-03-07 18:23:04 +01:00
Magnus Norddahl
6db231596f - hook up postprocessing 2019-03-07 18:05:12 +01:00
Christoph Oelckers
a5c820e1e6 - update volk to the latest version.
The main feature that got added is macOS support which should be useful.
2019-03-07 13:40:27 +01:00
alexey.lysiuk
16008e4aa8 - set viewport dimensions each frame in Vulkan framebuffer
This fixes visual artifacts when resolution is changed without a level running, i.e. from menu or fullscreen console
2019-03-07 13:24:56 +02:00
Magnus Norddahl
0679b493ec - hook up the present shader 2019-03-06 22:59:21 +01:00
Magnus Norddahl
30756ec112 - wrong image transition direction 2019-03-06 19:44:48 +01:00
Magnus Norddahl
a857bec846 - implemented VkPostprocess::GetInput 2019-03-06 19:42:02 +01:00
Magnus Norddahl
9d061cbef6 - implement VkPostprocess::GetOutput 2019-03-06 18:33:31 +01:00
Magnus Norddahl
40c14bcd67 - create pipeline images
- fix some minor typos
2019-03-06 17:59:11 +01:00
alexey.lysiuk
108ea066f3 - added initial support of Vulkan to SDL backend
Removed all platform-specific code from vulkan device
2019-03-06 13:38:45 +02:00
alexey.lysiuk
08d8ea5d31 - fixed compilation with GCC and Clang
src/rendering/vulkan/renderer/vk_postprocess.cpp:219:54: error: cannot pass non-trivial object of type 'const FString' to variadic function; expected type from format string was 'char *' [-Wnon-pod-varargs]
2019-03-06 11:39:39 +02:00
Magnus Norddahl
c280153ac2 - implement VkPostprocess::RenderScreenQuad 2019-03-05 23:31:38 +01:00
Magnus Norddahl
fb983186b1 - upload the pp textures 2019-03-05 20:39:27 +01:00
Magnus Norddahl
a07e4601e7 - compile the effect shaders 2019-03-05 19:49:06 +01:00
Magnus Norddahl
b313f91ab0 - add layout location decl to all postprocess shaders 2019-03-05 18:55:31 +01:00
alexey.lysiuk
87441dd0a1 - fixed infinite loop and out-of-bound read in shader patcher 2019-03-05 13:06:39 +02:00
alexey.lysiuk
741d44d263 - fixed compilation with GCC 7+
src/rendering/vulkan/renderer/vk_postprocess.h:16:48: error: ‘function’ in namespace ‘std’ does not name a template type
2019-03-05 10:21:39 +02:00
Magnus Norddahl
d65de299e8 - add some classes for managing postprocess and render buffers 2019-03-05 04:59:17 +01:00
Magnus Norddahl
319099fee9 Merge remote-tracking branch 'origin/master' into vulkan2 2019-03-05 03:07:30 +01:00
Magnus Norddahl
e06f8f172d - use the uniform buffer alignment as returned by the vulkan device 2019-03-05 02:50:30 +01:00
Magnus Norddahl
95116e8580 - fix dynamic buffer offset not getting updated
- fix lightbuffer blocksize being hardcoded
2019-03-05 02:06:20 +01:00
Magnus Norddahl
c137e868de - patch in/out layout declarations for OpenGL 2019-03-05 01:17:23 +01:00
Magnus Norddahl
c70aff99e7 - enable RenderFirstSkyPortal 2019-03-04 15:55:43 +01:00
Magnus Norddahl
32ad6dc887 - draw the weapon 2019-03-04 15:27:54 +01:00
Magnus Norddahl
d23fbb07cd Merge branch 'vulkan2' of https://github.com/coelckers/gzdoom into vulkan2 2019-03-04 15:24:30 +01:00
Magnus Norddahl
a8a444f010 - missed two places where VK_FORMAT_D24_UNORM_S8_UINT was used 2019-03-04 15:23:49 +01:00
alexey.lysiuk
84a4c9c3a7 - reorderer member initialization in Vulkan objects
This is needed to prevent compilation warnings spam with GCC and Clang
While the warning itself is useful, in this case it's rather pointless and annoying
2019-03-04 16:18:37 +02:00
Magnus Norddahl
2532e4bba6 - fall back to VK_FORMAT_D32_SFLOAT_S8_UINT if VK_FORMAT_D24_UNORM_S8_UINT is not supported 2019-03-04 14:47:49 +01:00
Magnus Norddahl
0a6d77a861 - fall back to linear if tiling is not supported by the device 2019-03-04 13:51:58 +01:00
Magnus Norddahl
9861642fcc - add missing vulkan used features 2019-03-04 13:28:29 +01:00
Christopher Bruns
0fb940632a Reduce number of blits required in stereo 3D by tracking current eye. 2019-03-04 13:14:41 +01:00
alexey.lysiuk
802d37f377 - fixed compilation of Linux target
Base and OpenGL framebuffer classes still require proper splitting
2019-03-04 12:47:00 +02:00
alexey.lysiuk
7efa231e4e - fixed compilation of macOS target
Base and OpenGL framebuffer classes still require proper splitting
2019-03-04 12:46:37 +02:00
alexey.lysiuk
6144f02f67 - initialized all members of VkWin32SurfaceCreateInfoKHR
Without such initialization vkCreateWin32SurfaceKHR() crashed inside AMD Vulkan driver
2019-03-04 11:36:38 +02:00
alexey.lysiuk
30c6ae5078 - fixed compilation of 32-bit Windows targets and MSVC 2015 2019-03-04 11:35:12 +02:00
Magnus Norddahl
0e43979c28 - fix colormask alpha typo 2019-03-04 01:54:57 +01:00
Magnus Norddahl
f04522c397 - fix depthstencil attachment not being attached when only stencil tests were enabled 2019-03-04 01:49:27 +01:00
Magnus Norddahl
99c3d72aa0 - fix typos 2019-03-04 01:23:13 +01:00
Magnus Norddahl
ddf21ffd72 - create a descriptor for each texture+sampler configuration in use 2019-03-04 00:28:37 +01:00
Magnus Norddahl
eaf367e876 - add depth bias 2019-03-04 00:14:28 +01:00
Magnus Norddahl
cf49e1ec21 - add depth clamp support 2019-03-03 23:54:13 +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
923fb5c127 - implement the depth and stencil states 2019-03-03 22:25:38 +01:00
Christopher Bruns
52ab4b968f Remove Quad-buffered from list of VR-modes if we know it won't work. 2019-03-03 16:15:38 +01:00
Magnus Norddahl
d516b2ff7b - fix typo and add color 2019-03-03 14:40:56 +01:00
Magnus Norddahl
9d792f79f1 - add vulkan info to startup log 2019-03-03 14:32:03 +01:00
Magnus Norddahl
7d56aa4b0b Merge remote-tracking branch 'origin/master' into vulkan2 2019-03-03 13:45:22 +01:00
Christoph Oelckers
213dfd2aaa - fixed: when resizing the viewpoint buffer, the 2D entry must be reset so that for the next frame it gets recalculated. 2019-03-03 13:26:10 +01:00
Rachael Alexanderson
13d07e7912 - fix what appears to have been an accidental debug commit, this broke portals and skies 2019-03-03 03:24:55 -05:00
Christoph Oelckers
f3813c036f - filter out the BIGFONT lump in Chex Quest, now that we have a more complete font internally. 2019-03-03 07:50:10 +01:00
Magnus Norddahl
fd752dec54 - don't search for a renderpass if the current one matches 2019-03-03 00:16:00 +01:00
Magnus Norddahl
cab441591f - add some of the same checks that glrenderstate uses 2019-03-03 00:06:17 +01:00
Magnus Norddahl
c657d8fd1e - only bind vertex and index buffers if they change 2019-03-02 23:56:06 +01:00
Magnus Norddahl
c30edaa21a - only update matrices if they change 2019-03-02 23:47:56 +01:00
Magnus Norddahl
2a6d37dd73 - clean up Apply function 2019-03-02 23:39:44 +01:00
Magnus Norddahl
0c9d27d078 - create an array for the stream data 2019-03-02 23:20:29 +01:00
Magnus Norddahl
656a3b8fba - allocate more descriptors in the pool 2019-03-02 22:41:36 +01:00
Magnus Norddahl
b0b4028e0b - align by 256 instead of 128 2019-03-02 17:51:57 +01:00
Magnus Norddahl
327b9a91f1 - fix one more validation error 2019-03-02 17:27:19 +01:00
Magnus Norddahl
47ce44e5f0 - add missing image usage flag 2019-03-02 17:20:14 +01:00
Magnus Norddahl
1bdaf24fa8 - add features reported by validation layer 2019-03-02 17:17:33 +01:00
Magnus Norddahl
09ea775b40 - make the vulkan logging a bit more readable 2019-03-02 17:11:23 +01:00
Magnus Norddahl
28f83fc9db - found the stupid bug that caused validation layer not to work.. 2019-03-02 16:52:33 +01:00
Magnus Norddahl
8854fad165 - fix some additional image transition errors reported by RenderDoc during the first frame 2019-03-02 16:36:29 +01:00
Magnus Norddahl
718f9e36fa Merge branch 'vulkan2' of https://github.com/coelckers/gzdoom into vulkan2 2019-03-02 16:02:43 +01:00
Magnus Norddahl
b1f161040d - transition image layouts and setup pipeline barriers (fixes some errors reported by RenderDoc) 2019-03-02 16:02:27 +01:00
Christoph Oelckers
dc9a995695 - output the error code when submitting a command buffer fails. 2019-03-02 15:57:43 +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
1430d9012e - fix shutdown crash and some minor adjustments 2019-03-02 00:46:25 +01:00
Magnus Norddahl
d86a56086c Merge remote-tracking branch 'origin/master' into vulkan2 2019-03-01 21:50:06 +01:00
Magnus Norddahl
7871ec06ae - add depth/stencil attachment to the render pass 2019-03-01 21:34:08 +01:00
Magnus Norddahl
d73b0b3146 - create helper function for copying 2019-03-01 20:15:56 +01:00
Magnus Norddahl
ee8349d168 - add support for specifying the topology 2019-03-01 20:06:20 +01:00
Magnus Norddahl
01c78d7238 - add a bit of bounds checking just to be safe 2019-03-01 19:15:52 +01:00
Magnus Norddahl
195e91adc9 - hook up the hardware renderer 2019-03-01 19:01:06 +01:00
Magnus Norddahl
308c884d02 - use a linked list to keep track of all allocated VkHardwareTexture objects 2019-03-01 18:31:33 +01:00
Magnus Norddahl
c691a8fe64 - bind the vertex inputs as specified by its vertex buffer format 2019-03-01 15:37:13 +01:00
Magnus Norddahl
b0fd5db616 - remove misplaced todo 2019-03-01 02:42:24 +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
f1f8797d3c - bind the layer textures 2019-03-01 01:30:10 +01:00
Magnus Norddahl
7f3e473f56 - create a render pass for each blend setup 2019-03-01 00:42:51 +01:00
Magnus Norddahl
e472050f36 - use dynamic state for viewport and scissor 2019-02-28 15:45:59 +01:00
Magnus Norddahl
45061e8b44 - no need to debug with a red clear anymore 2019-02-28 01:22:38 +01:00
Magnus Norddahl
9a5112c1c9 - tell the memory allocator when we are going to persistently map something 2019-02-28 01:18:29 +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
c2e0eba270 - hook up vid_vsync and vk_debug 2019-02-27 22:20:18 +01:00
Magnus Norddahl
b4154f1772 - fix palette color problem 2019-02-27 16:28:29 +01:00
Magnus Norddahl
96547713d9 - hook up the software renderer 2019-02-27 15:37:37 +01:00
Christopher Bruns
8becc0e78d Enable menu blur in stereo 3d.
Use more blitting to avoid confusing framebuffer state management in stereo 3D.
2019-02-27 09:51:02 +01:00
Magnus Norddahl
a3c21e0b01 - upload some real texture contents 2019-02-26 22:45:18 +01:00
Magnus Norddahl
fe67a2c24f - fix enough bugs to finally get some visuals 2019-02-26 20:19:54 +01:00
Magnus Norddahl
e1d1358249 - add missing field 2019-02-26 20:18:30 +01:00
Magnus Norddahl
19f4133768 - move most push constants to dynamic uniform buffers 2019-02-26 16:50:54 +01:00
Magnus Norddahl
d958c4fec5 - upload and bind some textures 2019-02-26 15:29:08 +01:00
Magnus Norddahl
347339b254 - add a very basic present shader using a blit
- avoid dealing with image layout transitions for the blit by using VK_IMAGE_LAYOUT_GENERAL for now
2019-02-26 12:25:17 +01:00
Magnus Norddahl
854526dee4 - submit the upload commands 2019-02-26 11:58:03 +01:00
Magnus Norddahl
e875198b37 - create raii objects for semaphore and fence 2019-02-26 11:44:29 +01:00
Magnus Norddahl
27e78e7d8d - remove unused code 2019-02-26 11:31:09 +01:00
Magnus Norddahl
9ed1c7f40b - add render pass manager and setup a pipeline for VkRenderState 2019-02-26 11:27:29 +01:00
Magnus Norddahl
fbfcc30d00 Merge branch 'vulkan2' of https://github.com/coelckers/gzdoom into vulkan2 2019-02-26 11:21:42 +01:00
Magnus Norddahl
69229d7719 - add missing forward declarations 2019-02-26 11:20:24 +01:00
Christoph Oelckers
e8f690116b - removed unused gl_spritebrightfog CVAR. 2019-02-26 00:07:30 +01:00
Christopher Bruns
051145b2c8 Use flag to avoid second eye stereo color problem 2019-02-25 00:14:41 +01:00
Christopher Bruns
e83092a7eb Fix stereo-3D 2D quad color problem. 2019-02-25 00:14:41 +01:00
Christoph Oelckers
413412f603 Merge branch 'master' into vulkan2 2019-02-23 19:53:38 +01:00
Rachael Alexanderson
7098748e9e - fix building on case sensitive systems 2019-02-23 13:51:24 -05:00
Christoph Oelckers
c3890342e6 - moved the 2D drawing code to its own directory under 'rendering'. 2019-02-23 18:08:57 +01:00
Christoph Oelckers
ef3e5ef01e - moved a few parts from g_level.cpp to better fitting places. 2019-02-23 15:21:54 +01:00
Magnus Norddahl
52460d53d9 - compile main.vp and main.fp for vulkan 2019-02-22 11:30:48 +01:00
Magnus Norddahl
a97d736bd9 - add vulkan renderstate and shadermanager classes 2019-02-21 22:49:00 +01:00
Magnus Norddahl
c606346ae3 - remove dead code 2019-02-21 21:23:44 +01:00
Magnus Norddahl
478ef05a0a - create vulkan buffer objects implementation 2019-02-21 12:31:14 +01:00
Magnus Norddahl
fc79cd1280 - present an empty back buffer while keeping vsync 2019-02-21 10:19:59 +01:00
Magnus Norddahl
75403ec744 - hook up the glsl compiler 2019-02-21 00:25:51 +01:00
Magnus Norddahl
c6b29846d0 - add 3rd party vulkan dependencies
- add stubs for a vulkan hw renderer backend
- add RAII wrappers for vulkan object types
- add builder classes to isolate vulkan boilerplate code
- add a swap chain class
2019-02-20 21:21:57 +01:00
Christoph Oelckers
868ac5adf8 - switched the Windows backend to use the Windows Unicode API.
With localization for non-Latin languages on the support list the multibyte API doesn't cut it anymore. It neither can handle system text output outside the local code page nor can an ANSI window receive text input outside its own code page.
Similar problems exist for file names. With the multibyte API it is impossible to handle any file containing characters outside the active local code page.

So as of now, everything that may pass along some Unicode text will use the Unicode API with some text conversion functions. The only places where calls to the multibyte API were left are those where known string literals are passed or where the information is not used for anything but comparing it to other return values from the same API.
2019-02-14 22:23:33 +01:00
Christoph Oelckers
0b2494f9ca - fixed: The global viewpoint's Level member was accessed before it was set.
All affected code needs to get a Level parameter passed in through its arguments.
2019-02-08 13:12:46 +01:00
Christoph Oelckers
979f1df281 Merge remote-tracking branch 'remotes/origin/master' into new_level_refactor
# Conflicts:
#	src/g_level.cpp
#	src/p_user.cpp
2019-02-05 13:49:07 +01:00
Christoph Oelckers
e41c898817 Merge branch 'master' into new_level_refactor 2019-02-04 13:11:01 +01:00
Christoph Oelckers
53162a8a5c Merge branch 'master' into new_level_refactor
# Conflicts:
#	src/am_map.cpp
2019-02-03 09:20:13 +01:00
Christoph Oelckers
45dc9a7b47 - renamed the level variables.
currentUILevel is now primaryLevel.
For ZScript, currentVMLevel was added. This is also exported as 'level' and will change as needed.
This also means that no breaking deprecations will be needed in the future, because in order to sandbox a level only 4 variables need to be handled: level, players, playeringame and consoleplayer.
The remaining global variables are not relevant for the level state.

The static 'level' has been mostly removed from the code except some places that still need work.
2019-02-02 00:25:51 +01:00
Christoph Oelckers
202f3d7d80 - changed most places where a player index is calculated by subtracting the player array's base access. 2019-02-01 17:31:11 +01:00
Christoph Oelckers
e3eaa5964d - removed v_video.h include from portals.h
This has no business in a play related file which also made no use of it.
2019-02-01 00:30:21 +01:00
Christoph Oelckers
89d607c9a6 - moved all rendering code into a common subdirectory.
No changes to the files themselves was made.
2019-01-31 19:58:17 +01:00