Commit Graph

134 Commits

Author SHA1 Message Date
Ivan 'provod' Avdeev
1ebc1d207c rt: commoditize setting material mode
Known issues:
- Breaks sprite glow for some reason.
2023-04-27 10:59:38 -07:00
Ivan 'provod' Avdeev
5b370509fe rt: group Material and ModelMetadata in Kusok
They have mismatching frequencies. ModelMetadata should be per-Model, there should be only a few dozen of these.
There maybe hundreds (or even thousands) of materials, but one material can be still referenced by many kusochki.

This only moves fields into new structs, which still belong to Kusok. The real extraction will happen later, see #52.
2023-04-27 10:59:38 -07:00
Ivan Avdeev
935c2e7f5e rt: remove a bunch of extra material flags
These are either unused, or their meaning can be recovered through other
means.
2023-04-21 23:34:27 -07:00
Ivan Avdeev
41b033efbd vk: comment various material-related things
This is in preparation for #460
2023-04-21 23:34:27 -07:00
Ivan Avdeev
e9f15edbd5 vk: fix refercing func_wall ents by indexes; only model names work 2023-04-19 20:25:00 -07:00
Ivan Avdeev
d7660cf358 vk: patch func_wall ents by their index, not model name
Note that referencing them by ent->index inside the engine is not
possible, as this index is not stable enough.
2023-04-19 20:25:00 -07:00
Ivan Avdeev
ca2a794341 vk: patch func_wall model/ents visible offsets
Fixes #335

Patching is still done using "model" key, using "_xvk_ent_id" needs
complete overhaul of how patching is done
2023-04-19 20:25:00 -07:00
Ivan Avdeev
7c6e22bb2c rt: extract basic func_wall patching support from PR #506
That PR has more stuff in it which we decided to drop.

This commit only contains:
- Detection of func_wall models, and adding their lights as static
  (fixes #415).
- Patching func_wall models offsets, #335. Does not yet patch them
  visually, but patches their light sources. Will be addressed in next
  commits. Patching is done via model name, not entity id, also will be
  fixed.
- Does not address culling (#118). This is the part dropped from the PR.
  Needs different approach. TBD
2023-04-19 20:25:00 -07:00
Ivan Avdeev
cfddb75bc5
rt: remove freeze_models functionality (#513)
It's been obsolete and broken for many months now.

Fixes #509
2023-04-15 10:51:34 -07:00
Ivan Avdeev
b4dde5bafd
rt: don't cull c/cw triangles to fix shadow leaks (#508)
de_cbble contains a bunch of floating boxes, which makes sunlight leak if internal back-facing surfaces are culled.

Generally, we should not be culling ray traced triangles (unless absolutely necessary for correctness), as it makes the shader perform additional unnecessary checks.

Try disabling culling universally and see whether it breaks anything.

Fixes #507
2023-04-15 09:44:04 -07:00
Ivan Avdeev
2dd4059704 vk: fix func_wall surface patching
Non-worldmodel models were using incorrect surface indexes when asking
for surface patches.
2023-04-14 10:08:40 -07:00
Ivan Avdeev
b894337d0e vk: fix validation errors for empty combufs 2023-04-13 11:03:36 -07:00
Ivan Avdeev
1b0c8c763e vk: slightly improve texcoord patching
Now _xvk_tex_offset and _xvk_tex_scale can be used independently to
offset or scale texture coordinates for given surface list.
2023-04-13 11:03:36 -07:00
Ivan Avdeev
b5e5d699bc vk: deduplicate map (re)loading code 2023-04-13 11:03:36 -07:00
Ivan Avdeev
b3ffd911bb vk: allow dynamic surface/material patching
Refactor NewMap and patch loading a bit.
2023-04-13 11:03:36 -07:00
Ivan Avdeev
90591cfb3d vk: add patching props for surface texture coordinates 2023-04-12 11:57:07 -07:00
Ivan Avdeev
1fd9e49f63 vk: add normal_scale to materials 2023-04-12 11:57:07 -07:00
Ivan Avdeev
9116b0268e vk: scale metalness/roughness textures by m/r values in material
fixes #342
2023-04-12 11:57:07 -07:00
Ivan Avdeev
51318fc77f vk: read alpha for material base_color, fixes #308 2023-04-12 11:57:07 -07:00
Ivan Avdeev
139807a559 vk: profiler: add device/driver info 2023-04-10 12:05:35 -07:00
Ivan Avdeev
c917c7a818 vk: profiler: move graphs a bit lower 2023-04-10 10:24:57 -07:00
Ivan Avdeev
93153dd87e vk: profiler: tame the gpu scopes ladder 2023-04-10 10:24:57 -07:00
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
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
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