Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
149 commits
Select commit Hold shift + click to select a range
d7d7ce3
Added vanilla clone for code compare
JKSunny May 25, 2021
c4a9c87
Added vulkan renderer
JKSunny May 25, 2021
8da8488
re-added r_smartpicmip support
JKSunny May 25, 2021
076a557
Fixed random crash using vid_restart
JKSunny May 25, 2021
3ac225d
Fixed missing fonts after vid_restart
JKSunny May 26, 2021
d76919c
cl_ratiofix refactoring
JKSunny May 28, 2021
2302bf7
Removed localName from image loader
JKSunny Jun 4, 2021
75ddc32
Reverted RE_UploadCinematic to vanilla
JKSunny Jun 9, 2021
946d0a0
Reverted surfaceFlags to vanilla
JKSunny Jun 10, 2021
9d25218
Pointer asterisk repositioning and spacing for readability
JKSunny Jun 10, 2021
9ad6cd6
Removed glConfig.maxTextureUnits
JKSunny Jun 16, 2021
b087a7e
Fixed some linux compiler errors
JKSunny Jun 17, 2021
b150d24
Removed unused extern method
JKSunny Jun 17, 2021
bd3a458
Various fixes and upstream changes from Quake3e
JKSunny Oct 24, 2021
098a1d6
Fixed r_renderscale & splash offset
JKSunny Oct 26, 2021
507a46d
Collection of code cleanup and refactoring. Plus recent quake3e changes
JKSunny Feb 14, 2022
723c24a
Vulkan: Fixed entity wall clipping & refactor fastsky color for perfo…
JKSunny Feb 15, 2022
5ce497f
Vulkan: linux & mac compiler warnings/errors cleanup.
JKSunny Feb 16, 2022
0407000
Building support for Visual Studio 2022
JKSunny Feb 16, 2022
ac6f372
Vulkan: Fix repeating compiler warning for method: vk_set_object_name
JKSunny Feb 16, 2022
c905d05
Merge Github actions workflow from Tayst
JKSunny Feb 16, 2022
40d91f0
Vulkan: Fix bmodel appearing on certain view-angles.
JKSunny Feb 23, 2022
3f911a1
Upgrade SDL to version 2.0.12 & Fix Github actions compiler errors by…
JKSunny Feb 23, 2022
7415822
Vulkan: USE_BUFFER_CLEAR to prevent artifacts on maps with no skybox.
JKSunny Feb 24, 2022
5a51863
Vulkan: Fix recently broken sun & fogcollapse due to RF_ flags influence
JKSunny Feb 24, 2022
5e0466a
Vulkan: Fix worldeffects blendmode state bits artifacts e.g. with rain
JKSunny Mar 19, 2022
c1ffdd4
Vulkan: Refactoring on pipeline creation methods
JKSunny Mar 19, 2022
a781c55
Vulkan: Fix missing oneShotAnimMap & missing lightmap/vertexlight on …
JKSunny Apr 15, 2022
750ad57
Vulkan: Add missing skyboxportal if statements & some slight code cle…
JKSunny Apr 18, 2022
39a6a8d
Vulkan: Fix missing memcpy for per-vertex normals for non-coplanar faces
JKSunny Apr 19, 2022
183acfc
Vulkan: Fix recently introduced broken splash screen & removed unused…
JKSunny Apr 19, 2022
c8c3606
Vulkan: Fix Anisotropy after vid_restart due to defaulting texture fi…
JKSunny Apr 21, 2022
5cff0d2
Vulkan: Fix recently broken mirrors. And fix the distruptor inner rin…
JKSunny Apr 25, 2022
73f1f0b
Vulkan: Apply MBII fix crash if r_bloom is enabled via menu (bypasses…
JKSunny Apr 25, 2022
584d79c
Vulkan: Implement DXT5/BC3 texture compression by Spaghetti
JKSunny May 3, 2022
bb06d03
Vulkan: Implement alpha version of dynamic glow
JKSunny May 20, 2022
dab1a06
Vulkan: Fix dynamic glow x64 compiler error
JKSunny May 20, 2022
fbc96c3
Vulkan: Fix mismatching typedef
JKSunny May 20, 2022
6eed76b
Vulkan: Bump presentation mode selection
JKSunny May 20, 2022
412d4c2
Vulkan: Dynamic glow modifiy depth clearing
JKSunny May 27, 2022
d7d8c79
Vulkan: Use stripped name for R_FindImageFile in R_FindShader.
JKSunny Jun 10, 2022
a01622c
Vulkan: Prevent GPU crash if window size is below gls window size &
JKSunny Jun 10, 2022
6f33897
Vulkan: Fix display of styled lightmaps.
JKSunny Jun 10, 2022
17d354d
Vulkan: Comment out VertexLightingCollapse() to match Vanilla behavior
JKSunny Jun 15, 2022
34877d0
Vulkan: Upstream q3e static and const changes. And
JKSunny Jun 21, 2022
43f3390
Vulkan: If the level has a global fog and fastsky is not enabled,
JKSunny Jun 23, 2022
fe2dffd
Vulkan: Fix skybox images being compressed even when noTC is in the s…
JKSunny Jun 23, 2022
9a65d69
Vulkan: Upstream changes from Quake3e
JKSunny Aug 27, 2022
f7b7dde
Vulkan: Fix x64 build errors
JKSunny Aug 27, 2022
ef22e21
Vulkan: Fix overlooked x64 build errors
JKSunny Aug 27, 2022
01391f8
Vulkan: Avoid division-by-zero for AGEN_PORTAL
JKSunny Aug 27, 2022
6a55ab8
Add "Latest build" to releases using workflow and Fix compiler linker…
JKSunny Aug 29, 2022
e3382aa
Re-enable 32-bit Linux builds and 64-bit Windows builds
JKSunny Oct 9, 2022
a9b7248
Renderers: Remove model_t struct from rd-common. Vulkan: Refactor SPI…
JKSunny Oct 10, 2022
f83e206
Merge latest GitHub workflow from Tayst a11a184d17bea4138175ef9b9f4e…
JKSunny Oct 13, 2022
5b69384
Merge latest GitHub workflow from Tayst
JKSunny Oct 20, 2022
2510df8
Vulkan: Doubled MAX_RENDER_COMMANDS size
JKSunny Oct 25, 2022
ad6a07d
Vulkan: Workaround for AMD + Nvidia GPU conflict
JKSunny Nov 14, 2022
02146ce
Vulkan: Upstream changes from Quake3e
JKSunny Jan 18, 2023
f6e5d62
Vulkan: Code refactoring and fix the FixRenderCommandList method
JKSunny Feb 8, 2023
2741bde
Vulkan: Use vanilla method of shaded flares
JKSunny May 16, 2023
bce1328
Fix Ubuntu x86 builds
JKSunny May 21, 2023
2b84dba
Vulkan: Remove flare fade out and modify distance test bias
JKSunny May 29, 2023
a3af9f7
Vulkan: Implement lightmap atlasing based on rend2
JKSunny Jul 26, 2023
f7ed25c
Vulkan: Optimize draw calls by merging sparks and smoke sprites
JKSunny Jul 27, 2023
79a7a1f
Vulkan: added some color-input optimized shaders from Quake3e
JKSunny Aug 27, 2023
3e62987
Vulkan: Revisit dynamic glow collapse
JKSunny Sep 3, 2023
952653c
Vulkan: Allow fog-collapse for non-world shaders from Quake3e
JKSunny Sep 4, 2023
4e84476
Vulkan: Allow more color optimizations, with and without fog from Qua…
JKSunny Sep 5, 2023
2da897c
Update readme links to point to this repository
JKSunny Sep 5, 2023
6a77892
Vulkan: Implement alpha version of refraction
JKSunny Oct 17, 2023
894b8bd
Vulkan: Fix compiler errors caused by recent commit
JKSunny Oct 17, 2023
bf6f766
Vulkan: fix compiler warning from Quake3e
JKSunny Oct 18, 2023
73eab00
Vulkan: Use proper usage bit for refraction attachment
JKSunny Oct 19, 2023
bd2fff4
Vulkan: Revert to vanilla's SS_BAD handling and use SS_BLEND1
JKSunny Oct 22, 2023
e0d1076
Vulkan: Upstream changes from Quake3e
JKSunny Oct 26, 2023
d7511f8
Vulkan: Remove unused glsl shader
JKSunny Oct 29, 2023
f0dd643
Vulkan: Slightly refactor refraction to match beta branch more
JKSunny Nov 1, 2023
5e98233
Vulkan: Fix r_gamma modifications to take immediate effect when r_fbo 1
JKSunny Dec 7, 2023
469645a
Vulkan: Insignificant refactoring & define guarding
JKSunny Dec 26, 2023
8220512
Vulkan: Cleanup & address warnings
JKSunny Feb 1, 2024
6316d7f
Vulkan: Fixed various image layout transition synchronization issues
JKSunny Feb 4, 2024
4e684b5
Vulkan: Patch dynamic glow for Nvidia 551.23 driver
JKSunny Feb 4, 2024
0350646
Vulkan: Fix up some FreeBSD build errors
JKSunny Feb 4, 2024
7ff79cd
Vulkan: Improve flare visibility test code
JKSunny Feb 5, 2024
76e619d
Vulkan: Allow larger lightmaps by allocating a larger memory chunk
JKSunny Feb 5, 2024
9f28557
Vulkan: fix screenmap image layout transitions
JKSunny Feb 11, 2024
bda5b5a
Vulkan: do not set transient flag for depth/stencil attachment when b…
JKSunny Feb 11, 2024
82ffb3c
Vulkan: Add debug utills with define guards
JKSunny Feb 11, 2024
fdf7bfb
Vulkan: added descriptor index definitions
JKSunny Feb 11, 2024
7de282a
Vulkan: Upstream changes from quake3e
JKSunny Apr 15, 2024
4eee7ab
Renderers: Fix endless loop in Z_Malloc due to imageDeleted always b…
JKSunny Apr 15, 2024
7aca568
Vulkan: Replace PATCH_STITCHING preprocessor define with r_patchStitc…
JKSunny Apr 15, 2024
3ae2bbd
Renderers: Replace PATCH_STITCHING preprocessor define with r_patchSt…
JKSunny Apr 15, 2024
386024c
Vulkan: Remove unused variable from refraction extract
JKSunny Apr 15, 2024
38997d3
Vulkan: Cherry pick changes from TaystJK
JKSunny Apr 15, 2024
90d4de9
Renderers: Move struct skinSurface_t and skin_t to tr_local.h and cle…
JKSunny Apr 15, 2024
ba9c5e8
Renderers: Revert whitespace changes in tr_image_load.cpp
JKSunny Apr 15, 2024
b90d5bb
Update README.md
JKSunny Jul 5, 2024
f23b31b
Radme: Add branch todo lists
JKSunny Jul 9, 2024
89efa05
CMake: Add x64 support and update libs from TaystJK
JKSunny Jul 9, 2024
eb18020
CMake: Add x64 support and update libs from TaystJK
JKSunny Jul 11, 2024
14b248a
Readme: Add note for x64 build using r_vbo 2
JKSunny Jul 11, 2024
7ca4684
Vulkan: Upstream changes from quake3e
JKSunny Aug 4, 2024
32b75a1
Update README.md (#20)
JKSunny Oct 19, 2024
26ea34a
Pack correct SDL2 lib for x64 arch - based on https://github.com/tays…
JKSunny Nov 27, 2024
01cda16
Vulkan: Preserve collapsed lightmap style per bundle
JKSunny Jan 20, 2025
5954b0e
Vulkan: Cleanup recent testing cases
JKSunny Jan 20, 2025
57dd020
Vulkan: Merge resolve lightmapstyles (#24)
JKSunny Jan 20, 2025
964ad86
Vulkan: Upstream changes from quake3e
JKSunny Jan 18, 2025
22f817e
Vulkan: Overlooked recent changes
JKSunny Jan 18, 2025
fbedf11
Vulkan: Don't signal fence when uploading splash
JKSunny Jan 18, 2025
a699052
Vulkan: Upstream changes from quake3e https://github.com/ec-/Quake3e/…
JKSunny Jan 25, 2025
cadf6a8
Vulkan: Verify "forceRGBGen override" uses +cl glsl shader
JKSunny Jan 25, 2025
4cd416c
Add RayTracing branch to README.md
JKSunny Feb 2, 2025
869cd1f
Vulkan: Revert some recent changes to investigate qvkWaitForFences ti…
JKSunny Feb 19, 2025
81d510e
Vulkan: Upstream changes from quake3e
JKSunny Apr 7, 2025
2b8e980
Vulkan: Fix edge case during dglow pass with optimized per-stage comp…
JKSunny Apr 11, 2025
b7d3068
Vulkan: Resolve r_fastsky clear color after recent changes 81d510eaba…
JKSunny Apr 12, 2025
5f716d2
Vulkan: Upstream changes from quake3e https://github.com/ec-/Quake3e/…
JKSunny Apr 15, 2025
811957b
Merge latest GitHub workflow from Tayst
JKSunny Apr 15, 2025
0499b8c
Vulkan: Clip denormalized normals if possible - from quake3e (https:/…
JKSunny Apr 21, 2025
0528a26
Vulkan: Implement image upload queue (https://github.com/ec-/Quake3e/…
JKSunny Apr 21, 2025
05be4a8
Vulkan: handle VK_ERROR_OUT_OF_DATE_KHR more properly during swapchai…
JKSunny Apr 22, 2025
786f077
Update built in SDL version for windows to 2.32.4
taysta Apr 26, 2025
b582d13
Merge pull request #29 from JKSunny/sdl-update (#29)
JKSunny May 2, 2025
54dcb2b
Update README.md
JKSunny May 2, 2025
e92419f
Vulkan: Add padding to staging buffer offset for compressed textures
JKSunny May 4, 2025
681070f
Update README.md
JKSunny May 24, 2025
80e6594
Vulkan: Merge whitespace changes with beta branch
JKSunny May 25, 2025
03cd01c
Vulkan: use dedicated rendering finished semaphore for each swapchain…
JKSunny May 25, 2025
c55d3e1
Vulkan: Upstream changes from quake3e
JKSunny Jun 1, 2025
3d7d76e
Vulkan: auto-generate shader bindings
JKSunny Jun 2, 2025
63a1114
Vulkan: Add multithreaded SPIR-V shader compiler support
JKSunny Jun 2, 2025
5e34134
Vulkan: Upstream changes from quake3e (https://github.com/ec-/Quake3e…
JKSunny Jun 6, 2025
685fde3
Vulkan: Use larger staging/geometry buffers by default if possible (h…
JKSunny Jun 20, 2025
5ba8599
Vulkan: Make proper use of r_DynamicGlowIntensity cvar (#26)
JKSunny Jun 22, 2025
8081d30
Vulkan: Resolve AMD error by flushing staging buffer during splash sc…
JKSunny Jun 25, 2025
f88d0cc
Vulkan: Merge beta into master
JKSunny Jul 18, 2025
f2e78c5
Update README.md
JKSunny Jul 18, 2025
cd13508
Vulkan: Disable vbo model caching by default
JKSunny Oct 4, 2025
b19cc67
Bump minimum cmake version
JKSunny Oct 4, 2025
1f6447f
Vulkan: Merge beta into master (#5)
JKSunny Oct 11, 2025
9999520
Vulkan: Skip mirror views with r_fastsky enabled #52
JKSunny Nov 18, 2025
167a1ce
Vulkan: Limit fog uniform buffer read overflow by clamping to 16 entries
JKSunny Dec 30, 2025
14444cd
Merge latest GitHub workflow macos runner changes from TaystJK (https…
JKSunny Dec 31, 2025
e0dfacf
Vulkan: Fix bug in SFloatRange and SIntRange worldEffects structs, mM…
JKSunny Jan 18, 2026
e9c6e23
Vulkan: Remove unused variable in vk_create_blur_pipeline function (h…
JKSunny Jan 18, 2026
bcb7d6b
Vulkan: Comment out entity merging, causing possible artifacts with R…
JKSunny Apr 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
423 changes: 423 additions & 0 deletions .github/workflows/build.yml

Large diffs are not rendered by default.

23 changes: 21 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ local.properties
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.

.vs

# User-specific files
*.suo
*.user
Expand All @@ -61,11 +63,9 @@ local.properties
*.tlb
*.tli
*.tlh
*.tmp
*.vspscc
.builds
*.dotCover
.vs

winquake.res

Expand Down Expand Up @@ -121,6 +121,8 @@ _UpgradeReport_Files/
Backup*/
UpgradeLog*.XML

# Visual Studio Code
.vscode


############
Expand Down Expand Up @@ -175,4 +177,21 @@ pip-log.txt
## Unix
#############
*.o
*.so

#############
## clangd
#############
.clangd
compile_commands.json

#############
## CLion
#############
.idea

#############
## CMake Builds
#############
[Bb]uild*/
cmake-build-*
50 changes: 32 additions & 18 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
# along with this program; if not, see <http://www.gnu.org/licenses/>.
#============================================================================

cmake_minimum_required(VERSION 3.1)
cmake_minimum_required(VERSION 3.10)
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9" CACHE STRING "Minimum OS X deployment version")

# For checks in subdirectories
Expand All @@ -37,6 +37,7 @@ option(BuildPortableVersion "Build portable version (does not read or write file

option(BuildMPEngine "Whether to create projects for the MP client (eternaljk.x86.exe)" ON)
option(BuildMPRdVanilla "Whether to create projects for the MP default renderer (rd-eternaljk_x86.dll)" ON)
option(BuildMPRdVulkan "Whether to create projects for the MP vulkan renderer (rd-vulkan_x86.dll)" ON)
option(BuildMPDed "Whether to create projects for the MP dedicated server (eternaljkded.exe)" ON)
option(BuildMPGame "Whether to create projects for the MP server-side gamecode (jampgamex86.dll)" ON)
option(BuildMPCGame "Whether to create projects for the MP clientside gamecode (cgamex86.dll)" ON)
Expand All @@ -61,18 +62,18 @@ set(UseInternalPNGDefault OFF)
set(UseInternalJPEGDefault OFF)
set(UseInternalSDL2Default OFF)

if(WIN32)
set(UseInternalOpenALDefault ON)
set(UseInternalZlibDefault ON)
set(UseInternalPNGDefault ON)
set(UseInternalJPEGDefault ON)
set(UseInternalSDL2Default ON)
endif()

if(APPLE)
set(UseInternalJPEGDefault ON)
set(UseInternalOpenALDefault ON)
set(UseInternalPNGDefault ON)
if(UseInternalLibs OR WIN32 OR APPLE)
if(WIN32)
set(UseInternalOpenALDefault ON)
set(UseInternalZlibDefault ON)
set(UseInternalPNGDefault ON)
set(UseInternalJPEGDefault ON)
set(UseInternalSDL2Default ON)
else()
set(UseInternalJPEGDefault ON)
set(UseInternalPNGDefault ON)
set(UseInternalZlibDefault ON)
endif()
endif()

if(CMAKE_SYSTEM_NAME MATCHES "BSD")
Expand All @@ -91,7 +92,7 @@ if(APPLE)
endif()

# Custom CMake Modules needed
list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_SOURCE_DIR}/CMakeModules")
list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_SOURCE_DIR}/cmake/Modules")

Include(CheckTypeSize)
check_type_size("void*" CMAKE_SIZEOF_VOID_P)
Expand All @@ -111,7 +112,10 @@ if(WIN32)
endif()
else()
set(X86 OFF)
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm")
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm64|aarch64)$")
set(Architecture "arm64")
add_definitions(-DPNG_ARM_NEON_OPT=0)
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm")
set(Architecture "arm")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^i.86$")
set(X86 ON)
Expand Down Expand Up @@ -149,6 +153,7 @@ message(STATUS "Git revision is ${GIT_SHA1}")
# Binary names
set(MPEngine "eternaljk.${Architecture}")
set(MPVanillaRenderer "rd-eternaljk_${Architecture}")
set(MPVulkanRenderer "rd-vulkan_${Architecture}")
set(MPDed "eternaljkded.${Architecture}")
set(MPGame "jampgame${Architecture}")
set(MPCGame "cgame${Architecture}")
Expand Down Expand Up @@ -193,9 +198,17 @@ if(MSVC)
set(SharedDefines ${SharedDefines} "_SCL_SECURE_NO_WARNINGS")
set(SharedDefines ${SharedDefines} "_CRT_NONSTDC_NO_DEPRECATE")

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /EHsc /arch:SSE2")
# Warnings
# 4244 = conversion' conversion from 'type1' to 'type2', possible loss of data
# 4996 = 'function': was declared deprecated
# 4267 = 'var' : conversion from 'size_t' to 'type', possible loss of data
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4244 /wd4996 /wd4267")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4244 /wd4996 /wd4267")

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:SSE2")
if (Architecture STREQUAL "x86")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /arch:SSE2")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:SSE2")
endif()

# Configure MSVC Runtime
include(MSVCRuntime)
Expand Down Expand Up @@ -244,6 +257,7 @@ elseif (("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU") OR ("${CMAKE_C_COMPILER_ID}" M
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-comment")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsigned-char")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fcommon")
if (X86)
# "x86 vm will crash without -mstackrealign since MMX
# instructions will be used no matter what and they
Expand Down Expand Up @@ -338,7 +352,7 @@ set(SharedCommonSafeFiles


if(UseInternalJPEG)
add_subdirectory(lib/jpeg-9a)
add_subdirectory(lib/jpeg-9c)
else()
find_package(JPEG REQUIRED)
endif()
Expand Down
18 changes: 0 additions & 18 deletions CreateVisualStudio2015Projects.bat

This file was deleted.

18 changes: 0 additions & 18 deletions CreateVisualStudio2017Projects.bat

This file was deleted.

18 changes: 0 additions & 18 deletions CreateVisualStudio2019Projects.bat

This file was deleted.

2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ COPY . /usr/src/openjk
# Build i386 arch
RUN mkdir /usr/src/openjk/build.i386 &&\
cd /usr/src/openjk/build.i386 &&\
cmake -DCMAKE_TOOLCHAIN_FILE=CMakeModules/Toolchains/linux-i686.cmake \
cmake -DCMAKE_TOOLCHAIN_FILE=cmake/Toolchains/linux-i686.cmake \
-DCMAKE_INSTALL_PREFIX=/opt \
-DBuildMPCGame=OFF -DBuildMPEngine=OFF -DBuildMPRdVanilla=OFF -DBuildMPUI=OFF \
-DBuildSPEngine=OFF -DBuildSPGame=OFF -DBuildSPRdVanilla=OFF \
Expand Down
116 changes: 110 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,134 @@
# EternalJK
# EternalJK - Vulkan API
[![build](https://github.com/JKSunny/EternalJK/actions/workflows/build.yml/badge.svg)](https://github.com/JKSunny/EternalJK/actions/workflows/build.yml)

This fork focuses on the jaPRO integration and Client Engine modifications.

If you have any suggestions or would like to submit a bug report, please post them in [issues](https://github.com/eternalcodes/EternalJK/issues).

[![Website](https://img.shields.io/badge/website-japro-brightgreen.svg)](http://playja.pro) [![Fork](https://img.shields.io/badge/repository-japro%20game%20library-blue.svg)](https://github.com/videoP/jaPRO)
This fork is <u>centered</u> around improving the rendering backend, specifically focusing on adding the [Vulkan API](https://www.vulkan.org).\
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 <u>[*90d4de9*](https://github.com/JKSunny/EternalJK/commit/90d4de970491dccf13077aad40fcc89846e6be05)</u>, <u>[*a9b7248*](https://github.com/JKSunny/EternalJK/commit/a9b72482162f64042ed3213df65f594b2aad2781)</u>

> Its increasingly difficult to maintain a clear [<kbd> list of modified files</kbd>](https://github.com/eternalcodes/EternalJK/pull/116/files), because there have been no upstream commits since 2021. \
**engine related:* <u>[*eb18020*](https://github.com/JKSunny/EternalJK/commit/eb18020e44aba4726295c480ba2db3c6bd775fdd)</u>, <u>[*3ae2bbd*](https://github.com/JKSunny/EternalJK/commit/3ae2bbda774703b74d361272d13f8a056ee55149)</u>, <u>[*4eee7ab*](https://github.com/JKSunny/EternalJK/commit/4eee7ab042f7ec362c1f2623b8fbef0c85189382)</u> <u>[*786f077*](https://github.com/JKSunny/EternalJK/commit/786f077c67e0720bc14f4f18e8e9ebf16f018ebc)</u>

Support Initially started by porting to [Quake-III-Arena-Kenny-Edition](https://github.com/kennyalive/Quake-III-Arena-Kenny-Edition).<br />
After that, I found [vkQuake3](https://github.com/suijingfeng/vkQuake3/tree/master/code), hence the file structure.

Lastly, I stumbled across [Quake3e](https://github.com/ec-/Quake3e).<br />
Which is highly maintained, and is packed with many additions compared to the other repositories.

Therefore the vulkan renderer is now based on Quake3e. <br />A list of the additions can be found on [here](https://github.com/ec-/Quake3e#user-content-vulkan-renderer).

## License

[![License](https://img.shields.io/github/license/eternalcodes/EternalJK.svg)](https://github.com/eternalcodes/EternalJK/blob/master/LICENSE.txt)

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](https://github.com/taysta/TaystJK)** - includes Vulkan*


[![master-todo](https://img.shields.io/badge/todo-list-grey.svg)](https://github.com/users/JKSunny/projects/1/views/1?filterQuery=branch%3Aall)
[![master-release](https://img.shields.io/badge/Download-This_Release-brightgreen.svg)](https://github.com/JKSunny/EternalJK/releases/tag/latest/)
[![taystjk-release](https://img.shields.io/badge/Download-TaystJK_Release-cyan.svg)](https://github.com/taysta/TaystJK/releases/)

---

### :name_badge: **Beta**
> Based on master

[![master-todo](https://img.shields.io/badge/todo-list-grey.svg)](https://github.com/users/JKSunny/projects/1/views/1?filterQuery=branch%3Abeta)
[![beta-release](https://img.shields.io/badge/Download-Beta-ef7b3c.svg)](https://github.com/JKSunny/EternalJK/releases/tag/latest-beta/)

---

### :name_badge: **ImGui** (archived)
Basic implementation of [ImGui](https://github.com/ocornut/imgui) in the vulkan renderer module, [cImGui](https://github.com/cimgui/cimgui) in client, game and ui modules
> **NOTE** Release unavailable! [build binaries](https://github.com/JACoders/OpenJK/wiki/Compilation-guide) yourself from source - ***This branch is archived and unmaintained***

---

### :name_badge: **PBR**
Implementation of [PBR](https://google.github.io/filament/Filament.html#materialsystem/parameterization/standardparameters) *(Physical Based Rendering)* material system based on [Rend2](https://github.com/SomaZ/OpenJK) renderer from OpenJK \
This adds the ability to apply *normal, roughness, metallic or specular mapping*.
by introducing the [<kbd>.mtr</kbd>](https://jkhub.org/tutorials/rend2/new-shader-keywords-r98/) file extension which is an override for [<kbd>.shader</kbd>](https://jkhub.org/tutorials/skinning/basics-of-skinning-03-shaders-r192/)

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

> **NOTE** Release unavailable! [build binaries](https://github.com/JACoders/OpenJK/wiki/Compilation-guide) yourself from source

[![master-todo](https://img.shields.io/badge/todo-list-grey.svg)](https://github.com/users/JKSunny/projects/1/views/1?filterQuery=branch%3APBR)
[![rend2-what-is](https://img.shields.io/badge/What_is-Rend2-yellow.svg)](https://jkhub.org/forums/topic/7468-rend2-a-modern-renderer/)
[![rend2-showcase](https://img.shields.io/badge/See-Bespin_Reborn-yellow.svg)](https://jkhub.org/files/file/4164-bespin-duel-reborn/)
[![rend2-pbr-retexture](https://img.shields.io/badge/See-PBR_Retexture-yellow.svg)](https://jkhub.org/files/file/4240-jedi-academy-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.

*Started entity inspector, but this has been commented out.*

> **NOTE** Release unavailable! [build binaries](https://github.com/JACoders/OpenJK/wiki/Compilation-guide) yourself from source - *Initially for personal use only, but here we are*

[![master-todo](https://img.shields.io/badge/todo-list-grey.svg)](https://github.com/users/JKSunny/projects/1/views/1?filterQuery=branch%3A%22PBR+Inspector%22)
[![pbr-inspector-devlogs](https://img.shields.io/badge/See-Devlog_videos-yellow.svg)](https://www.youtube.com/playlist?list=PLK0BIdk-GT_erDdqgLrzhGbpeIXZVRHL0)

---

### :name_badge: **PBR RTX Inspector**
Based on **PBR Inspector** branch.

> **NOTE** This is Work-in-progress, and is unstable. \
> E.g. switching map requires a full restart because buffer clearing is not implemented yet.

This is an effort to port RayTracing from [Q2RTX](https://github.com/NVIDIA/Q2RTX) by NVIDIA, which builds upon [Q2VKPT](https://brechpunkt.de/q2vkpt/).

> **NOTE** Release unavailable! [build binaries](https://github.com/JACoders/OpenJK/wiki/Compilation-guide) yourself from source

[![pbr-rtx-inspector-devlogs](https://img.shields.io/badge/See-Devlog_videos-yellow.svg)](https://www.youtube.com/embed/?listType=playlist&list=PLK0BIdk-GT_dPJyqZGN72nJ3PWv79XUw-)

---

### :fire: **Prototyping**

Overview of prototyped features like bindless rendering, depth-z-prepass is in the **_Prototype_** tab section [here](https://jksunny.github.io/#tab-prototype)

---

## :link: Forks supporting Vulkan

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

[![jedi-academy-openjk](https://img.shields.io/badge/Jedi_Academy-OpenJK-brightgreen.svg)](https://github.com/JKSunny/OpenJK/) - *based on master branch* \
[![jedi-outcast-jk2mv](https://img.shields.io/badge/Jedi_Outcast_&#x2800;-JK2MV-brightgreen.svg)](https://github.com/JKSunny/jk2mv/) - *based on master branch - (Implemented modular renderer)* \
[![jedi-knight-galaxies](https://img.shields.io/badge/Jedi_Academy-JKGalaxies-brightgreen.svg)](https://github.com/JKSunny/JediKnightGalaxies) - *based on master branch*


## For players

Installing and running EternalJK:

1. [Download the latest release](https://github.com/eternalcodes/EternalJK/releases).
1. [Download the latest release](https://github.com/JKSunny/EternalJK/releases).
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 <kbd>~ Tilde</kbd> key
2. Type "/cl_renderer rd-vulkan; vid_restart" and hit enter

## For Developers

### Contributing to EternalJK
* [Fork](https://github.com/eternalcodes/EternalJK/fork) the EternalJK project on GitHub
* [Fork](https://github.com/JKSunny/EternalJK/fork) the EternalJK project on GitHub
* Create a new branch on your fork and make your changes
* Send a [pull request](https://help.github.com/articles/creating-a-pull-request) to upstream (eternaljk/master)

Expand Down
9 changes: 9 additions & 0 deletions build/build-unix-debug.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/bin/sh

type cmake >/dev/null 2>&1 || { echo >&2 "Can't find cmake."; exit 1; }

BUILD_DIR="`uname`-`uname -m`-debug"
mkdir "$BUILD_DIR"
cd "$BUILD_DIR"
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug ../..
make
9 changes: 9 additions & 0 deletions build/build-unix.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/bin/sh

type cmake >/dev/null 2>&1 || { echo >&2 "Can't find cmake."; exit 1; }

BUILD_DIR="`uname`-`uname -m`"
mkdir "$BUILD_DIR"
cd "$BUILD_DIR"
cmake -G "Unix Makefiles" ../..
make
Loading