EternalJK - Vulkan API

July 29, 2026 ยท View on GitHub

build

This fork is centered around improving the rendering backend, specifically focusing on adding the Vulkan API.
Other forks or mods can incorporate the latest updates from this repository.

NOTE: Game logic remains untouched, required changes are to include SDL2 vulkan headers and refapi.
also relocating some structures from common tr_types.h to renderer module tr_local.h 90d4de9, a9b7248

Its increasingly difficult to maintain a clear list of modified files, because there have been no upstream commits since 2021.
*engine related: eb18020, 3ae2bbd, 4eee7ab 786f077

Support Initially started by porting to Quake-III-Arena-Kenny-Edition.
After that, I found vkQuake3, hence the file structure.

Lastly, I stumbled across Quake3e.
Which is highly maintained, and is packed with many additions compared to the other repositories.

Therefore the vulkan renderer is now based on Quake3e.
A list of the additions can be found on here.

License

License

OpenJK is licensed under GPLv2 as free software. You are free to use, modify and redistribute OpenJK following the terms in LICENSE.txt.

Fork branching explained

:name_badge: Master

Native implemention of the Vulkan renderer module.

NOTE: upstream repository EternalJK is discontinued and is replaced with TaystJK - includes Vulkan

master-todo master-release taystjk-release


:name_badge: Beta

Based on master

master-todo beta-release


:name_badge: ImGui (archived)

Basic implementation of ImGui in the vulkan renderer module, cImGui in client, game and ui modules

NOTE Release unavailable! build binaries yourself from source - This branch is archived and unmaintained


:name_badge: PBR

Implementation of PBR (Physical Based Rendering) material system based on Rend2 renderer from OpenJK
This adds the ability to apply normal, roughness, metallic or specular mapping. by introducing the .mtr file extension which is an override for .shader

master-todo rend2-what-is rend2-showcase rend2-pbr-retexture


:name_badge: PBR Inspector

Combines PBR and ImGui branch.
Began as a local codebase to inspect/debug the PBR material system implementation.
A basic GUI is added, renders the game in a viewport and allows displaying various PBR layers
Other features: View collapsed shader, text/node based shader editor, profiler and a few more bits an bobs.

master-todo pbr-inspector-devlogs


:name_badge: PBR RTX Inspector

Based on PBR Inspector branch.

This is an effort to port RayTracing from Q2RTX by NVIDIA, which builds upon Q2VKPT.

NOTE This is Work-in-progress.

NOTE Release unavailable! build binaries yourself from source

pbr-rtx-inspector-devlogs


:fire: Prototyping

Overview of prototyped features like bindless rendering, depth-z-prepass is in the Prototype tab section here


In addition to this fork, I also have implemented the Vulkan renderer to my other forks

jedi-academy-openjk - based on master branch
jedi-outcast-jk2mv - based on master branch - (Implemented modular renderer)
jedi-knight-galaxies - based on master branch

For players

Installing and running EternalJK:

  1. Download the latest release.
  2. Extract the file into the Jedi Academy GameData folder. For Steam users, this will be in <Steam Folder>/steamapps/common/Jedi Academy/GameData/.
  3. Run eternaljk.x86.exe (Rename to jamp.exe for better steam support)

How to enable vulkan

  1. Open up the console by pressing ~ Tilde key
  2. Type "/cl_renderer rd-vulkan; vid_restart" and hit enter

For Developers

Contributing to EternalJK

  • Fork the EternalJK project on GitHub
  • Create a new branch on your fork and make your changes
  • Send a pull request to upstream (eternaljk/master)

Maintainers

Contributors