From 1f7767b589f11c4ed78ccf18637c615440e9077e Mon Sep 17 00:00:00 2001 From: Srlion Date: Tue, 4 Feb 2025 08:26:06 +0200 Subject: [PATCH] organize most stuff and add easy handling for different shader model versions --- .github/workflows/build.yml | 4 +- .gitignore | 1 + bin/ShaderCompile.exe => ShaderCompile.exe | Bin bin/process_shaders.ps1 | 52 ---------------- build_shaders.bat | 57 ++++++++++++++++-- compile_shader_list.txt | 8 +-- common.hlsl => src/common.hlsl | 0 .../common_rounded.hlsl | 0 common_vs.hlsl => src/common_vs.hlsl | 0 rndx.lua => src/rndx.lua | 0 .../rndx_bh_shaders1_psxx.hlsl | 0 .../rndx_bv_shaders1_psxx.hlsl | 0 .../rndx_r_shaders1_psxx.hlsl | 0 .../rndx_vertex_shaders1_vsxx.hlsl | 0 14 files changed, 60 insertions(+), 62 deletions(-) rename bin/ShaderCompile.exe => ShaderCompile.exe (100%) delete mode 100644 bin/process_shaders.ps1 rename common.hlsl => src/common.hlsl (100%) rename common_rounded.hlsl => src/common_rounded.hlsl (100%) rename common_vs.hlsl => src/common_vs.hlsl (100%) rename rndx.lua => src/rndx.lua (100%) rename rndx_bh_shaders1_ps30.hlsl => src/rndx_bh_shaders1_psxx.hlsl (100%) rename rndx_bv_shaders1_ps30.hlsl => src/rndx_bv_shaders1_psxx.hlsl (100%) rename rndx_r_shaders1_ps2x.hlsl => src/rndx_r_shaders1_psxx.hlsl (100%) rename rndx_vertex_shaders1_vs30.hlsl => src/rndx_vertex_shaders1_vsxx.hlsl (100%) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d490372..f6b7e4c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -17,9 +17,9 @@ jobs: shell: pwsh run: | .\build_shaders.bat - tar -czf RNDX.tar.gz shaders + tar -czf RNDX.tar.gz src/shaders copy RNDX.tar.gz C:\RNDX.tar.gz - copy rndx.lua C:\rndx.lua + copy src/rndx.lua C:\rndx.lua - name: Release if: runner.os == 'Windows' diff --git a/.gitignore b/.gitignore index e2bc440..367dc0f 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ *.inc sound.cache shaders +src/shaders diff --git a/bin/ShaderCompile.exe b/ShaderCompile.exe similarity index 100% rename from bin/ShaderCompile.exe rename to ShaderCompile.exe diff --git a/bin/process_shaders.ps1 b/bin/process_shaders.ps1 deleted file mode 100644 index 6f8da06..0000000 --- a/bin/process_shaders.ps1 +++ /dev/null @@ -1,52 +0,0 @@ -[CmdletBinding()] -param ( - [Parameter(Mandatory=$true, ValueFromPipeline=$true)][System.IO.FileInfo]$File, - [Parameter(Mandatory=$false)][System.UInt32]$Threads -) - -$validVersions = @("20b", "30", "40", "41", "50", "51") - -$fileList = $File.OpenText() -while ($null -ne ($line = $fileList.ReadLine())) { - if ($line -match '^\s*$' -or $line -match '^\s*//') { - continue - } - - $line = $line.Trim() - $fileName = [System.IO.Path]::GetFileNameWithoutExtension($line) - $version = $null - - # Determine version based on filename suffix - if ($fileName -match '(2x|30|40|41|50|51)$') { - $suffix = $matches[1] - switch ($suffix) { - '2x' { $version = '20b' } - '30' { $version = '30' } - '40' { $version = '40' } - '41' { $version = '41' } - '50' { $version = '50' } - '51' { $version = '51' } - default { - Write-Warning "Unrecognized suffix: $suffix in file $fileName. Skipping." - continue - } - } - } else { - Write-Warning "Filename $fileName does not have a recognized version suffix. Skipping." - continue - } - - if ($version -notin $validVersions) { - Write-Warning "Invalid version $version for file $fileName. Skipping." - continue - } - - # Build and execute the ShaderCompile command - $compileArgs = @("/O", "3", "-ver", $version, "-shaderpath", $File.DirectoryName, $line) - if ($Threads -ne 0) { - $compileArgs = @("/O", "3", "-threads", $Threads, "-ver", $version, "-shaderpath", $File.DirectoryName, $line) - } - - & "$PSScriptRoot\ShaderCompile" $compileArgs -} -$fileList.Close() diff --git a/build_shaders.bat b/build_shaders.bat index ee55d04..949aeba 100644 --- a/build_shaders.bat +++ b/build_shaders.bat @@ -1,8 +1,57 @@ @echo off +setlocal enabledelayedexpansion -echo Building inc files and worklist for %inputbase%... +set "File=compile_shader_list.txt" -powershell -NoLogo -ExecutionPolicy Bypass -Command "bin\process_shaders.ps1 'compile_shader_list.txt'" +set "validVersions=20b 30" +set "fallbackVersion=20b" -echo Done! -echo. +REM Open the file for reading +for /f "usebackq tokens=* delims=" %%A in ("%File%") do ( + set "line=%%A" + + REM Skip empty lines or lines starting with comments + echo !line! | findstr /r /c:"^\s*$" >nul + if !errorlevel! equ 0 ( + REM Skip the line + continue + ) + echo !line! | findstr /r /c:"^\s*//" >nul + if !errorlevel! equ 0 ( + REM Skip the line + continue + ) + + REM Trim whitespace from the line + set "line=!line: =!" + + REM Extract all valid versions present in the line using the -v-(version) format + set "versionsInLine=" + for %%V in (%validVersions%) do ( + echo !line! | findstr /r /c:"-v-%%V" >nul && set "versionsInLine=!versionsInLine! %%V" + ) + + REM If no valid versions are found, fallback to the default version + if "!versionsInLine!"=="" ( + echo Warning: No valid version found in line: !line!. Falling back to version %fallbackVersion%. + set "versionsInLine=%fallbackVersion%" + ) + + REM Strip all -v-(version) flags from the line + set "cleanedLine=!line!" + for %%V in (%validVersions%) do ( + set "cleanedLine=!cleanedLine:-v-%%V=! " + ) + set "cleanedLine=!cleanedLine: =!" + + REM Compile for each valid version found in the line (or the fallback version) + for %%V in (!versionsInLine!) do ( + set "compileArgs=/O 3 -ver %%V -shaderpath %CD%/src !cleanedLine!" + + echo Compiling '!cleanedLine!' with version '%%V' + call "ShaderCompile.exe" !compileArgs! + ) +) + +endlocal +exit /b 0 diff --git a/compile_shader_list.txt b/compile_shader_list.txt index 94b26a0..b023677 100644 --- a/compile_shader_list.txt +++ b/compile_shader_list.txt @@ -1,4 +1,4 @@ -rndx_r_shaders1_ps2x.hlsl -rndx_bv_shaders1_ps30.hlsl -rndx_bh_shaders1_ps30.hlsl -rndx_vertex_shaders1_vs30.hlsl +rndx_r_shaders1_psxx.hlsl -v-20b -v-30 +rndx_bh_shaders1_psxx.hlsl -v-30 +rndx_bv_shaders1_psxx.hlsl -v-30 +rndx_vertex_shaders1_vsxx.hlsl -v-30 diff --git a/common.hlsl b/src/common.hlsl similarity index 100% rename from common.hlsl rename to src/common.hlsl diff --git a/common_rounded.hlsl b/src/common_rounded.hlsl similarity index 100% rename from common_rounded.hlsl rename to src/common_rounded.hlsl diff --git a/common_vs.hlsl b/src/common_vs.hlsl similarity index 100% rename from common_vs.hlsl rename to src/common_vs.hlsl diff --git a/rndx.lua b/src/rndx.lua similarity index 100% rename from rndx.lua rename to src/rndx.lua diff --git a/rndx_bh_shaders1_ps30.hlsl b/src/rndx_bh_shaders1_psxx.hlsl similarity index 100% rename from rndx_bh_shaders1_ps30.hlsl rename to src/rndx_bh_shaders1_psxx.hlsl diff --git a/rndx_bv_shaders1_ps30.hlsl b/src/rndx_bv_shaders1_psxx.hlsl similarity index 100% rename from rndx_bv_shaders1_ps30.hlsl rename to src/rndx_bv_shaders1_psxx.hlsl diff --git a/rndx_r_shaders1_ps2x.hlsl b/src/rndx_r_shaders1_psxx.hlsl similarity index 100% rename from rndx_r_shaders1_ps2x.hlsl rename to src/rndx_r_shaders1_psxx.hlsl diff --git a/rndx_vertex_shaders1_vs30.hlsl b/src/rndx_vertex_shaders1_vsxx.hlsl similarity index 100% rename from rndx_vertex_shaders1_vs30.hlsl rename to src/rndx_vertex_shaders1_vsxx.hlsl