Ivan Avdeev
266f407b40
ref_vk: use poolhandle_t
2021-06-07 00:16:54 -07:00
Ivan Avdeev
1e82ae7103
ref_vk: try another way to disable it on android
2021-06-06 23:36:37 -07:00
Ivan Avdeev
c5bb450a5a
ref_vk: yet anothe var def
2021-06-06 23:14:35 -07:00
Ivan Avdeev
ef1f88005f
ref_vk: force disable on android for now
2021-06-06 23:13:53 -07:00
Ivan Avdeev
22eec42a60
ref_vk: --//--
2021-06-06 23:00:05 -07:00
Ivan Avdeev
ab215f35b6
ref_vk: --//--
2021-06-06 22:55:49 -07:00
Ivan Avdeev
388f684f12
ref_vk: another var declaration fix
2021-06-06 22:46:04 -07:00
Ivan Avdeev
735bfbb8db
ref_vk: fix unused var declaration
2021-06-06 21:59:23 -07:00
Ivan 'provod' Avdeev
656c00d0b8
fix building and running on linux
2021-06-06 14:17:35 -07:00
Ivan 'provod' Avdeev
b58eb5b4b2
rtx: slightly improve fake poc lighting
2021-06-05 13:06:03 -07:00
Ivan 'provod' Avdeev
00518d3251
rtx: implement dynamic lights
...
track brush models movement and update lights grid clusters with model transform and stuff
also implement animated textures for rtx
and also increase per-cluster lights limits
2021-06-05 12:48:16 -07:00
Ivan 'provod' Avdeev
43175ae003
update todo
2021-05-28 10:27:16 -07:00
Ivan 'provod' Avdeev
eaaadf024e
rtx: coalesce building blases in a single command buffer
2021-05-28 10:10:20 -07:00
Ivan 'provod' Avdeev
74e7a00604
rtx: add AS memory and models validation
...
also fix new map cache cleanup
2021-05-26 10:55:46 -07:00
Ivan 'provod' Avdeev
ad2405547b
rtx: rename model creation and move tlas creation
2021-05-26 09:35:36 -07:00
Ivan 'provod' Avdeev
44909ccbe5
rtx: improve render-ray interop
...
make a vk_ray_model_t that stores everything ray-tracing related, and can also be cached directly
2021-05-24 11:14:03 -07:00
Ivan 'provod' Avdeev
5de30a4ff0
fix compilation warnings
2021-05-24 11:12:44 -07:00
Ivan 'provod' Avdeev
35275e0916
add aftermath sdk for gpu dump generation
...
unfortunately, it's not very helpful tho
2021-05-22 14:01:43 -07:00
Ivan 'provod' Avdeev
947ad9d7fa
update todo
2021-05-17 10:57:16 -07:00
Ivan 'provod' Avdeev
6614a6935b
add debug names to various objects
2021-05-17 10:36:40 -07:00
Ivan 'provod' Avdeev
ddd7403bd0
rtx: implement draft blas caching
...
It still crashes on some maps, tho
2021-05-17 09:24:15 -07:00
Anton Baskanov
1ae5cfe548
rtx: presumably fix gray textures
...
Modulate the subsequent bounces with texture color. This makes it
consistent with the way surface lights and dlights work.
2021-05-14 15:04:51 +07:00
Ivan 'provod' Avdeev
fb05afb24c
rtx: don't recreate tlas on every frame. improve fps
2021-05-10 09:17:03 -07:00
Ivan 'provod' Avdeev
5ddeb6853d
rtx: fix corrupted geometry
...
TLAS creation pattern ended up allocating memory in a temporary region. It was later reused for BLAS data, and subsequently corrupted by TLAS rebuild.
Also fixed memory leak, added freeze-models command, added model debug code into shaders, etc.
2021-05-08 14:34:42 -07:00
Ivan 'provod' Avdeev
354eef1c0a
rtx: fix validation complaint, ask for more caps
2021-05-08 14:30:33 -07:00
Ivan 'provod' Avdeev
be42bd29a5
add ring temp allocator logic
2021-05-03 11:17:01 -07:00
Ivan 'provod' Avdeev
819540d5ec
rtx: move descset stuff into vk_descriptor
2021-05-01 11:48:24 -07:00
Ivan 'provod' Avdeev
9e8ca13dcc
rtx: add studio models
...
but they crash a lot kek
2021-04-24 12:53:42 -07:00
Ivan 'provod' Avdeev
e522acf8b3
rtx: add textures
2021-04-22 10:45:38 -07:00
Ivan 'provod' Avdeev
5b7eaa8e1c
rtx: fix light surfaces bleeding backwards
2021-04-22 10:42:19 -07:00
Ivan 'provod' Avdeev
c255041bd9
rtx: clear light clusters properly on new map
2021-04-19 11:44:15 -07:00
Ivan 'provod' Avdeev
bd8c67e4e7
rtx: fix missing emissive textures, enlarge light radius based on intensity
2021-04-19 11:17:17 -07:00
Ivan 'provod' Avdeev
2f965b00d4
rtx: read emissive texture params from rad files
...
Got rad files from https://github.com/MaestroFenix/Half-Life-Resized-Maps
These seem to work mostly fine and finally levels have recognizable appearance.
2021-04-17 12:33:46 -07:00
Ivan 'provod' Avdeev
7c02012c8d
rtx: add light to neighbour cells; increase cell limit
2021-04-17 10:35:53 -07:00
Ivan 'provod' Avdeev
b1f85a05a4
rtx: make light clusters grid-based
2021-04-16 11:43:37 -07:00
Ivan 'provod' Avdeev
28f2c06bdb
rtx: cache and destroy model blases
...
Unfortunately Xash3D doesn't allow us to destroy models properly.
It doesn't call Mod_ProcessRenderData for all brush models (only map).
And by the time we get into R_Shutdown all models are already gone, so
we can't enumerate and destroy them properly.
2021-04-13 10:46:33 -07:00
Ivan 'provod' Avdeev
01e6a267d5
rtx: fix toilet crash
...
Toilet contained brush model with presumably water surfaces which
were not loaded due to how we treat surface flags. That ended up
creating a model with no geometries, which is just rude.
We don't try to render those kind of models now.
2021-04-13 10:13:17 -07:00
Ivan 'provod' Avdeev
ad7b210228
rtx: improve surface lights
...
use bsp/pvs-based visibility data for acceleration:
+ fps 5 -> 60
- correctness: some areas have too many lights, which ends up culling visible ones too
also fix shadow artefacts
2021-04-12 11:07:41 -07:00
Ivan 'provod' Avdeev
0407f12638
rtx: read kusochki data, add dynamic lights back
...
also add fps
2021-04-10 12:46:37 -07:00
Ivan 'provod' Avdeev
573c291cef
rtx: fix tlas rebuild
2021-04-10 10:58:46 -07:00
Ivan 'provod' Avdeev
3a8f2ebc45
rtx: build blas and tlas only once
2021-04-09 14:59:04 -07:00
Ivan 'provod' Avdeev
af5e20269d
add persistent model api and use it for brushes
...
this needed for better rtx blas management
2021-04-07 12:11:20 -07:00
Ivan Avdeev
7fe55e6d90
wasuremono
2021-03-28 13:56:46 -07:00
Ivan Avdeev
39a5568614
rtx: wip bake lighting data using bsp/pvs
2021-03-28 13:52:25 -07:00
Ivan Avdeev
014925b3d4
fix linux build
2021-03-20 16:21:26 -07:00
Ivan 'provod' Avdeev
0b9ec7ee42
rtx: sample previous frame to get a naive blurry denoiser
2021-03-20 13:42:15 -07:00
Ivan 'provod' Avdeev
1b73a509e6
rtx: sample emissive surfaces as lights
...
this is done incorrectly, and also needs lots of culling and optimization
2021-03-20 12:34:34 -07:00
Ivan 'provod' Avdeev
3045c6ea1f
rtx: render into fixed 720p framebuffer then upscale
...
help with perf stability
2021-03-20 11:15:57 -07:00
Ivan 'provod' Avdeev
d6c56d4e1b
rtx: add emissive surfaces/textures
...
This is a massive hack, because we hardcoded some valve/lights.rad file
right into vk_rtx.c, and this is most certainly is not correct data. We
expect maps to have more custom rad file entries.
TODO: consult https://github.com/MaestroFenix/Half-Life-Resized-Maps
Also, emissive surfaces are no importance sampled, so it's noise fest.
2021-03-17 09:15:33 -07:00
Ivan 'provod' Avdeev
b81a36a850
rtx: make beams emissive
2021-03-15 10:49:45 -07:00
Ivan 'provod' Avdeev
aab15ff366
rtx: fix AS allocation memory corruption; dev-localize buffers
2021-03-15 10:23:26 -07:00
Ivan 'provod' Avdeev
581f1eed0d
rtx: add vk_rtx_bounces cvar to control ray bounces count
2021-03-15 09:44:15 -07:00
Ivan 'provod' Avdeev
f85a174d8b
rtx: add a bunch of ray bounces
...
while fps dips below 1, it still looks like modern art
2021-03-13 17:04:45 -08:00
Ivan 'provod' Avdeev
379f6ee409
rtx: add static light entities
...
This was an attempt to add map lighting w/o lightmaps. Unfortunately
there are just not enought of them to explain all light in maps. We're
missing something else. A lot of it.
2021-03-13 16:33:17 -08:00
Ivan 'provod' Avdeev
a04b367a32
rtx: use model matrices to open doors and move wagonchik
2021-03-13 14:31:48 -08:00
Ivan 'provod' Avdeev
7fa3f2dc8d
render: split mvp matrix to separate model,view,projection matrices
...
This will help with RTX model transformations.
2021-03-13 13:35:50 -08:00
Ivan 'provod' Avdeev
a039e7e5ae
rtx: add vk_rtx_reload command to reload rtx.comp.psv shader
...
This allows faster shader iterations. Do `bind z vk_rtx_reload`.
Still need to recompile the shader outside xash process manually.
2021-03-13 12:29:17 -08:00
Ivan 'provod' Avdeev
7b482d2b3b
rtx: glShadeModel(GL_SMOOTH)
...
Compute normal based on all triangle vertices according to their
barycentrics.
2021-03-13 10:46:25 -08:00
Ivan 'provod' Avdeev
e235c97be9
rtx: make soft shadows by random sampling dlight surface
...
it includes bad random function, bad sampling strategy, bad performance,
etc
but it works somewhat
2021-03-10 13:04:11 -08:00
Ivan 'provod' Avdeev
44b93dd30b
rtx: add hard shadows
2021-03-10 10:15:09 -08:00
Ivan 'provod' Avdeev
6d1dac453e
rtx: add dynamic lights
...
no shadows and such stuff yet
2021-03-10 09:38:06 -08:00
Ivan 'provod' Avdeev
77288a205b
rtx: read vertex normals according to isec indexes
...
Had to align vec3 fields of vk_vertex_t.
2021-03-08 12:09:11 -08:00
Ivan 'provod' Avdeev
ea9b880865
add studio models normals for dynamic lighting
2021-03-08 09:54:26 -08:00
Ivan 'provod' Avdeev
47c3c4fa75
fix dlight attenuation
2021-03-06 19:59:18 -08:00
Ivan 'provod' Avdeev
cbed97948c
add preliminary support for dlights
...
Move descriptors away from vk_core
Add UBO for dlights
Add test lighting in brush shader
Add brush normals
2021-03-06 16:40:35 -08:00
Ivan 'provod' Avdeev
78d9a87344
fix projection matrix vulkan fixup
...
we were mixing up row vs column major matrices
now RTX ray generation is fixes, and traditional rasterizer rendering
should also be projecting similar to gl render
2021-03-06 13:26:38 -08:00
Ivan 'provod' Avdeev
28cdeaeb1d
propagate proj/view matrices to rtx shader
...
And get RTX picture we deserve (i.e. glitchy and incorrect).
Will fix later.
2021-03-03 11:58:40 -08:00
Ivan Avdeev
9b8af6d28b
shaders: add compute shaders; fix shaders install dir
2021-03-01 23:34:20 -08:00
Ivan Avdeev
dc71afd08a
Merge remote-tracking branch 'upstream/vulkan' into vulkan-glslc
2021-03-01 23:22:40 -08:00
Ivan Avdeev
74bcb56abf
Merge pull request #5 from FWGS/vulkan-upstream-move-cvars
...
upstream sync: move cvars that are expected from render to engine
2021-03-01 22:59:40 -08:00
Ivan 'provod' Avdeev
e0ee4b756b
rtx: make it draw yellow screen
...
this basically checks that acceleration structurs are building without
any vulkan errors (we still don't know whether they are bulding with
correct geometry though).
we also have compute shader pipeline ready for ray tracing (yay)
but it doesn't do any raytracing yet
2021-03-01 11:22:58 -08:00
Ivan Avdeev
5e3010489b
rtx: blindly add tlas and compute rendering
...
it's unknown whether it works at all
no real ray tracing yet
2021-03-01 10:52:08 -08:00
af48821eec
ref_vk: move cvars that expected to exist by client.dll from render dll to engine
2021-03-01 20:09:37 +03:00
Ivan 'provod' Avdeev
c77f39e353
rtx: fix blas creation validation/memory errors
2021-02-27 15:40:57 -08:00
Ivan Avdeev
9954288450
rtx: add blas building skeleton
2021-02-27 13:43:49 -08:00
Ivan Avdeev
973ef4c677
separate buffer space allocation from buffer uploading
...
Now each geometry is first allocated a slot with VK_RenderBufferAlloc,
and then VK_RenderBufferLock/Unlock are used to upload buffer contents.
This allow for two things:
1. Uploading buffer data to GPU memory on/after Unlock.
2. (Re)building BLAS for RTX on/after Unlock.
These buffers are now directly referenced by render_draw_t, which also
will be helpful in the future for both renderers.
2021-02-22 18:57:46 -08:00
Ivan 'provod' Avdeev
4349d6b7fa
rtx: update vulkan version req to 1.2
2021-02-22 10:16:58 -08:00
Ivan Avdeev
46da9ad457
rtx: request RTX device extensions when -rtx argument is present
...
It doesn't do anything yet.
2021-02-22 09:46:29 -08:00
Ivan 'provod' Avdeev
ded8442993
auto-detect VULKAN_SDK path on windows
2021-02-21 23:28:33 -08:00
Ivan Avdeev
3f70b76208
engage scene rendering in VK_RenderFrame and not in EndFrame
...
Rework a bit how matrices are computed. More global state dependencies
;_;
Buffer-up draw commands, and only schedule them for drawing at EndFrame.
2021-02-20 14:54:57 -08:00
Ivan Avdeev
a5e279f580
fix sprite blending
...
Disable depth test and set dst blend factor to 1 for kRenderGlow mode.
Sprites are occluded in software.
(does this break any other code depending on Glow mode? who knows)
2021-02-20 12:46:16 -08:00
Ivan Avdeev
8dc0d4256d
add VK_RenderDebugLabelBegin/End calls; fix studio model labeling
2021-02-20 12:35:04 -08:00
Ivan Avdeev
e66810a05b
remove ubo management from "public" vk_render api
...
Now rendering submodules specify their colors and matrices using
VK_RenderState global stat api. This is a trade-off between making all
submodules track their state on their own, or managing that state
centrally.
2021-02-20 12:00:31 -08:00
Ivan Avdeev
15fdcab5fe
add plan for stream
2021-02-19 23:07:45 -08:00
Ivan Avdeev
56c68dea0b
fix beam entities piling up
2021-02-17 13:48:41 -08:00
Ivan Avdeev
3b1e7be112
add beams rendering
...
not all beam types are supported yet
also changes studio api init sequence, fixes missing cvars
vertex type struct is no longer names as brush-specific
uniform buffer allocation is now in vk_render
blending issues still remain
2021-02-17 13:26:09 -08:00
Ivan Avdeev
b22cd90184
add initial sprite rendering
...
alpha blending is broken
animations are weird, but we do draw them nonetheless somehow
2021-02-15 12:20:25 -08:00
Ivan Avdeev
538ae9191f
coalesce studio model draw calls
...
it's easier to debug, and supposedly is faster to render too
2021-02-15 10:11:12 -08:00
Ivan Avdeev
c53bfaf484
add view(weapon) models
2021-02-15 09:55:42 -08:00
Ivan Avdeev
6fbd63bd1f
fix models rendering and animation
...
RI.drawMode affects how time is interpreted for models, so make sure it
uses the correct time
implement indexing for model rendering -- this fixes weird holes
2021-02-13 23:24:21 -08:00
Ivan Avdeev
778cc60453
add broken studio models drawing
...
there are several issues with it:
- there are holes in models
- movement is jerky
- no lighting applied
2021-02-13 17:19:59 -08:00
Ivan Avdeev
e14f004785
Merge remote-tracking branch 'upstream/vulkan-anim-textures' into vulkan
2021-02-10 11:08:49 -08:00
Ivan Avdeev
5ebe36c54c
move buffer allocation to vk_render.c from vk_bruh.c
2021-02-10 10:33:44 -08:00
074e4fd540
glslc: rework tool, support dependency scan, preliminary work on making tool dependless from compiler(like ccroot)
2021-02-10 03:51:11 +03:00
c1ef953672
waf: add glslc module
2021-02-10 03:50:55 +03:00
cbdca0abf9
implement texture animation and random tiling
2021-02-10 03:45:38 +03:00
Ivan Avdeev
ad5d515200
move entity enumeration from vk_brush to vk_scene
2021-02-08 10:57:27 -08:00
Ivan Avdeev
e5b14c0393
fix glitches on intel gpus due to misaligned uniform buffer offsets
...
Use VkPhysicalDeviceLimits.minUniformBufferOffsetAlignment to align dynamic uniform buffer offsets used per brush.
2021-02-07 23:19:22 -08:00
Ivan Avdeev
2704f442e9
fix lightmap corruption
2021-02-06 13:51:23 -08:00
Ivan Avdeev
45ad261129
make unimplemented message less verbose
2021-02-06 13:38:38 -08:00
Ivan Avdeev
14db07f985
draw HUD sprites
2021-02-06 13:13:08 -08:00
Ivan Avdeev
bf8a50f4fa
recreate swapchain if it's stale on acquire
2021-02-06 11:52:10 -08:00
Ivan Avdeev
6b2c8977ae
add pipeline cache
2021-02-06 11:38:21 -08:00
Ivan Avdeev
8c1c418b35
rename map to brush
2021-02-06 11:38:08 -08:00
Ivan Avdeev
b11501e4ef
improve blending; add alpha test
...
Set blending modes according to existing GL renderer.
Cull back faces.
Implement alpha test.
Add TODO.md file
2021-02-06 11:07:00 -08:00
Ivan Avdeev
eb14e858a6
add transparency for brush models
...
Doesn't do alpha test yet though.
2021-02-03 12:24:04 -08:00
Ivan Avdeev
fc9eedbd9d
apply proper lightstyles on map load
...
Lightstyles remain fixed for the entire map duration. Need to implement either texture reupload in VK, or devise some other scheme of updating ligtmaps w/o texture reupload (lightstylevalues uniform buffers?).
2021-02-03 10:06:21 -08:00
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