Player guide
Renderers
TaystJK ships three renderer backends. Which one you run changes performance, which settings do anything, and who fixes a bug.
The three backends
| You type | Built from | What it is |
|---|---|---|
rd-taystjk |
codemp/rd-vanilla |
The default. The original renderer, kept as the compatibility baseline. |
rd-rend2t |
shared/rd-rend2 |
The modern feature-rich backend, labelled experimental in the build. |
rd-vulkant |
codemp/rd-vulkan |
A Vulkan backend derived from Quake3e’s, developed upstream by JKSunny. |
The names you type are not the directory names. The library names are set in
CMakeLists.txt,
and cl_renderer is used verbatim to build the library filename
(cl_main.cpp).
cl_renderer rd-vanilla will not find anything.
Switching
cl_renderer rd-rend2t
vid_restart
cl_renderer is latched, so nothing happens until vid_restart or
a restart. The menu exposes the same choice.
If the library you named cannot be loaded, the client says so, resets cl_renderer to the
default and loads that instead rather than failing outright
(cl_main.cpp).
If you switch and end up back on the default, that is what happened. Usually the build
does not include that renderer.
Vulkan on macOS
macOS has no Vulkan driver of its own. rd-vulkant runs there through MoltenVK, which
translates Vulkan to Metal. TaystJK does not include it, so install it yourself with
Homebrew:
brew install molten-vk
The renderer gets Vulkan through SDL
(sdl_window.cpp),
and on Apple silicon SDL does not find Homebrew’s copy unless SDL_VULKAN_LIBRARY names
it. Opening the app from Finder or the Dock cannot set that, so start it from Terminal,
replacing the path with wherever your taystjk.app is:
open --env SDL_VULKAN_LIBRARY="$(brew --prefix)/lib/libMoltenVK.dylib" /path/to/taystjk.app --args +set cl_renderer rd-vulkant
To start it this way with a double-click, save that line in a text file whose name ends in
.command, with $(brew --prefix) replaced by the path brew --prefix prints
(/opt/homebrew on Apple silicon). Run chmod +x on the file once, then open the file
instead of the app.
Switch back before you open TaystJK any other way. cl_renderer is saved in your
config, and this is not the missing-library case above: the renderer loads but cannot get
Vulkan, so the client stops with “GLimp_Init() - could not load OpenGL subsystem” instead
of falling back to the default
(sdl_window.cpp).
Set cl_renderer rd-taystjk before you quit, or, if you already see that error, start it
once with:
open /path/to/taystjk.app --args +set cl_renderer rd-taystjk
What differs in practice
Settings are not shared. Many r_ cvars are registered by one backend only, so a
setting that works under one does nothing under another. The console reference records this
as renderer scope on each entry; anything listed for a backend you are not running is
inert. The menu follows the same rule and hides the rend2 options unless cl_renderer is
exactly rd-rend2t
(ui_main.c).
Bloom is Vulkan-only, and needs the framebuffer path. r_bloom
is registered by the Vulkan backend and its own description says it requires
r_fbo 1
(tr_init.cpp).
Both are latched, so set both and then vid_restart.
Override shaders work everywhere. .oshader files are implemented in all three
backends, so a shader override does not depend on your choice. See
client behaviour changes.
Memory. Switching renderer will not save much. Loading mp/ffa3 on an Apple Silicon
Mac, all three peaked within about 10% of each other, at 1.4 to 1.5 GB. If a 32-bit build
runs out of memory, the fix is the 64-bit build rather than another renderer; see the
install guide.
Where a renderer bug goes
Anything you can also reproduce on rd-taystjk is not a renderer bug. Switch backends before
reporting. It is the single most useful thing you can say in the report.
The Vulkan backend is developed upstream by JKSunny, and fixes flow from there to TaystJK. A Vulkan-only problem belongs at https://github.com/JKSunny/EternalJK/issues only if it also happens on JKSunny’s own EternalJK build. If it happens only in TaystJK, TaystJK introduced it; report it at taysta/TaystJK. Where to report explains the check.
rend2 is also developed upstream. rd-rend2t is built from SomaZ’s rend2, on the
rend2-unified-wip branch of
SomaZ’s OpenJK fork, not from the older rend2 in OpenJK itself, and its fixes are written
there and ported down. A rend2-only problem belongs at
SomaZ/OpenJK only if it also happens on a build
of that branch. If it happens only in TaystJK, TaystJK introduced it; report it at
taysta/TaystJK.
Last changed History Edit this page on GitHub