JKSunny / EternalJK

Effort to maintain and improve OpenJK
GNU General Public License v2.0
11 stars 1 forks source link

EternalJK - Vulkan API

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: Changes to other areas of the codebase are kept at a minimum. \ Game logic remains untouched, except for integrating SDL2 vulkan headers and refapi, and relocating some structures from tr_types.h to the various renderers tr_local.h \ View list of modified files

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

Master branch

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


Beta branch

Based on master, with addition of features like instanced MD3 and Ghoul2 model caching on the gpu.

cvar r_vbo: Cache static surfaces: 0 - off 1 - world 2 - world + models

NOTE: x64 builds lack mergable ghoul2 surfaces when r_vbo 2

master-todo beta-release beta-comparision-video


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


PBR branch

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

NOTE Incompatible with master or beta branch! cvar r_fbo and r_vbo are enabled hard-coded.

NOTE: x64 builds lack mergable ghoul2 surfaces when r_vbo 2

NOTE Release unavailable! build binaries yourself from source

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


PBR Inspector branch

Combines PBR and ImGui branch. \ Began as a local codebase to inspect/debug the PBR material system implementation. \ Like well-known game engine editors, a basic GUI is added, renders the game in a viewport and allows inspecting the various PBR layers \ A collapsed shader preview and basic editor (WIP), profiler plus a few more bits an bobs.

Started entity inspector, but this has been commented out.

NOTE Release unavailable! build binaries yourself from source - Initially for personal use only, but here we are

master-todo pbr-inspector-video


Forks supporting Vulkan

In addition to this fork, I also have implemented the Vulkan renderer to my forks of OpenJK and JK2MV

jedi-academy-openjk - based on beta branch \ jedi-outcast-jk2mv - based on master branch - (Implemented modular renderer)

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

Maintainers

Contributors