Ivan Avdeev
084874c5c8
vk: profiler: add gpu scopes for staging uploads
2023-04-10 10:24:57 -07:00
Ivan Avdeev
a38f990ef5
vk: attempt to fix 32 bit build
2023-04-10 10:24:57 -07:00
Ivan 'provod' Avdeev
fdab0f7536
vk: fix windows compilation
2023-04-10 10:24:57 -07:00
Ivan Avdeev
92ce698292
vk: profiler: cover staging with combuf scopes; add build_as time
2023-04-10 10:24:57 -07:00
Ivan Avdeev
f6201e460f
vk: profiler: register gpu scopes as metrics for graph purposes
2023-04-10 10:24:57 -07:00
Ivan Avdeev
6d43e02dd3
vk: profiler: draw internal gpu side frame structure
2023-04-10 10:24:57 -07:00
Ivan Avdeev
1bf6f6ee74
vk: profiler: extract gpu timestamps in a generic manner
2023-04-10 10:24:57 -07:00
Ivan Avdeev
73a6cf596a
vk: init combuf
...
it does just work lol
2023-04-10 10:24:57 -07:00
Ivan Avdeev
4bd62ccbc0
[draft] vk: start refactoring commandbuffer/gpu profiler
...
Consolidate VkCommandBuffer management into a single entity. (somewhat
done for framectl, not done for staging)
Make sure that we pass enough metadata to be able to timestamp scopes in
cmdbuf.
It does compile, but it won't work: not all init code paths are used.
Also, there are many changes, so other failure modes are totally
possible.
2023-04-10 10:24:57 -07:00
Alibek Omarov
79624fa400
ref: gl: cleanup unused functions
2023-04-03 05:09:33 +03:00
Alibek Omarov
550ced9c36
ref: gl: cleanup unused functions in frustum
2023-04-03 05:05:32 +03:00
Alibek Omarov
fd795d5612
ref: soft: cleanup unused functions
2023-04-03 04:57:41 +03:00
Ivan Avdeev
5c7bd9d285
vk: profiler: add low/hi watermarks for frame time graph
2023-03-29 11:59:22 -07:00
Ivan Avdeev
cea37acfd2
vk: profiler: add width, and other improvements
...
- r_speeds_graphs_width now can be used to limit graphs width
- tweak layout slightly
- improve range printing based on metric semantic
2023-03-29 11:59:22 -07:00
Ivan 'provod' Avdeev
b5dfef5574
vk: profiler: scale graphs properly
...
respect dpi scale
2023-03-29 11:59:22 -07:00
Ivan Avdeev
adab64b797
vk: profiler: make graphs thin, add background
2023-03-29 11:59:22 -07:00
Ivan Avdeev
33aa4bc259
vk: profiler: add cvar for selecting metrics to plot
...
also:
- invert graphs
- add text labels
- fix vertical gaps
2023-03-29 11:59:22 -07:00
Ivan Avdeev
af96609c04
vk: profiler: automatic graph range
2023-03-29 11:59:22 -07:00
Ivan Avdeev
2b2e69da72
vk: profiler: start implementing universal metric graphs
2023-03-29 11:59:22 -07:00
Alibek Omarov
67903b55cc
ref: soft: adapt to RefAPI 4 changes
2023-03-28 21:34:43 +03:00
Alibek Omarov
55bf0e8a53
ref: gl: adapt to RefAPI 4 changes
2023-03-28 20:45:26 +03:00
Ivan Avdeev
8afd23a2d4
vk: profiler: clear metrics explicitly
2023-03-25 12:03:41 -07:00
Ivan Avdeev
1ae3ae4774
vk: profiler: register scopes and cpu/frame/gpu times as metrics
...
Make all the numbers we show as universal metrics
2023-03-25 12:03:41 -07:00
Ivan Avdeev
89f49276a5
vk: profiler: add beams count metric
2023-03-25 12:03:41 -07:00
Ivan Avdeev
68761fbbbb
vk: profiler: add sprites count metric
2023-03-25 12:03:41 -07:00
Ivan Avdeev
2976f753e1
vk: profiler: add more lights metrics
2023-03-25 12:03:41 -07:00
Ivan Avdeev
2db83a22a5
vk: profiler: add studio models count metric
2023-03-25 12:03:41 -07:00
Ivan Avdeev
f2ebcd663b
vk: profiler: explicit metric types; also more metrics
2023-03-25 12:03:41 -07:00
Ivan Avdeev
8ecfae5bf0
vk: profiler: simplify metric registration
2023-03-25 12:03:41 -07:00
Ivan Avdeev
cdc2a1258a
vk: profiler: add staging stats
2023-03-25 12:03:41 -07:00
Ivan Avdeev
3b47c7315a
vk: profiler: add dynamic model count
2023-03-25 12:03:41 -07:00
Ivan Avdeev
160a69d2cc
vk: profiler: add BLAS stats
2023-03-25 12:03:41 -07:00
Ivan Avdeev
e0e9305628
vk: profiler: add a way to add arbitrary metrics to profiler
2023-03-25 12:03:41 -07:00
Ivan Avdeev
576b4163b9
vk: profiler: rename slows to speeds (enough kekage)
2023-03-25 12:03:41 -07:00
Ivan 'provod' Avdeev
5f38f3467d
rt: originate ray on the near plane
...
fixes #63
also, compute max distance based on the far plane distance
2023-03-24 14:04:30 -07:00
Alibek Omarov
8bb5ec5e26
ref: remove renderer description export, it's unused now
2023-03-24 02:54:14 +03:00
Ivan 'provod' Avdeev
4a5fc186ea
vk: profiler: fixup incorrect __FUNCTION__ macro usage
...
No idea how it could work before
2023-03-21 11:59:57 -07:00
Ivan Avdeev
e1afb2a9de
vk: profiler: collect and display ref cpu busy and waiting times
2023-03-21 11:59:57 -07:00
Ivan Avdeev
5d23494cfc
vk: profiler: use existing R_SpeedsMessage to display profiling data
2023-03-21 11:59:57 -07:00
Ivan Avdeev
9d8ec1bc9d
vk: profiler: control profiler with r_speeds command
...
use bits to enable particular performance data display:
0 -- off
1 -- simple frame time
2 -- more object count and sizes statistics (TODO)
4 -- overall gpu usage (TODO)
8 -- extended intra-frame data, function times graph, etc
2023-03-21 11:59:57 -07:00
Ivan Avdeev
55af70c422
vk: profiler: remove noisy printf
2023-03-21 11:59:57 -07:00
Ivan Avdeev
bcb1d367b9
vk: profiler: refactor plotting functions slightly
2023-03-21 11:59:57 -07:00
Ivan Avdeev
2b8f74ff0e
vk: profiler: minor cleanup
2023-03-21 11:59:57 -07:00
Ivan 'provod' Avdeev
b4b63492f2
vk: profiler: fixup time scaling on windows
2023-03-21 11:59:57 -07:00
Ivan Avdeev
22d4202ad9
vk: profiler: draw total gpu time
...
Use VK_EXT_calibrated_timestamps to convert to host time.
2023-03-21 11:59:57 -07:00
Ivan Avdeev
a66c44a266
vk: convert query timestamps to ns
...
also, fix linux build
2023-03-21 11:59:57 -07:00
Ivan 'provod' Avdeev
93a539df74
vk: display gpu time taken for a previous frame
...
its value will be incorrect for non-nv cards which have non-1 timestampPeriod
2023-03-21 11:59:57 -07:00
Ivan 'provod' Avdeev
be95b65b22
vk: add better scope macro for profiler
...
also cover synchrnoized slow uploading for staging
2023-03-21 11:59:57 -07:00
Ivan 'provod' Avdeev
9a5e1fec4a
vk: scale profiling bars the same way the font is scale
...
make sizes consistent with the default font on hidpi displays
2023-03-21 11:59:57 -07:00
Ivan Avdeev
2872b4d237
vk: add profiling pause, add swapchain acquire scope
2023-03-21 11:59:57 -07:00
Ivan Avdeev
1c9ff300a9
vk: draw profiler scope blocks
...
also add a couple more scopes to rendering
2023-03-21 11:59:57 -07:00
Ivan Avdeev
be59d1d8e9
vk: tune profiler colors and animation a bit
2023-03-21 11:59:57 -07:00
Ivan Avdeev
39f2d78199
vk: start refactoring profiler
...
Convert direct stack manipulation to simple and cheap event writing.
Draw rudimentary frame times graph.
Related to #412
2023-03-21 11:59:57 -07:00
NightFox
190a691c6d
Add simple soft shadows by @LifeKILLED
...
This is a temporary solution.
2023-03-18 11:39:56 -07:00
NightFox
e5658f59cd
Update rads & patches ( #479 )
2023-03-18 11:38:11 -07:00
Alibek Omarov
d085c5a843
ref: gl: gl_cull: remove thirdperson check, as it handled in client instead
2023-03-15 06:29:29 +03:00
Alibek Omarov
ef0b227967
ref: gl: alias: fix strict aliasing by converting it to use float_bits_t union
2023-03-14 21:29:35 +03:00
Andrey Akhmichin
9040c34f48
ref: gl: replace va function calls.
2023-03-11 17:56:05 +03:00
Andrey Akhmichin
af5c74981b
ref: soft: replace va function calls.
2023-03-11 15:31:17 +03:00
fgsfds
70a73e47a7
psvita: use crtlib where possible
2023-03-11 07:09:19 +03:00
fgsfds
0d04c20578
ref: gl: psvita: skip deleting the shaders since glDeleteProgram can block for a long time
2023-03-11 07:09:19 +03:00
fgsfds
fad506ef03
ref: gl: vgl_shim: remove normal support, it's not necessary
2023-03-11 07:09:19 +03:00
fgsfds
9150bbdfd8
ref: gl: psvita: remove the GL_CheckExtension hack
2023-03-11 07:09:19 +03:00
fgsfds
aa4e2f0ae4
ref: gl: psvita: use Cvar_FullSet to disable r_studio_drawelements
2023-03-11 07:09:19 +03:00
fgsfds
2bacc91922
ref: gl: move vgl_shim to ref/gl
2023-03-11 07:09:19 +03:00
fgsfds
82cfd3ecc3
ref: gl: psvita: revert arrayverts change, it doesn't matter that much
2023-03-11 07:09:18 +03:00
fgsfds
5a3e3b3977
ref: gl: add immediate mode shim for psvita
2023-03-11 07:09:18 +03:00
fgsfds
9cf6e421cb
ref: gl: psvita: force-enable NPOT textures
2023-03-11 07:09:18 +03:00
fgsfds
34dd52ca90
ref: gl: trust the GL_EXTENSIONS string on psvita
2023-03-11 07:09:18 +03:00
fgsfds
7424b29e56
engine: initial psvita build support
2023-03-11 07:09:14 +03:00
Ivan Avdeev
01de5957d8
vk: respect TF_NEAREST/CLAMP/BORDER flags ( #471 )
...
Use these flags to pick the right sampler. Fixes issues with blurry and leaking fonts, lines in main menu tiles, etc.
fixes #439 , fixes #79
2023-03-08 14:16:21 -08:00
Ivan 'provod' Avdeev
6d7fd41494
rt: increase model cache size, fix #449
...
Apparently just increasing the model cache size limit is fine.
"LRU" cache eviction was not even used when testing.
2023-03-04 12:46:37 -08:00
Ivan 'provod' Avdeev
21534c044b
rt: fix uploading too many light cells, fix #451
...
c5a1 has ~230k light cells, and tries to upload 77MiB of them. Previous staging size of 64MiB wasn't enough.
2023-03-04 12:46:37 -08:00
Ivan 'provod' Avdeev
62392ac4b6
rt: increase kusochki limit to 32768, fix #85
...
boot_camp worldmodel has ~11k surfaces, which means it will need at least 22k kusochki for 1:1 static:dynamic split.
2023-03-04 12:46:37 -08:00
Ivan 'provod' Avdeev
c1483216ef
rt: increase MAX_ACCELS to 2048, fix #366
...
test_shaders_room3 has lots of sprites, and currently we create a new BLAS for each sprite.
This is not great, and a proper fix would probably mean consolidating all dynamic transparent things into BLASes per render mode or something. But for now we can just increase the limit
2023-03-04 12:46:37 -08:00
Ivan 'provod' Avdeev
78a1b24e11
rt: enable entity light, fix #115
2023-03-04 12:46:37 -08:00
Ivan 'provod' Avdeev
dc698c16dc
vk: make sure deleted textures are not referenced in staging
...
This fixes -vkvalidate and fixes #464
2023-03-04 12:46:37 -08:00
NightFox
8ed23cb40f
More correct emissive textures ( #456 )
...
Я подобрал новое компромиссное значение которое не требует clamp.
Это не идеально, но пока сойдёт. Может давать немного больше солнечных зайчиков чем с clamp.
Позже надо будет разобраться с самим kusok.emissive.
2023-03-04 09:41:05 -08:00
Ivan Avdeev
c47c314512
rt: clear geom emissive values prior to loading light data
...
fix #104
2023-03-03 16:41:16 -08:00
Ivan Avdeev
4f2eb7680b
rt: propagate emissive color patches to kusochki
...
Fixes #330
Also, fix incorrect patch application introduced by previous commit, it
would not read the patch color value, and could only switch the light
off.
2023-03-02 23:23:31 -08:00
Ivan Avdeev
a284567002
rt: refactor loading surface lights, fix #417
...
Do not entangle brush model loading with loading surface lights.
Do a separate pass over brush model surfaces for the sole purpose of
finding light sources. Enables consistent live-reloading light data
after patching entities/surface/rad files.
2023-03-02 22:32:08 -08:00
Ivan Avdeev
58c9a9920e
rt: do not allow direct access to pached surfaces
2023-03-02 20:27:18 -08:00
NightFox
ed9a06cae1
Update lighting patches
2023-03-01 22:50:02 -08:00
Ivan 'provod' Avdeev
8a457a17c2
rt: compute tangents for studio models
...
Enables applying normal maps to studio models.
Fixes #220 , fixes #241
2023-03-01 10:47:31 -08:00
Ivan 'provod' Avdeev
6b1e84308a
rt: fix checking for skybox shadow intersection
...
Doing tereminate-on-first-hit is incorrect, as we might accidentally hit the skybox geometry first, and consider this as no shadow.
Unfortunately we have to explicitly find a closest hit and check whether that was a skybox.
Maybe there's even a better way, e.g. querying for skybox-only geometry first, and only then checking for a terminate-on-first-hit for everything else. But it likely doesn't matter that much, and would need profiling anyway.
Fixes #424 and #413
2023-02-28 18:50:07 -08:00
Ivan 'provod' Avdeev
59e8a8c4c3
rt: only overshoot additive for glow mode
...
Add another flag to kusochki for glow geometry.
Move flags to a new kusok.flags field.
Fixes #231 (or at least makes it not stand out too much)
2023-02-28 17:50:50 -08:00
LifeKILLED
f4b0f5016b
vk rt: fix reprojection
2023-02-28 23:06:09 +04:00
Ivan 'provod' Avdeev
c8e4ce0619
vk: fix tracers colors
2023-02-27 11:00:34 -08:00
Ivan 'provod' Avdeev
d87690876f
vk: fix TRI_QUADS and primitive_mode tracking
2023-02-27 10:51:11 -08:00
Ivan Avdeev
421c0ea733
vk: add tracers (not tested)
2023-02-27 10:37:03 -08:00
Ivan 'provod' Avdeev
30334db159
vk: draw the rest of the beams
2023-02-27 09:49:56 -08:00
Ivan 'provod' Avdeev
2daa130453
vk: set beam/triapi texture and render mode explicitly
2023-02-27 09:20:13 -08:00
Ivan 'provod' Avdeev
cf5d3d9d47
vk: increase limits for triapi
...
c4a1 was using too many indices
2023-02-27 08:46:12 -08:00
Ivan 'provod' Avdeev
a118e12e01
vk: stub just enough triapi to render more beam types
...
it is still drawn incorrectly, but at least something is visible, and we can iterate from here
2023-02-26 20:45:29 -08:00
Ivan 'provod' Avdeev
ee4def1141
rt: modulate additive kusochki by vertex color attribute
2023-02-25 18:41:01 -08:00
Ivan 'provod' Avdeev
1fadbce860
vk: remove flag attribute in vertex
...
make color computation more uniform and not mode-specific
2023-02-25 18:38:22 -08:00
Ivan 'provod' Avdeev
e4ad18f220
vk: do not modulate beam color twice
...
color is already applied at model/ubo level
2023-02-25 16:58:59 -08:00
Ivan 'provod' Avdeev
f2182bb255
vk: fix beams per-vertex blending
2023-02-25 16:47:23 -08:00
Ivan 'provod' Avdeev
1d17e55101
rt: hack all blending as additive
...
this is not correct, but at least we get to see something
need to figure out how should blending work in rt:
- translucent materials that absorb light
- reflective+refractive
- etc
2023-02-25 13:22:56 -08:00
Ivan 'provod' Avdeev
3e2689b7f8
rt: improve sprite blending even moar
...
fixes most glaring sprite blending issues for ray tracing
2023-02-25 12:46:46 -08:00
Ivan 'provod' Avdeev
9f72a804e0
vk: improve traditional blending universally
...
it is now almost on par with the gl renderer
2023-02-25 12:09:20 -08:00
Ivan 'provod' Avdeev
ce27bdb1b1
vk: fix studio models being modulated by ent color
2023-02-24 23:57:49 -08:00
Ivan 'provod' Avdeev
cd524c20cf
vk: make transparent brushes closer to gl
...
some of render modes are not affected by light, disable lightmaps for them
2023-02-24 23:54:41 -08:00
Ivan 'provod' Avdeev
03efb6ce83
fixup linux compiler warnings
2023-02-24 23:52:09 -08:00
Ivan 'provod' Avdeev
487c94662a
rt: HACK flickering lerping sprites
...
Lerping between sprite frames means drawing two coplanar quads blended the right way. This is not something ray tracing can accommodate easily for all blending modes.
Disable lerping for now
2023-02-24 22:52:38 -08:00
Ivan 'provod' Avdeev
005b7c84eb
vk: pass model color explicitly
...
Instead of passing model color around as an implicit global state, pass it per-model.
This makes it (a) easier to track, (b) easy to fix blending issues. E.g. this fixes incorrect coloring of brush and studio models, which is also different.
2023-02-24 22:48:26 -08:00
Ivan 'provod' Avdeev
92b1e78d85
vk: make trad sprites more like gl ones
...
still not fully there:
- glow is slightly off
- TransAlpha has wrong blending mode
apparently pipeline settings for brushes, models, and sprites are substantially different, need different pipelines
2023-02-24 17:43:07 -08:00
Ivan 'provod' Avdeev
a5b977c8a3
rt: make emissive surfaces ignore external light
...
this is not fully correct, but it fixes slightly off sprite colors for now
2023-02-23 20:08:02 -08:00
Ivan 'provod' Avdeev
41809b8952
vk: do not depth-test glow sprites
...
makes them more like gl ones
still not fully fixed though, need to work on their transparency, it should be also scaled
2023-02-23 20:07:06 -08:00
Ivan 'provod' Avdeev
4f6d51c368
vk: fix most of random sprite flickering
...
it was due to leaving garbage in vertex fields.
some animated spritest still flicker though
2023-02-23 20:05:58 -08:00
Ivan Avdeev
ad5e1b2b86
vk: fixup compilation w/o aftermath sdk
2023-02-23 18:59:14 -08:00
Ivan Avdeev
8514e2c7b8
ci: update vulkan sdk and distro versions
2023-02-23 14:18:02 -08:00
Ivan 'provod' Avdeev
1a6e967ddb
vk: change how device extensions are checked
...
make nv_checkpoint not depend on rt
split it logically from aftermath
don't crash when this extension is not available
2023-02-23 13:48:41 -08:00
Ivan Avdeev
053d26e870
move ref_vk to ref/vk
2023-02-16 10:30:31 -08:00
Alibek Omarov
f4069de7f2
engine: move SlerpBones, CalcBonePosition/Quaternion from engine to libpublic
2023-02-13 05:23:13 +03:00
Alibek Omarov
12154de6f5
ref: soft: fix -Wsequence-point
2023-02-06 16:42:09 +03:00
Alibek Omarov
ced6e8869a
ref: fix chrome texture being misaligned
2023-02-01 04:55:47 +03:00
Alibek Omarov
74ce7e9b10
ref: don't apply rendercolor to studio models where it's not needed
2023-01-13 15:25:58 +03:00
Alibek Omarov
c6bfc82019
ref: soft: implement screenshots
2023-01-05 07:09:23 +03:00
Alibek Omarov
4bbd0cc404
ref: add new special rendermode that specifically used for modulate mode in engine's ScreenFade
2023-01-05 06:07:56 +03:00
Andrey Akhmichin
7555fefc18
ref: gl: simplify strings operations.
2022-12-20 16:11:21 +03:00
Alibek Omarov
fd3c5e8384
ref: gl: VBO is disabled unless somebody picks it up and fixes memory corruption and other bugs
2022-12-08 06:50:12 +03:00
Alibek Omarov
406eb828da
ref: gl: disable underwater distortion by default, enable for Quake compatible mode only
2022-12-05 11:59:29 +03:00
SNMetamorph
3bd8ad50d2
ref: gl: fixed crash when opening "Customize" menu
2022-11-21 22:52:27 +03:00
Alibek Omarov
88045ce3be
ref: gl: link liblog for Android
2022-11-17 01:08:11 +03:00
Alibek Omarov
76d0608ee1
ref: fix beams end point
2022-11-16 22:54:07 +03:00
Alibek Omarov
b1e2e84a11
wscript: adapt main and ref_gl wscripts to new directory layout, add flag to build all renderers at once
2022-09-10 22:52:52 +03:00
Alibek Omarov
12a6088912
ref: gl: move GLES wrappers libraries to 3rdparty folder
2022-09-10 22:52:52 +03:00
Alibek Omarov
fe9f3f78a0
ref: soft: minimize dependency on internal engine headers
2022-09-10 22:52:52 +03:00
Alibek Omarov
327eb330ed
ref: gl: minimize dependency on internal engine headers
2022-09-10 22:52:52 +03:00
Alibek Omarov
dedc144b8b
ref: soft: convert to include targets usage
2022-09-10 22:52:52 +03:00
Alibek Omarov
6d37398fad
ref: gl: convert to include targets usage
2022-09-10 22:52:52 +03:00
Alibek Omarov
61c142e2db
ref: move renderers into ref subdirectory
2022-09-10 22:52:52 +03:00