Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Squashed commit of the following:
commit 5aa534c
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Wed Jan 7 21:02:43 2026 +0000

    [car] 7 rays per wheel, and perfect wheel mesh to wheel shape matching

commit 8fffe18
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Wed Jan 7 18:41:35 2026 +0000

    [car] even better handling (including tire temperature)

commit d344b2e
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Wed Jan 7 18:02:35 2026 +0000

    [car] even better handling and some more bug fixes

commit 930cf77
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Wed Jan 7 17:15:36 2026 +0000

    [car] fixed wheels and body not matching physics, also fixed very hard suspension

commit dccf809
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Wed Jan 7 16:27:20 2026 +0000

    [car] improved handling

commit 2b06207
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Wed Jan 7 14:22:23 2026 +0000

    [car] suspension tuning

commit cd2c0ef
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Wed Jan 7 13:48:48 2026 +0000

    [car] fixed telemetry bugs

commit 0873e30
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Wed Jan 7 12:19:00 2026 +0000

    [car] improved handling and fixed some bugs

commit b74dd4d
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Wed Jan 7 11:58:04 2026 +0000

    [car] improved handling a custom tire friction formula and more

commit fa656f8
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Wed Jan 7 11:32:07 2026 +0000

    [car] fixed some handling issues

commit 1f8d763
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Tue Jan 6 22:26:46 2026 +0000

    [car] added anti-roll bars and more on-screen metrics

commit 5461ab8
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Tue Jan 6 22:03:24 2026 +0000

    [car] moved the vehicle namespace from physics.cpp into car, and renamed to car

commit 418aeff
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Tue Jan 6 21:19:34 2026 +0000

    [car] added suspension and improved handling

commit 1e5a53e
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Tue Jan 6 20:42:48 2026 +0000

    [car] attached wheels

commit a4c72bf
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Tue Jan 6 16:00:29 2026 +0000

    [physics] added a way to control wheel transforms

commit 2aa0733
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Tue Jan 6 15:30:03 2026 +0000

    [game] clean up

commit 48eeb39
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Tue Jan 6 14:04:00 2026 +0000

    [game] car can now be driven using the arrow keys

commit 90682ee
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Tue Jan 6 13:49:07 2026 +0000

    [physics] implemented vehicle support, created a new default world for prototyping

commit 1db2710
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Tue Jan 6 13:37:46 2026 +0000

    [physics] improved cpu performance by about 1 ms in massive worlds like the forest

commit 073f946
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Tue Jan 6 13:29:48 2026 +0000

    [math] optimized matrix

commit 2b80f59
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Tue Jan 6 13:21:49 2026 +0000

    [math] optimized vector3

commit 5ffc0a1
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Tue Jan 6 13:15:34 2026 +0000

    [shaders] removed unused function

commit 98e7e89
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Tue Jan 6 12:19:11 2026 +0000

    [shaders] improved ibl and atmospheric scattering

commit 6670429
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Tue Jan 6 09:10:00 2026 +0000

    [game] added floors to sponza and subway, so there is a frame or reference

commit 80c042a
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Tue Jan 6 08:38:41 2026 +0000

    [atmospheric_scattering] modern re-write (ue5/frostbite)

commit 1fac87d
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Mon Jan 5 21:20:36 2026 +0000

    [depthoffield] physically-based with automatic focus

commit 271ae4a
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Mon Jan 5 21:09:58 2026 +0000

    [motionblur] brand new, top of the line

commit 98f0b7b
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Mon Jan 5 09:47:37 2026 +0000

    [renderer] debug draw primitives (lines, spheres, etc) now have a duration parameter

commit 91c491d
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Mon Jan 5 09:36:48 2026 +0000

    [premake] treat warnings as errors

commit 6d83d97
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Mon Jan 5 09:32:31 2026 +0000

    [terrain] clean up and ability to detect old terrain_cache.bin and regenerated it without user input

commit 2104de4
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Mon Jan 5 09:07:01 2026 +0000

    [terrain] even faster generation (we hit the limit, the GPU upload is the bottleneck now)

commit 675b076
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Mon Jan 5 08:58:44 2026 +0000

    [terrain] faster generation

commit cfeba36
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Sun Jan 4 20:40:22 2026 +0000

    [forest] calibrated grass density

commit 39ebdfd
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Sun Jan 4 20:36:24 2026 +0000

    [threadpool] fixed some threading issues

