Bill Currie
ae78c81b3a
[render] Fail gracefully on unsupported render targets
...
Ideally, this won't be the case, but it currently is for Vulkan and SDL.
2021-03-30 18:29:18 +09:00
Bill Currie
5f93c115ff
[util] Make developer flag names easier to manage
...
They're now an enum, and the flag part of the name is all lowercase, but
now the flag definitions and names list will never get out of sync.
2021-03-29 22:38:47 +09:00
Bill Currie
a32e2319e2
Merge branch 'master' into win-merge
2021-03-25 22:42:16 +09:00
Bill Currie
c9f1d770e0
Merge master into csqc-improvements
...
That was a mess
2021-03-25 22:01:31 +09:00
Bill Currie
999dd8248b
[vulkan] Implement sky box loading and rendering
...
Loading is broken for multi-file image sets due to the way images are
loaded (this needs some thought for making it effecient), but the
Blender environment map loading works.
2021-03-25 15:54:34 +09:00
Bill Currie
c5c44da727
[vulkan] Implement screenshot
...
Finally, I can brag about my progress on irc :)
2021-03-24 19:20:53 +09:00
Bill Currie
a0d47de439
[vulkan] Suppress all the debug output
...
silence is golden
2021-03-23 13:04:22 +09:00
Bill Currie
8f7d6b1d02
[vulkan] Initialize skins
...
This allows the qw client to run with Vulkan.
2021-03-20 00:08:21 +09:00
Bill Currie
0366b72d4a
[vulkan] remove the fps printing
...
Now that pixels are rendered, there's no need to print the fps
separately as the in-game display works quite nicely.
2021-03-03 18:16:27 +09:00
Bill Currie
10a1b99a92
[vulkan] Implement lighting and compose passes
...
Lighting doesn't actually do lights yet, but it's producing pixels.
Translucent seems to be working (2d draw uses it), and compose seems to
be working.
2021-02-24 19:58:31 +09:00
Bill Currie
9229b67633
[vulkan] Clean up the new render pass and framebuffers
2021-02-24 16:27:56 +09:00
Bill Currie
82eabb5ca2
[vulkan] Parse clear values
...
And get the render pass working in general. Note that this is only the
render pass and frame buffers: actual commands still have problems.
2021-02-23 14:37:48 +09:00
Bill Currie
a94949c009
[vulkan] Start moving towards a deferred renderer
...
After getting lights even vaguely working for alias models, I realized
that it just wasn't going to be feasible to do nice lighting with
forward rendering. This gets the bulk of the work done for deferred
rendering, but still need to sort out the shaders before any real
testing can be done.
2021-02-14 11:35:06 +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
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
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
ea72d0c60e
[model] Clean up the globals for alias models
2021-02-01 21:11:45 +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
748217b438
[vulkan] Start work on alias model rendering
2021-01-26 20:58:24 +09:00
Bill Currie
57968249fe
[vulkan] Start work on the alias pipeline
2021-01-26 10:20:50 +09:00
Bill Currie
93e9f89bd3
[vulkan] Create some default textures
...
Black, white and magenta. This gets glow (full bright) maps working.
2021-01-23 15:40:31 +09:00
Bill Currie
9e03096da6
[vulkan] Build brush model display lists
...
Not working particularly well yet, but no errors out of validation.
2021-01-21 02:13:40 +09:00
Bill Currie
9eef805b7d
[vulkan] Generate triangle fans for bsp models
...
They're not uploaded to the card yet, but the basics seem to be working.
2021-01-20 15:11:50 +09:00
Bill Currie
d33f5b8d0d
[vulkan] Make a lot of progress for brush models
...
Light maps are maybe updating, but as nothing is actually rendered yet,
it's hard to tell.
2021-01-20 01:28:54 +09:00
Bill Currie
0f81432090
[model] Load bsp textures into vulkan
...
The textures for an entire model are loaded into a single memory object
with shared between multiple images.
2021-01-20 00:37:37 +09:00
Bill Currie
6e0cb7b917
[model] Isolate renderer specific texture data
...
This cleans up texture_t and possibly even improves locality of
reference when running through texture chains (not profiled, and not
actually the goal).
2021-01-19 13:07:31 +09:00
Bill Currie
40fc9f0000
[model] Make Mod_LoadExternalTextures private
...
It never really needed to be externally accessible as it has always been
gl-specific and can be called by Mod_ProcessTexture anyway.
2021-01-19 12:56:05 +09:00
Bill Currie
dacda50130
[renderer] Stub out all the vulkan functions
...
nq-x11 now gets through all three demos without crashing (but without
rendering anything useful, though).
2021-01-18 12:46:06 +09:00
Bill Currie
8078e10ea1
[vulkan] Make frame-buffers independent of swapchain
...
This is more correct as the environment (X11 etc) might provide more
swapchain images than we want: 3 frames in flight is generally
considered a good balance between saturating the hardware and latency.
2021-01-16 21:24:42 +09:00
Bill Currie
ad9c3193fa
[vulkan] Use darray size to control cmd buffer count
...
This allows the array in which the command buffers are allocated to be
allocated on the stack using alloca and thus remove the need to
malloc/free of relatively small chunks.
2021-01-15 22:45:49 +09:00
Bill Currie
858ac19327
[renderer] Move r_screen and r_cvar into main bin
...
r_screen because of SCR_UpdateScreen, and r_cvar because the cvars
really should never have been in a plugin in the first place (and
r_screen needed access).
2021-01-12 16:14:46 +09:00
Bill Currie
bb4ca7683e
[vulkan] Get the 2D pipeline up and running
...
First pixels! This was a nightmare of little issues that the validation
layers couldn't help with: incorrect input assembly, incorrect vertex
attribute specs. Though the layers did help with getting the queues
working. Still, lots of work to go but this is a major breakthrough as
I now have access to visual debugging for textures and the like.
2021-01-12 11:27:41 +09:00
Bill Currie
8f6f32981c
[vulkan] Add some matrix buffers
...
It seems they could all be in the one buffer: there are indications that
uniform binding can be fairly fine-grained. I need to investigate that.
2021-01-12 11:26:20 +09:00
Bill Currie
6e636a27d0
[renderer] Continue the job of merging SCR_UpdateScreen
...
I think this is probably as merged as it will get (though the update
callbacks can probably do with some merging).
2021-01-11 16:57:31 +09:00
Bill Currie
23db917ec4
[vulkan] Create a staging buffer struct
...
And move the barrier prefabs into a more convenient place.
2021-01-11 01:24:15 +09:00
Bill Currie
ba6450d0b4
[vulkan] Make a start on the 2D pipeline
...
Short wrappers for Draw functins are in vid_render_vulkan.c so the
vulkan context can be passed on to the actual functions. The 2D shaders
are set up similar to those in glsl, but with full 32-bit color (rgba)
support instead of paletted. However, the textures are not loaded yet,
nor is anything bound.
2021-01-10 15:56:17 +09:00
Bill Currie
e7106cce9e
[plugin] Remove Draw_Init from draw funcs
...
It's never called outside the renderers.
2021-01-10 15:22:39 +09:00
Bill Currie
b6d2c63059
[vulkan] Fix some formtatting
...
Both code and developer output.
2021-01-07 22:49:43 +09:00
Bill Currie
25ade4c0f3
[vulkan] Add support for custom parsers
...
And provisionally parse shader stage defs.
2020-12-24 01:36:17 +09:00
Bill Currie
0a0035e5e5
Use the render pass to clear the window
...
Very satisfying to get to this point.
2020-02-18 17:48:22 +09:00
Bill Currie
ba654b09f7
Create and destroy render pass and frame buffers
2020-02-18 17:18:37 +09:00
Bill Currie
1f4c019abc
Create and destroy color/depth resources
2020-02-18 14:28:28 +09:00
Bill Currie
89d48b5650
Output first pixels
...
Just clearing the screen to 0xbada55, but the validation layer is quiet.
2020-02-18 01:03:36 +09:00
Bill Currie
94565c2382
Rework much of the Vulkan array handling
...
So much for all those little wrappers hiding the device. Some survived,
but mostly just the bigger things like device, swapchain, etc.
2020-02-17 20:29:35 +09:00
Bill Currie
916e57de37
Get the swapchain image switching sort of working
...
The render pass isn't set up yet, so the validation layer is having a
fit, but cycling through the swapchain images does seem to be working.
2020-02-17 00:50:39 +09:00
Bill Currie
559bd2e636
Create command pool and frame timing fences
...
Nothing is actually done yet, so the reported fps is around 172k (yes,
k), but startup and shutdown seems to be clean (yay validation layers).
2020-02-16 22:45:27 +09:00
Bill Currie
8819d26c95
Fix a compile error
...
not sure how that one got through
2019-10-16 20:57:39 +09:00
Bill Currie
75f19f7243
Completely rework the vulkan related api
...
Things don't work yet, but this feels much cleaner.
2019-07-12 13:34:31 +09:00
Bill Currie
c0bc5cfad6
Implement swapchain creation
2019-07-11 00:58:14 +09:00
Bill Currie
2771e9c573
Correct extension handling
...
I had missed a critical bit from the cookbook.
2019-07-10 13:16:46 +09:00
Bill Currie
3191604641
Uncomment already implemented functions
2019-07-09 21:07:59 +09:00
Bill Currie
68449d0f6f
Create a window and a surface for vulkan
...
Yay, segfaults in R_Init :)
2019-07-09 16:33:44 +09:00
Bill Currie
b3d982bfc3
Remove global vulkan_ctx
...
While I can't say that I'm happy with the details of vulkan_ctx_t, I am
pretty sure I don't want to be limited to having only one.
2019-07-09 11:54:23 +09:00
Bill Currie
707bdfc5f2
Get vulkan back to where it was
2019-07-09 09:06:35 +09:00
Bill Currie
8ee06d75a9
Separate render and presentation initialization
...
This paves the way for clean initialization of the Vulkan renderer, and
very much cleans up the older renderer initialization code as gl and sw
are no longer intertwined.
2019-07-09 01:00:47 +09:00
Bill Currie
6ee2df8445
Move vid callbacks into vid_internal
...
Currently segfaults because viddef is an alias for *r_data->vid, which
has not yet been initialized (chicken and egg).
2019-07-08 13:40:29 +09:00
Bill Currie
d95e9f9af3
Correct vulkan plugin strings
2019-07-07 14:59:20 +09:00
Bill Currie
77afc30486
Fix vid renderer plugin types
...
I guess that plugin type is currently not checked, otherwise I doubt the
mistake would have gone unnoticed.
2019-07-07 14:57:56 +09:00
Bill Currie
2bc78e7f0a
Start work on a Vulkan-based renderer
...
Doesn't do much other than create an instance and enumerate some stuff,
but the build system is working.
2019-07-06 14:56:15 +09:00