Commit Graph

381 Commits

Author SHA1 Message Date
Ivan Avdeev
8870650466 split vk_map into vk_scene and vk_brush
Scene controls entity list for scenes
Brush is only responsible for drawing brush models
2021-02-01 11:05:04 -08:00
Ivan Avdeev
fc6cb27723 clear list of entites to render on clear scene
We were missing this, and as a result entities list got filled up within
a few frames, which resulted in:
- too many draw calls per frame, same entities were drawn many times
  over
- missing entities: if an entity didn't get to that list within a few
  first frames, then it wouldn't be rendered ever
2021-01-31 16:53:24 -08:00
Ivan Avdeev
e848e312d3 add VK_EXT_debug_utils labels
This extension allows adding labels to vulkan objects and insert string
labels into command buffers. This is visible in tools like RenderDoc and
helps with debugging a lot.

When running with -vkdebug:
- mark all texture VkImages and VkImageViews with corresponding names
- label brush model draw calls accordingly
2021-01-31 16:50:27 -08:00
Ivan Avdeev
12c8f00885 add lightmaps; improve performance
1. Improve performance by coalescing multiple surfaces/draw calls with
   the same textures (within a single brush model).
2. Add lightmaps. We don't support lightstyles yet, though, so they seem
   a bit wrong at times. Also gamma handling is not great.

Oh well.
2021-01-30 15:31:23 -08:00
Ivan Avdeev
eaa3d4295d draw brush surface textures
it's now *very slow* because every surface (which is just a few polys)
gets its own draw call and descriptor bind. F

we also had to make default sampler repeating, so now 2d textures in
menu have weird edge artifacts. also F

making progress i guess
2021-01-30 12:12:41 -08:00
Ivan Avdeev
0fc79bf90d Draw some of the brush models
Load all brush models in R_NewMap
Only opaque models are drawn.

This makes WAGONCHIK (and other doors) visible and animated. yay.
2021-01-27 12:00:11 -08:00
Ivan Avdeev
c8aeab2dac remove extra map geometry; draw only modelsurfaces 2021-01-25 10:39:49 -08:00
Ivan Avdeev
b9841ed6a8 fix matrices more properly 2021-01-25 09:32:33 -08:00
Ivan Avdeev
5d0146e17a draw static map geometry with debug shader
there are lots of glitches and no textures, but this is a first step!
2021-01-23 19:38:00 -08:00
Ivan Avdeev
4949f6e29e extract pipeline creation helper 2021-01-23 13:23:25 -08:00
Ivan Avdeev
0cd4cebfbb fix depth buffer recreation on resize 2021-01-23 11:11:45 -08:00
Ivan Avdeev
5a2ad5965d add depth buffer and map geometry loading
it's not being drawn yet though
2021-01-23 10:54:44 -08:00
Ivan Avdeev
014d2d272d massage stubs 2021-01-20 11:16:06 -08:00
Ivan Avdeev
4b124e240a fix texture wrapping in menu background 2021-01-18 13:38:33 -08:00
Ivan Avdeev
e49591652f add 2d pipelines with blending; menu is drawn almost ok
also switch to non-srgb framebuffer
and remove a bunch of verbose log messages
2021-01-18 13:33:22 -08:00
Ivan Avdeev
ef3a1ad4af handle surface resize 2021-01-18 11:15:51 -08:00
Ivan Avdeev
d4c463c507 move swapchain to framectl; make validation errors crash process early 2021-01-18 10:54:48 -08:00
Ivan Avdeev
4d6739da0a get it to crappily draw 2d ui menus wtf 2021-01-16 17:02:43 -08:00
Ivan Avdeev
5541bfb541 add loading textures 2021-01-16 15:45:10 -08:00
Ivan Avdeev
b9d872f279 increase draw limit; fix deinit validation 2021-01-16 13:49:07 -08:00
Ivan Avdeev
48e6765222 draw uv menu 2021-01-16 13:22:31 -08:00
Ivan Avdeev
e7a99c2558 create command pool and buffer 2021-01-13 12:10:36 -08:00
Ivan Avdeev
5600cf45ef create pipeline for 2d rendering 2021-01-13 11:54:34 -08:00
Ivan Avdeev
986d26b8b7 create render pass and framebuffers 2021-01-13 09:58:01 -08:00
Ivan Avdeev
c7203d0ecf create swapchain 2021-01-11 11:15:32 -08:00
Ivan Avdeev
0170f3e408 create vulkan device 2021-01-09 17:14:32 -08:00
Ivan Avdeev
0dcedece06 create vulkan instance; fix instance extension ref api 2021-01-09 16:05:55 -08:00
Ivan Avdeev
fa683fb882 fix vulkan handles width in 32-bit mode; print vk version 2021-01-09 14:05:34 -08:00
Ivan Avdeev
3e800fa989 start splitting into functional blocks; add vk funcs 2021-01-09 13:21:58 -08:00
Ivan Avdeev
ae6ec2e61d add texture loading stubs; messages for other stubs
now it gets to actually trying to paint a menu without crashing
2021-01-04 12:39:09 -08:00
Ivan Avdeev
5c99bb0979 ref_vk: add initial vulkan render stub
It does not work at all, but serves as an exercise to help me figure out
how to make renderers for HL/xash3d.
2021-01-02 17:52:53 -08:00