Commit graph

11225 commits

Author SHA1 Message Date
Bill Currie
dfa7af03c6 [util] Plug a thread-safety hole in plists 2021-02-09 09:57:07 +09:00
Bill Currie
84dc73da2c [test] Get the tests building again
They happen to all pass, which is nice :)
2021-02-05 21:43:12 +09:00
Bill Currie
f023675f8c [vulkan] Clean up draw's memory handling a little
Use cmem for pic and cachpic name allocations. If nothing else, it at
least keeps memory a little less fragmented.
2021-02-05 16:25:08 +09:00
Bill Currie
c536a363ec [vulkan] Remove namehack.h
Never really wanted in the first place (back when I did the plugin
renderers), but I didn't feel like doing the required work to avoid it
at the time. At least with Vulkan being a fresh start in an environment
that's already plugin-friendly, there was no real work involved. I'll
get to the other renderers eventually (especially now that I know gdb
does the right thing when there are multiple functions with the same
name).
2021-02-05 11:10:43 +09:00
Bill Currie
f633a846a1 [vulkan] Make the frames in flight configurable 2021-02-05 11:06:18 +09:00
Bill Currie
1275067655 [vulkan] Rename vulkan_framebuffer_t
It turns out I had conflated frame buffers with frames and wound up
making a minor mess when separating the number of frames the renderer
could have in flight from the number of swap-chain images. This is the
first step towards correcting that mistake.
2021-02-05 10:22:32 +09:00
Bill Currie
7ffe197564 [vulkan] Remove some dead code
I forgot to delete that block of code after getting the new code working.
2021-02-05 10:19:57 +09:00
Bill Currie
e929dca300 [util] Auto-cast plist string items
The casting uses a recursive call to the expression parser, so the
expressions are type-checked automatically.
2021-02-04 22:37:20 +09:00
Bill Currie
a54de63fee [vulkan] Take care of the duplicate handles 2021-02-04 20:40:28 +09:00
Bill Currie
8179c44042 [vulkan] Rework pipeline parsing for better reuse
It's not entirely there yet, but the basics are working. Work is still
needed for avoiding duplication of objects (different threads will have
different contexts and thus different tables, so necessary per-thread
duplication should not become a problem) and general access to arbitrary
fields (mostly just parsing the strings)
2021-02-04 17:03:49 +09:00
Bill Currie
d2536e584f [util] Add plist support to cexpr
This allows plist objects to be accessed directly from cexpr expressions
using struct.field syntax for dictionary objects and array[index] syntax
for array objects.
2021-02-04 16:58:13 +09:00
Bill Currie
846fcc276c [nq] Allow free-fps for demo playback
I still need to look into making physics (and network, I imagine) work
with unlimited frame rates, but this gets in what I need for now.
2021-02-03 18:24:15 +09:00
Bill Currie
5d1d85f72e [util] Resurrect Hunk_Print and fix some errors
It turned out that Hunk_HighAlloc was not creating a hunk header
(ancient bug by me), and I cleaned up a bunch of name-size issues, along
the way.
2021-02-03 13:21:08 +09:00
Bill Currie
0bfb60775e [util] Ensure hunk allocs are cache alligned
This doesn't seem to make much difference in the vulkan renderer, but it
certainly doesn't hurt.
2021-02-03 13:19:19 +09:00
Bill Currie
bc7858bb87 [model] Move parent pointer out of leaf/node struct
The node struct was 72 bytes thus two cache line. Moving the pointer
into the brush model data block allows nodes to fit in a single cache
line (not that they're aligned yet, but that's next). It doesn't seem to
have made any difference to performance (at least in the vulkan
renderer), but it hasn't hurt, either, as the only place that needed the
parent pointer was R_MarkLeaves.
2021-02-03 11:41:38 +09:00
Bill Currie
ebb73e19b2 [vulkan] Use the msaaSamples cvar
That took a bit of fiddling with the render pass to get things working
for both sampling and no sampling (ie, msaaSamples = 1).
2021-02-03 00:08:33 +09:00
Bill Currie
22fe49d0ef Add support for loading an alternative palette.
Sort of at the request of leileilol (a utility to create quakepal.py was
asked for, but this seems to be better approach). However, the feature is
not used yet (needs hooks in the import and export modules).
2021-02-02 21:47:34 +09:00
Bill Currie
d6b678ac78 [vulkan] Implement team colors
It's not quite as expected, but that may be due to one of msaa, the 0-15
range in the palette not being all the way to white, the color gradients
being not quite linear (haven't checked yet) or some combination of the
above. However, it's that what should be yellow is more green. At least
the zombies are no longer white and the ogres don't look like they're
wearing skeleton suits.
2021-02-02 19:53:36 +09:00
Bill Currie
8e63ab9f94 [vulkan] Use 4 layer arrays for alias skins
Doesn't seem to make much difference performance-wise, but speed does
seem to be fill-rate limited due to the 8x msaa. Still, it does mean
fewer bindings to worry about.
2021-02-02 00:11:47 +09:00
Bill Currie
0d4ca46923 [vulkan] Move mip map generation commands to image 2021-02-02 00:04:45 +09:00
Bill Currie
ea72d0c60e [model] Clean up the globals for alias models 2021-02-01 21:11:45 +09:00
Bill Currie
34dc7cf2df [models] Move brush data into its own struct
This is a big step towards a cleaner api. The struct reference in
model_t really should be a pointer, but bsp submodel(?) loading messed
that up, though that's just a matter of taking more care in the loading
code. It seems sensible to make that a separate step.
2021-02-01 19:31:11 +09:00
Bill Currie
6969adf02c [models] Fix black models with fullbrights in GL
I had missed the breakage when I got vulkan alias model skins working.
2021-02-01 19:20:10 +09:00
Bill Currie
f02b35a20c [model] Clean up the model array a little
Probably not really necessary, but I think I found a small opportunity
for a buffer overflow in there while I was modifying the code, so this
is probably better anyway.
2021-02-01 15:02:42 +09:00
Bill Currie
bb6c6963d2 [model] Clean up the globals around model loading
Covers only the generic load code (alias etc to follow), but this should
take care of a lot of issues in the future.
2021-02-01 14:39:00 +09:00
Bill Currie
afe8e9633e [vulkan] Silence the matrix dump
It got annoying and has served its purpose. However, the code is still
there (#if 0) in case it's needed again.
2021-02-01 12:24:27 +09:00
Bill Currie
c7eafd9254 [vulkan] Make the mip map generation public
I've decided that alias model skins should be in a single four-level
array texture rather than spread over four textures, but there's no way
I want to write that code again: getting it right was hard enough the
first time :P
2021-02-01 12:16:05 +09:00
Bill Currie
08b1d75582 [nq] Put the fps lock back in
That wasn't meant to be removed yet as there are physics problems, but
it's useful for renderer testing. It snuck in with the va patch.
2021-02-01 10:54:49 +09:00
Bill Currie
eeda04e3c9 [vulkan] Name most resources
This makes debugging with renderdoc and validation messages much easier
(no more "what buffer is that?").
2021-01-31 19:58:55 +09:00
Bill Currie
7970525ef4 [util] Make va thread-safe
It now takes a context pointer (opaque data) that holds the buffers it
uses for the temporary strings. If the context pointer is null, a static
context is used (making those uses of va NOT thread-safe). Most calls to
va use the static context, but all such calls have been formatted
consistently so they are easy to find when it comes time to do a full
audit.
2021-01-31 16:05:48 +09:00
Bill Currie
f523f6ba80 [vid] Disable X11 repeat control
For now, at least. It is a royal pain in the neck when doing a lot of
development work and I'm not sure it's worthwhile on modern CPUs.
2021-01-30 14:49:42 +09:00
Bill Currie
cad1eb42fd [qwaq] Put my qdb script in a safe place
The paths are generally wrong, and it's not overly complicated, but
having a reference helps me remember how to use the thing.
2021-01-30 14:45:47 +09:00
Bill Currie
7ee02f3965 [vulkan] Sort of implement ambient lighting
It works, but as it uses the camera position rather than the lit
entity's position, it is incorrect. I have some interim ideas to handle
it, though.
2021-01-28 19:17:40 +09:00
Bill Currie
206c631811 [vulkan] Get alias lighting mostly working
It's not so much that parts aren't working, but rather there's no
base-level lighting so everything is black until a dlight is in the
vicinity
2021-01-28 15:20:24 +09:00
Bill Currie
28652c4d59 [vulkan] Implement alias model texturing
I had messed up my index array creation, but once that was fixed the
textures worked well other than a lot of pixels are shades of grey due
to being in the top or bottom color map range.
2021-01-28 14:14:21 +09:00
Bill Currie
64904e2b27 [vulkan] Switch over to pushed descriptors
I don't really know why (I need to do some research), but this fixes the
lockups when accessing the matrices UBO. It has made a mess of my
carefully designed uniform binding layout, so I hope I can get bound
descriptor sets working the way I want, but I really need to progress on
the rest of the project.
2021-01-28 10:49:23 +09:00
Bill Currie
caa7623a35 [vulkan] Clean up alias light buffer
Still wedging, but it seems to be something to do with the matrix
buffer.
2021-01-27 17:59:09 +09:00
Bill Currie
9f64416846 [vulkan] Create the lights buffer
It's a tad bogus as it's the lights close to the camera, but it should
at least be a good start once things are working. There's currently
something very wrong with the state of things.
2021-01-27 16:16:28 +09:00
Bill Currie
4da8feca36 [models] Fix some vulkan alias upload errors
Fixes the bogus vertex/index data and does barriers for all three
buffers.
2021-01-27 16:13:37 +09:00
Bill Currie
97febc0888 [tools/misc] Update mdl.py for python 3 2021-01-27 12:51:22 +09:00
Bill Currie
a64f477796 [vulkan] Get alias texture loading working
That was a mess, partly premature optimizations, and some silly
mistakes.
2021-01-27 12:15:45 +09:00
Bill Currie
748217b438 [vulkan] Start work on alias model rendering 2021-01-26 20:58:24 +09:00
Bill Currie
12ec6c5c29 [util] Add eol to plist parse errors
I suspect it got lost when I made the error message a string item.
2021-01-26 20:45:07 +09:00
Bill Currie
826e650c27 [models] Do full alias skin loading
This includes base, glow and two color maps (pants and shorts).
2021-01-26 20:33:51 +09:00
Bill Currie
69a8b984a5 [vulkan] Sort out alias model load and unload 2021-01-26 13:59:15 +09:00
Bill Currie
56573d09e4 [vulkan] Get Vulkan_LoadTex working
Finally managed to actually use and thus sort out its issues.
2021-01-26 13:46:04 +09:00
Bill Currie
57968249fe [vulkan] Start work on the alias pipeline 2021-01-26 10:20:50 +09:00
Bill Currie
3bbe33844a [util] Add component-wise vector mult-add/sub macros 2021-01-26 00:39:34 +09:00
Bill Currie
d8b81e8678 [models] Remove MAXALIASFRAMES
The dynamic array macros made this much easier than last time I looked
at it, especially when it came to figuring out the bad memory accesses
that I seem to remember from my last attempt 9 years ago.
2021-01-25 13:33:42 +09:00
Bill Currie
7a19be7265 [image] Change tex_t data from array to pointer
This makes tex_t more generally useable and probably more portable. The
goal was to be able to use tex_t with data that is in a separate chunk
of memory.
2021-01-25 00:54:41 +09:00