commit c1c9f6f
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Sun Jan 4 20:18:56 2026 +0000

    [terrain] removed signed of artificiality from grass and flowers

commit a76f803
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Sun Jan 4 16:41:56 2026 +0000

    [renderer] toned down bloom and fixed a bug where the gt7 tonemapper wouldn't enable in sdr

commit 4f0c3d2
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Sun Jan 4 16:30:21 2026 +0000

    [lighting] calibrated both in-game values and the gran turismo 7 tonampper

commit a6859f9
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Sun Jan 4 16:10:35 2026 +0000

    [lighitng] updated daytime camera settings to allow for more light

commit 7dd79e8
Merge: 3ae9e45 ff1d5ec
Author: Panos Karabelas <PanosConroe@hotmail.com>
Date:   Sun Jan 4 15:59:58 2026 +0000

    Merge pull request #204 from DimitrisKalyvas/material

    [material]: tweaked texture loading assert

commit ff1d5ec
Author: Dimitris Kalyvas <dimitrismarioskalyvas@gmail.com>
Date:   Sun Jan 4 17:48:32 2026 +0200

    [material]: fixed data loading assert

commit 3ae9e45
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Fri Jan 2 09:37:28 2026 +0000

    [normals] fixed broken normals (most obvious in sponza)

commit b064ea6
Merge: 888404a 0bd275a
Author: Panos Karabelas <PanosConroe@hotmail.com>
Date:   Fri Jan 2 09:08:27 2026 +0000

    Merge pull request #202 from MrDrElliot/feature/ui-changes

    Fix world selection crash when no default worlds have been downloaded.

commit 888404a
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Fri Jan 2 09:06:21 2026 +0000

    [contributors[ updated dimitri's contributions and gifted him BeamNG.drive

commit 0bd275a
Author: DrElliot <133075253+MrDrElliot@users.noreply.github.com>
Date:   Wed Dec 31 11:10:27 2025 -0600

    Update MenuBar.cpp

commit 47dbc41
Author: DrElliot <133075253+MrDrElliot@users.noreply.github.com>
Date:   Wed Dec 31 11:09:06 2025 -0600

    Fix Crash with worlds.

commit 174f3af
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Wed Dec 31 14:01:58 2025 +0000

    [license] updated to 2015-2026

commit 08daa18
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Wed Dec 31 12:48:26 2025 +0000

    [bloom] more spread and less intensity

commit 9132ae3
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Wed Dec 31 12:32:24 2025 +0000

    [bloom] upgraded to the Call of Duty: Advanced Warfare version

commit caabdfe
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Wed Dec 31 08:49:57 2025 +0000

    [light] simplified and adjusted light presets

commit 82686ab
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Wed Dec 31 07:20:16 2025 +0000

    [lighting] fixed a bug where the light count wouldn't always be correct

commit 0428bae
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Wed Dec 31 06:42:55 2025 +0000

    [motionblur] physically based (intensity controlled via camera's shutter speed)

commit 61c2555
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Tue Dec 30 14:31:12 2025 +0000

    [worlds] fixed car showroom lighting

commit 1232bb0
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Tue Dec 30 09:55:06 2025 +0000

    [readme] updated gran turismo 7 photometric tonemapper

commit aaf632d
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Tue Dec 30 09:07:56 2025 +0000

    [light] introduced presets that automatically set rotation, temperature and intensity, adjusted game.cpp to simply use those preset to variety in the worlds

commit cfbef8e
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Tue Dec 30 08:18:50 2025 +0000

    [lighting] complete overhaul, everything physically based now, some calibration is still needed to get all worlds to look perfect

commit f13c240
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Tue Dec 30 07:00:32 2025 +0000

    [editor] fixed an issue where not all render resolution would be listed in the renderer options for NVIDIA GPUs

commit 3a50ff7
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Mon Dec 29 16:48:31 2025 +0000

    [workflow] yet another tweak

commit 14df3c3
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Mon Dec 29 16:42:28 2025 +0000

    [workflow] removed duplicate contributor listing

commit d1cea38
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Mon Dec 29 16:37:50 2025 +0000

    [workflow] removed duplicate contributor entry in the release notes

commit aa9b06d
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Mon Dec 29 16:31:19 2025 +0000

    [workflow] proper username detection

commit c48ca66
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Mon Dec 29 16:20:53 2025 +0000

    [workflow] replaced deprecated actions

commit cc893cf
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Mon Dec 29 16:17:00 2025 +0000

    [workflow] yet another tweak

commit af2e566
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Mon Dec 29 15:40:30 2025 +0000

    [workflow] yet another tweak

commit 0bcea24
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Mon Dec 29 15:16:20 2025 +0000

    [workflow] ensure that when a release has multiple commits, they are mangled together in the release notes, but listed as bullet points with hyperlinks to the commits

commit 647b8a4
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Mon Dec 29 13:15:34 2025 +0000

    [contributors] added Bryan

commit dbafa70
Merge: 8166fd1 ee03f2e
Author: Panos Karabelas <PanosConroe@hotmail.com>
Date:   Mon Dec 29 13:01:09 2025 +0000

    Merge pull request #199 from MrDrElliot/master

    Introduction of Console Variables (CVars) to Spartan Engine

commit 8166fd1
Merge: f2ab4e2 175ed66
Author: Panos Karabelas <PanosConroe@hotmail.com>
Date:   Mon Dec 29 12:48:02 2025 +0000

    Merge pull request #200 from George540/resource_search_field

    Simple Resource Viewer search bar filter

commit 175ed66
Author: George Mavroeidis <gmav.graphics@gmail.com>
Date:   Sun Dec 28 04:08:01 2025 -0500

    [editor] added case-insensitive search field in resource viewer

commit ee03f2e
Author: DrElliot <133075253+MrDrElliot@users.noreply.github.com>
Date:   Fri Dec 26 13:35:46 2025 -0600

    Update a weird naming conflict.

commit 5efce0c
Author: DrElliot <133075253+MrDrElliot@users.noreply.github.com>
Date:   Fri Dec 26 13:21:31 2025 -0600

    Various other fixes.

commit 3b4d12b
Author: DrElliot <133075253+MrDrElliot@users.noreply.github.com>
Date:   Fri Dec 26 13:16:19 2025 -0600

    Replaced un-needed helper.

commit 8c79227
Author: DrElliot <133075253+MrDrElliot@users.noreply.github.com>
Date:   Fri Dec 26 10:56:35 2025 -0600

    Formatting fixes.

commit 1edf721
Author: DrElliot <133075253+MrDrElliot@users.noreply.github.com>
Date:   Fri Dec 26 10:45:42 2025 -0600

    Alignment fix.

commit 215042f
Author: DrElliot <133075253+MrDrElliot@users.noreply.github.com>
Date:   Fri Dec 26 10:42:51 2025 -0600

    Console Variable introduction.

    - Adds console variables
    - Fixed mutex issue within logger

commit f2ab4e2
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Fri Dec 26 12:28:24 2025 +0000

    [debugging] fixed renderdoc not working in case where the path to out could not be found

commit 3bd49a9
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Fri Dec 26 09:13:23 2025 +0000

    [documentation] added an additional PR guidline

commit 616d25e
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Fri Dec 26 08:57:15 2025 +0000

    [volume] improved lerpring

commit b582a4d
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Fri Dec 26 08:52:48 2025 +0000

    [volume] wired component to renderer

commit 4acb562
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Fri Dec 26 08:43:59 2025 +0000

    [volume] added functionality to store user selected renderer option overrides

commit 8ae9409
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Fri Dec 26 08:26:20 2025 +0000

    [components] added volume component with ability to draw and manipulate it's shape

commit dbe91fd
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Fri Dec 26 03:09:51 2025 +0000

    [ibl] remove leftover shadow mask

commit af52f08
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Fri Dec 26 03:08:11 2025 +0000

    [ibl] added gtao multi bounce (jimenez)

commit 5c628ea
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Fri Dec 26 03:01:38 2025 +0000

    [ssao] improved bent normals and how they are used in the ibl pass

commit 9fc91a1
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Fri Dec 26 02:03:29 2025 +0000

    [shadows] removed unused parameters

commit 2ad2a46
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Fri Dec 26 01:56:47 2025 +0000

    [shadows] shadow mapping overhaul for maximum quality (accounting for the shadow atlas and massive scale like the forest)

commit f0526aa
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Thu Dec 25 14:35:15 2025 +0000

    [renderer] fixed an issue where disabling auto exposure would still use the last computed luminance

commit 5cea86f
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Thu Dec 25 14:31:38 2025 +0000

    [renderer] fixed flickering flashlight icon in front of the camera

commit 8974b77
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Thu Dec 25 14:06:10 2025 +0000

    [hdr] removed white point, this is an old school way of defining paper white on screen, we'll use real physics to determine it while tonemapping

commit ee007e3
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Thu Dec 25 14:02:37 2025 +0000

    [lighting] removed light mask (not needed anymore)

commit e795adb
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Wed Dec 24 07:52:35 2025 +0000

    [output] added gran turismo 7 physically based tonammper

commit 0b498e1
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Tue Dec 23 23:43:24 2025 +0000

    [camera] removed heap allocations when picking

commit 5b5d70d
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Tue Dec 23 22:08:38 2025 +0000

    delete PR template, not possible

commit 50c387c
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Tue Dec 23 22:06:11 2025 +0000

    [github] added new feature PR template

commit 3a7e9d5
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Tue Dec 23 21:55:46 2025 +0000

    [documentation] updated with yet another PR rule

commit 57f6a7b
Merge: 7527c64 098b027
Author: Panos Karabelas <PanosConroe@hotmail.com>
Date:   Tue Dec 23 03:49:51 2025 +0000

    Merge pull request #195 from reavencode/swapchain-resize-fix

    Fix crash on swapchain resize

commit 098b027
Author: reavencode <antonellodrinkwater@gmail.com>
Date:   Wed Dec 17 10:41:58 2025 +0100

    [fix] The swapchain now unsubscribes itself from the window resize event when it's destroyed.

commit 7527c64
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Wed Dec 17 06:24:11 2025 +0000

    [forest] optimised grass

commit 1212927
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Tue Dec 16 19:55:05 2025 +0000

    [event] added ability to unsubscribe from events

commit 7281083
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Sun Dec 14 02:52:58 2025 +0000

    [fix] when pressing f to disable the flashlight, the intensity will be set to 0 instead of disabling it (which prevents it from updating)

commit 180593e
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Sat Dec 13 22:32:47 2025 +0000

    [workflow] fixed release notes step

commit ea89b3d
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Sat Dec 13 22:16:49 2025 +0000

    [workflow] fixed all warning during release publishing

commit c3bd255
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Sat Dec 13 22:12:30 2025 +0000

    [workflow] update make the build server use the vs 2022 toolset to build the solution since it doesn't support 2026 yet

commit 1d788a6
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Sat Dec 13 22:09:12 2025 +0000

    [workflow] updated solution extension to slnx which is what vs 2026 uses

commit 497462b
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Sat Dec 13 22:06:00 2025 +0000

    [workflow] switch to working directory

commit a29b976
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Sat Dec 13 22:03:32 2025 +0000

    [workflow] removed hardcoded msbuild path

commit e64ea90
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Sat Dec 13 21:55:53 2025 +0000

    [projected] delete vs 2022 project generation scripts since vs 2026 is officaly out, updated github workflow to use vs 2026 as well, and also fixed an issue where releases would only list the last commit

commit 55e4b9b
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Sat Dec 13 21:49:51 2025 +0000

    [editor] improved ux of intro windows, about, and controls

commit e256a0d
Author: Panos Karabelas <panosconroe@hotmail.com>
Date:   Sat Dec 13 21:26:36 2025 +0000

    [shadows] improved performance by precalculating vogel samples and improved penumbra quality
  • Loading branch information
The3dVehicleguy committed Jan 7, 2026
commit 2ce99bd82de643ed6135738bf9335721f4201226
114 changes: 83 additions & 31 deletions .github/workflows/workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ on:
- '.gitattributes'
- '.github/images'
- '.github/ISSUE_TEMPLATE'
- '**/*.hlsl'
pull_request:
paths-ignore:
- '**.md'
Expand All @@ -18,23 +17,20 @@ on:
- '.gitattributes'
- '.github/images'
- '.github/ISSUE_TEMPLATE'
- '**/*.hlsl'

jobs:
build:
strategy:
matrix:
include:
- api: vulkan
configuration: Release
configuration: release
- api: vulkan
configuration: Debug
configuration: debug
- api: d3d12
configuration: Release
configuration: release

runs-on: windows-2022
env:
msbuild_path: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\
steps:
- uses: actions/checkout@v4

Expand All @@ -49,34 +45,47 @@ jobs:
- name: Setup MSBuild / Visual Studio Environment
uses: microsoft/setup-msbuild@v1
with:
vs-version: '[17.0,18.0)' # opt for latest available visual studio version
vs-version: '[17.0,20.0)'

- name: Show MSVC version (for debugging)
shell: cmd
run: |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
cl
where msbuild
msbuild /version

- name: Generate project files
shell: python
working-directory: ${{ github.workspace }}
env:
API: ${{ matrix.api }}
run: |
import subprocess
import os
api = os.environ["API"]
subprocess.run(f"python generate_vs2022_{api}.py ci")
subprocess.run(f"python generate_vs2026_{api}.py ci")

- name: Verify solution file exists
shell: cmd
working-directory: ${{ github.workspace }}
run: |
if not exist spartan.slnx (
echo Error: spartan.slnx not found!
dir *.sln*
exit /b 1
)
echo Solution file found: spartan.slnx

- name: Build
shell: cmd
run: '"%msbuild_path%\MSBuild.exe" /p:Platform=x64 /p:Configuration=${{ matrix.configuration }} /m spartan.sln'
working-directory: ${{ github.workspace }}
run: msbuild /p:Platform=x64 /p:Configuration=${{ matrix.configuration }} /p:PlatformToolset=v143 /m spartan.slnx

- name: Create artifacts
if: github.event_name != 'pull_request' && matrix.api == 'vulkan'
shell: cmd
run: |
echo "Creating artifacts for ${{ matrix.api }} - ${{ matrix.configuration }}"
IF "${{ matrix.configuration }}" == "Release" (
IF "${{ matrix.configuration }}" == "release" (
echo "Creating binaries-only archive for Release..."
build_scripts\7z.exe a -bb1 spartan_vulkan_release.7z .\binaries\7z.exe .\binaries\7z.dll .\binaries\dxcompiler.dll .\binaries\libxess.dll .\binaries\download_assets.py .\binaries\file_utilities.py .\binaries\data .\binaries\spartan_${{ matrix.api }}.exe
) ELSE (
Expand Down Expand Up @@ -131,36 +140,79 @@ jobs:
uses: actions/github-script@v7
with:
script: |
// 1. Fetch Releases and Commits
const { data: releases } = await github.rest.repos.listReleases({
owner: context.repo.owner,
repo: context.repo.repo,
per_page: 1
});

let commits = [];
const lastRelease = releases[0];
const lastReleaseDate = lastRelease ? lastRelease.published_at : null;

const { data: commits } = await github.rest.repos.listCommits({
owner: context.repo.owner,
repo: context.repo.repo,
since: lastReleaseDate,
per_page: 100

if (lastRelease && lastRelease.tag_name) {
const { data: compareData } = await github.rest.repos.compareCommits({
owner: context.repo.owner,
repo: context.repo.repo,
base: lastRelease.tag_name,
head: context.sha
});
commits = compareData.commits || [];
} else {
const { data: recentCommits } = await github.rest.repos.listCommits({
owner: context.repo.owner,
repo: context.repo.repo,
per_page: 50
});
commits = recentCommits || [];
}

// 2. Format Commits
const commitLines = commits
.filter(commit => !commit.commit.message.startsWith('Merge'))
.map(commit => {
const shortSha = commit.sha.substring(0, 7);
const message = commit.commit.message.split('\n')[0];
const url = commit.html_url;
return `- [\`${shortSha}\`](${url}) ${message}`;
});

// 3. Extract Unique Contributors (Restored this logic)
const authorSet = new Set();
commits.forEach(commit => {
if (commit.author && commit.author.login) {
authorSet.add(commit.author.login);
} else {
authorSet.add(commit.commit.author.name);
}
});

const releaseNotes = commits.map(commit => `- ${commit.commit.message}`).join('\n');
return releaseNotes;
const authors = [...authorSet];

let finalNotes = "";
if (commitLines.length > 0) {
finalNotes += commitLines.join('\n');

// Add Contributors section manually (Required because we are using a custom body)
if (authors.length > 0) {
finalNotes += "\n\n### Contributors\n\n";
finalNotes += authors.map(a => `@${a}`).join(', ');
}
} else {
finalNotes = "- Initial release or no new commits found";
}

// 4. Write Direct to Output
const fs = require('fs');
const delimiter = 'EOF_' + Math.random().toString(36).substr(2, 9);
fs.appendFileSync(process.env.GITHUB_OUTPUT, `notes<<${delimiter}\n${finalNotes}\n${delimiter}\n`);

- name: Publish release
uses: marvinpinto/action-automatic-releases@latest
uses: softprops/action-gh-release@v2
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
automatic_release_tag: "${{ steps.get_datetime.outputs.version }}"
tag_name: ${{ steps.get_datetime.outputs.version }}
name: "Spartan v${{ steps.get_datetime.outputs.version }}"
body: ${{ steps.generate_release_notes.outputs.notes }}
prerelease: true
title: "Spartan v${{ steps.get_datetime.outputs.version }}"
body: "${{ steps.generate_release_notes.outputs.result }}"
files: |
spartan_vulkan_release_${{ steps.get_datetime.outputs.version }}.7z
spartan_vulkan_debug_${{ steps.get_datetime.outputs.version }}.7z

- name: Set environment file for release
run: echo "GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }}" >> $GITHUB_ENV
2 changes: 1 addition & 1 deletion build_scripts/file_utilities.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright(c) 2015-2025 Panos Karabelas
# Copyright(c) 2015-2026 Panos Karabelas
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
Expand Down
1 change: 1 addition & 0 deletions build_scripts/premake.lua
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ function solution_configuration()
location ".."
language "C++"
configurations { "debug", "release" }
flags { "FatalWarnings" }

filter { "configurations:debug" }
defines { "DEBUG" }
Expand Down
10 changes: 6 additions & 4 deletions contributing.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,12 @@ This platform offers you the freedom to explore, experiment, and excel. Make the
- Open a Pull Request from your fork/branch → SpartanEngine.

# Pull Request (PR) Guidelines
- Functionality: Ensure your PR is functional. While it can be incomplete, the code it introduces should be operational.
- Collaboration restrictions: Other contributors generally can't modify your PR directly. Hence, non-functional PRs can obstruct the project's progress.
- Iterative improvements: It's okay for your PR to be a part of a larger task. Incremental, functional changes are encouraged.
- Communication: If you're looking for collaboration on your PR, communicate this in your PR description or through our Discord community.
- **Functionality:** Ensure your PR is functional. While it can be incomplete, the code it introduces should be operational.
- **Collaboration restrictions:** Other contributors generally can't modify your PR directly. Hence, non-functional PRs can obstruct the project's progress.
- **Iterative improvements:** It's okay for your PR to be a part of a larger task. Incremental, functional changes are encouraged.
- **Focus:** Keep PRs focused on one issue or change. Avoid touching unrelated aspects of the engine, as it makes review harder and increases merge conflicts.
- **Communication:** If you're looking for collaboration on your PR, communicate this in your PR description or through our Discord community.
- **Nature of work:** This is an open source project, not a classroom. Contributors are expected to be self-sufficient in their implementation. Maintainers provide architectural direction, not private tutoring or line-by-line coding instruction.

# Coding style

Expand Down
14 changes: 0 additions & 14 deletions data/shaders/amd_fidelity_fx/spd.hlsl
Original file line number Diff line number Diff line change
Expand Up @@ -70,20 +70,6 @@ AF4 SpdReduce4(AF4 s1, AF4 s2, AF4 s3, AF4 s4)
output = min(min(s1, s2), min(s3, s4));
#elif MAX
output = max(max(s1, s2), max(s3, s4));
#elif LUMINANCE
float3 luma_weights = float3(0.2126, 0.7152, 0.0722);
float l1 = dot(s1.rgb, luma_weights);
float l2 = dot(s2.rgb, luma_weights);
float l3 = dot(s3.rgb, luma_weights);
float l4 = dot(s4.rgb, luma_weights);
float w1 = 1.0 / (1.0 + l1);
float w2 = 1.0 / (1.0 + l2);
float w3 = 1.0 / (1.0 + l3);
float w4 = 1.0 / (1.0 + l4);
float weight_sum = w1 + w2 + w3 + w4;
float3 weighted_avg = (w1 * s1.rgb + w2 * s2.rgb + w3 * s3.rgb + w4 * s4.rgb) / (weight_sum + FLT_MIN);
float avg_alpha = (s1.a + s2.a + s3.a + s4.a) * 0.25f;
output = float4(weighted_avg, avg_alpha);
#endif

return output;
Expand Down
72 changes: 49 additions & 23 deletions data/shaders/auto_exposure.hlsl
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
Copyright(c) 2015-2025 Panos Karabelas
Copyright(c) 2015-2026 Panos Karabelas

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand All @@ -19,59 +19,85 @@ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/

//= INCLUDES =========
//= includes =========
#include "common.hlsl"
//====================

[numthreads(1, 1, 1)]
void main_cs(uint3 thread_id : SV_DispatchThreadID)
{
// compute luminance using the lowest mip
float lum = 0.0f;
// 1. compute average luminance (in watts for now)
float avg_watts = 0.0f;
{
uint w, h, mip_count;
tex.GetDimensions(0, w, h, mip_count);

uint mip = mip_count - 1;
// we use the lowest mip (1x1 or 2x2) for performance
uint mip = max(0, mip_count - 1); // safety check
tex.GetDimensions(mip, w, h, mip_count);

float lum_sum = 0.0;
float sum_watts = 0.0f;
for (uint y = 0; y < h; y++)
{
for (uint x = 0; x < w; x++)
{
float3 col = tex.Load(int3(x, y, mip)).rgb;
lum_sum += dot(col, float3(0.2126, 0.7152, 0.0722));

// get luminance (watts)
float lum = dot(col, float3(0.2126f, 0.7152f, 0.0722f));

// [sun protection]
// if we look at the sun, the average skyrockets, causing the rest of
// the world to become pitch black. we clamp the max sample value
// to prevent the sun from dominating the average.
// 100.0f watts ~ 68,000 nits (very bright highlight, but not the sun)
lum = min(lum, 100.0f);

sum_watts += lum;
}
}
lum = lum_sum / float(w * h);
avg_watts = sum_watts / float(w * h);
}

// read previous exposure
float prev = tex2.Load(int3(0, 0, 0)).r;
// 2. physics conversion (watts -> nits)
const float luminous_efficacy = 683.0f;
float avg_nits = avg_watts * luminous_efficacy;

// 3. apply current camera exposure
// we need to know how bright the image is *currently* with the c++ camera settings.
float current_brightness = avg_nits * buffer_frame.camera_exposure;

// target luminance (middle gray)
const float target_luminance = 0.5;
// 4. target luminance (middle gray)
// we want the average brightness to hit middle gray.
// in gt7 setup, white = 250 nits.
// middle gray is usually 18% of reference white.
// 250 * 0.18 = 45 nits.
const float target_nits = 45.0f;

// compute desired exposure
float desired_exposure = target_luminance / max(lum, 0.0001);
// 5. compute exposure compensation factor
float desired_exposure = target_nits / max(current_brightness, 0.001f);

// min/max exposure in EV
const float min_ev = -0.2f; // dark
const float max_ev = 1.5; // bright
// 6. clamp exposure (ev range)
// we allow the ae to adjust the camera by +/- 4 stops (ev).
// your previous range (-0.2 to 1.5) was too small to fix anything.
const float min_ev = -4.0f;
const float max_ev = 4.0f;

// convert to linear
float min_exposure = exp2(min_ev);
float max_exposure = exp2(max_ev);

// clamp exposure
desired_exposure = clamp(desired_exposure, min_exposure, max_exposure);

// exponential adaptation
// 7. temporal adaptation (smooth transition)
float prev_exposure = tex2.Load(int3(0, 0, 0)).r;
float adaptation_speed = pass_get_f3_value().x;
float tau = 1.0 / max(adaptation_speed, 0.001);
float exposure = prev + (desired_exposure - prev) * (1.0 - exp(-tau * buffer_frame.delta_time));

// safety for first frame
if (isnan(prev_exposure) || prev_exposure <= 0.0f) prev_exposure = 1.0f;

float tau = 1.0f / max(adaptation_speed, 0.001f);
float exposure = prev_exposure + (desired_exposure - prev_exposure) * (1.0f - exp(-tau * buffer_frame.delta_time));

// write output
tex_uav[uint2(0, 0)] = float4(exposure, exposure, exposure, 1.0);
tex_uav[uint2(0, 0)] = float4(exposure, exposure, exposure, 1.0f);
}
2 changes: 1 addition & 1 deletion data/shaders/blit.hlsl
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
Copyright(c) 2015-2025 Panos Karabelas
Copyright(c) 2015-2026 Panos Karabelas

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
Loading