diff --git a/src/devtools/bin/process_shaders.ps1 b/src/devtools/bin/process_shaders.ps1 index 5f9531194..649c75792 100644 --- a/src/devtools/bin/process_shaders.ps1 +++ b/src/devtools/bin/process_shaders.ps1 @@ -2,23 +2,71 @@ param ( [Parameter(Mandatory=$true, ValueFromPipeline=$true)][System.IO.FileInfo]$File, [Parameter(Mandatory=$true)][string]$Version, + [Parameter(Mandatory=$false)][switch]$Force, [Parameter(Mandatory=$false)][switch]$Dynamic, - [Parameter(Mandatory=$false)][System.UInt32]$Threads = 0, - [Parameter(Mandatory=$false)][System.UInt32]$Optimize = 3 + [Parameter(Mandatory=$false)][int]$Threads = 0, + [Parameter(Mandatory=$false)][int]$Optimize = 3 ) -if ($Version -notin @("20b","30","40","41","50","51")) { return } +# ===================================== +# Validate input +# ===================================== +if ($Version -notin @("20b","30","40","41","50","51")) { + return +} + +# ===================================== +# Resolve compilation parameters +# ===================================== +$argsBase = @() +if ($Force) { $argsBase += "-force" } + +if ($Threads -is [int] -and $Threads -gt 0) { + $ThreadsToUse = [Math]::Min($Threads, [int]$env:NUMBER_OF_PROCESSORS) + $argsBase += "-threads", $ThreadsToUse +} + +$argsBase += "-ver", $Version +$argsBase += "-shaderpath", $File.DirectoryName +if ($Dynamic) { + $argsBase += "-dynamic" +} elseif ($Optimize -is [int]) { + $optVal = [Math]::Min([Math]::Max($Optimize, 0), 3) + $argsBase += "-optimize", $optVal +} + +# ===================================== +# Logging 1 +# ===================================== +$modeParts = @() +if ($Force) { $modeParts += "FORCE" } +if ($Dynamic) { $modeParts += "DYNAMIC" } +if (-not $Force -and -not $Dynamic) { $modeParts += "ON-DEMAND" } + +$modeText = $modeParts -join " + " +$modeColor = if ($Force -or $Dynamic) { "Magenta" } else { "White" } + +Write-Host "`nMode: $modeText`n" -ForegroundColor $modeColor + +# ===================================== +# Main shader compilation loop +# ===================================== +$ShaderStart = Get-Date foreach ($line in Get-Content $File) { if ($line -match '^\s*$' -or $line -match '^\s*//') { continue } - $args = @() - if ($Dynamic) { $args += "-dynamic" } - if ($Threads -ne 0) { $args += "-threads"; $args += $Threads } - $args += "-ver"; $args += $Version - $args += "-shaderpath"; $args += $File.DirectoryName - if (-not $Dynamic) { $args += "-optimize"; $args += $Optimize } + # Build full args for this shader line + $args = @($argsBase) $args += $line + # Invoke ShaderCompile & "$PSScriptRoot\ShaderCompile" $args } +$TotalTime = (Get-Date) - $ShaderStart + +# ===================================== +# Logging 2 +# ===================================== +Write-Host "`nShader compilation pass for $($File.Name) finished." +Write-Host ("Time elapsed: {0}h:{1:mm}m:{1:ss}s:{1:ff}ms`n" -f [int]$TotalTime.TotalHours, $TotalTime) -ForegroundColor Cyan diff --git a/src/game/client/swarm/c_asw_concommands.cpp b/src/game/client/swarm/c_asw_concommands.cpp index 1f4043716..4f941f702 100644 --- a/src/game/client/swarm/c_asw_concommands.cpp +++ b/src/game/client/swarm/c_asw_concommands.cpp @@ -862,7 +862,7 @@ void rd_reset_level_and_promotion_f() Msg( "All done, your level and promotion have been reset!\n" ); } -ConCommand rd_reset_level_and_promotion( "rd_reset_level_and_promotion", rd_reset_level_and_promotion_f, "Resets promotion (rank, level etc.)", FCVAR_DEVELOPMENTONLY ); +ConCommand rd_reset_level_and_promotion( "rd_reset_level_and_promotion", rd_reset_level_and_promotion_f, "Resets promotion (rank, level etc.)", FCVAR_NOT_CONNECTED ); void asw_show_xp_f() { diff --git a/src/game/client/swarm_sdk_client.vcxproj b/src/game/client/swarm_sdk_client.vcxproj index 456227731..e54591b90 100644 --- a/src/game/client/swarm_sdk_client.vcxproj +++ b/src/game/client/swarm_sdk_client.vcxproj @@ -227,7 +227,7 @@ if ERRORLEVEL 1 exit 1 26495;26812 true true - true + false true @@ -253,7 +253,7 @@ if ERRORLEVEL 1 exit 1 MachineX86 PromptImmediately false - /Brepro /SOURCELINK:..\..\sourcelink.json %(AdditionalOptions) + /Brepro /SOURCELINK:..\..\sourcelink.json /IGNORE:4099 %(AdditionalOptions) UseLinkTimeCodeGeneration true true diff --git a/src/game/missionchooser/swarm_sdk_missionchooser.vcxproj b/src/game/missionchooser/swarm_sdk_missionchooser.vcxproj index 909e28e5e..7bd334182 100644 --- a/src/game/missionchooser/swarm_sdk_missionchooser.vcxproj +++ b/src/game/missionchooser/swarm_sdk_missionchooser.vcxproj @@ -218,7 +218,7 @@ if ERRORLEVEL 1 exit 1 true true true - true + false NDEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) diff --git a/src/game/server/swarm_sdk_server.vcxproj b/src/game/server/swarm_sdk_server.vcxproj index bf1b77c22..ff7cf098e 100644 --- a/src/game/server/swarm_sdk_server.vcxproj +++ b/src/game/server/swarm_sdk_server.vcxproj @@ -223,7 +223,7 @@ if ERRORLEVEL 1 exit 1 true true true - true + false NDEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) diff --git a/src/materialsystem/shaderlib/shaderlib_sdk.vcxproj b/src/materialsystem/shaderlib/shaderlib_sdk.vcxproj index 67cf0da48..4a18d91ff 100644 --- a/src/materialsystem/shaderlib/shaderlib_sdk.vcxproj +++ b/src/materialsystem/shaderlib/shaderlib_sdk.vcxproj @@ -14,12 +14,14 @@ 17.0 shaderlib {1A1149D9-CB1B-BF85-19CA-C9C2996BFDE8} + 10.0 StaticLibrary v143 MultiByte + true StaticLibrary @@ -45,6 +47,7 @@ true true true + shaderlib .\Release\.\ @@ -52,6 +55,7 @@ true true true + shaderlib @@ -89,11 +93,11 @@ Prompt - if exist ..\..\lib\public\shaderlib.lib attrib -r ..\..\lib\public\shaderlib.lib + if exist "$(TargetPath)" attrib -R "$(TargetPath)" false - ..\..\lib\public\.\shaderlib.lib + $(TargetPath) true @@ -103,13 +107,25 @@ true $(OutDir)shaderlib.bsc + + setlocal enabledelayedexpansion + +set DestDir=..\..\lib\public + +if not exist !DestDir! mkdir !DestDir! +if exist !DestDir!\$(TargetFileName) attrib -R !DestDir!\$(TargetFileName) +copy /Y $(TargetPath) !DestDir!\ + + + + Publishing to target directory (..\..\lib\public\)... + - /MP %(AdditionalOptions) MaxSpeed AnySuitable true @@ -140,13 +156,16 @@ OldStyle CompileAsCpp Prompt + true + true - if exist ..\..\lib\public\shaderlib.lib attrib -r ..\..\lib\public\shaderlib.lib + if exist "$(TargetPath)" attrib -R "$(TargetPath)" + false - ..\..\lib\public\.\shaderlib.lib + $(TargetPath) true @@ -156,6 +175,27 @@ true $(OutDir)shaderlib.bsc + + + + + + + + + + setlocal enabledelayedexpansion + +set DestDir=..\..\lib\public + +if not exist !DestDir! mkdir !DestDir! +if exist !DestDir!\$(TargetFileName) attrib -R !DestDir!\$(TargetFileName) +copy /Y $(TargetPath) !DestDir!\ + + + + Publishing to target directory (..\..\lib\public\)... + diff --git a/src/materialsystem/stdshaders/buildsdkshaders.bat b/src/materialsystem/stdshaders/buildsdkshaders.bat index a187f3351..155e3295a 100644 --- a/src/materialsystem/stdshaders/buildsdkshaders.bat +++ b/src/materialsystem/stdshaders/buildsdkshaders.bat @@ -1,66 +1,52 @@ @echo off setlocal -rem Use dynamic shaders to build .inc files only -rem set dynamic_shaders=1 -rem == Setup path to nmake.exe, from vc 2005 common tools directory == -call "%VS80COMNTOOLS%vsvars32.bat" +REM ====================================== +REM ==== PATH CONFIGURATIONS -rem ================================ -rem ==== MOD PATH CONFIGURATIONS === +REM == Setup path to nmake.exe, from vc common tools directory +call "G:\Program Files\Microsoft Visual Studio\18\Community\Common7\Tools\VsDevCmd.bat" -rem == Set the absolute path to your mod's game directory here == -rem == Note that this path needs does not support long file/directory names == -rem == So instead of a path such as "C:\Program Files\Steam\steamapps\mymod" == -rem == you need to find the 8.3 abbreviation for the directory name using 'dir /x' == -rem == and set the directory to something like C:\PROGRA~2\Steam\steamapps\sourcemods\mymod == -set GAMEDIR=D:\Games\Steam\steamapps\common\asrdsymlink\reactivedrop +rem == Set the absolute path to your mod's game directory here +set GAMEDIR="G:\PENDRIVE\Steam\steamapps\common\Alien Swarm Reactive Drop\reactivedrop" -rem == Set the relative path to steamapps\common\Alien Swarm\bin == -rem == As above, this path does not support long directory names or spaces == -rem == e.g. ..\..\..\..\..\PROGRA~2\Steam\steamapps\common\ALIENS~1\bin == -set SDKBINDIR=..\..\..\..\STEAME~1\steamapps\common\ALIENS~1\bin - -rem == Set the Path to your mods root source code == -rem this should already be correct, accepts relative paths only! +REM == Set the Path to your mods root source code +REM == "..\.." should already be correct, accepts relative paths only! set SOURCEDIR=..\.. -rem ==== MOD PATH CONFIGURATIONS END === -rem ==================================== - +REM ==== PATH CONFIGURATIONS END +REM ====================================== +REM ====================================== +REM ==== SHADER BUILD CONFIGURATION +REM == Set force=1 to force shader recompilation +REM set FORCE=1 +REM == Set dynamic_shaders=1 to build .inc files only +REM set dynamic_shaders=1 -set TTEXE=..\..\devtools\bin\timeprecise.exe -if not exist %TTEXE% goto no_ttexe -goto no_ttexe_end +REM == Number of threads used by ShaderCompile: +REM == <= 0 or unset = all threads (default) +REM == > 0 = force specific number of threads +REM == Set to override the default behavior. +REM set THREADS=-1 -:no_ttexe -set TTEXE=time /t -:no_ttexe_end +REM == Optimization level used by ShaderCompile: +REM == <= 0 = no optimization +REM == 1–2 = intermediate optimization +REM == >= 3 or unset = full optimization (default) +REM == Set to override the default behavior. +REM set OPTIMIZE=3 +REM ==== SHADER BUILD CONFIGURATION END +REM ====================================== -rem echo. -rem echo ~~~~~~ buildsdkshaders %* ~~~~~~ -%TTEXE% -cur-Q -set tt_all_start=%ERRORLEVEL% -set tt_all_chkpt=%tt_start% +REM ====================================== +REM ==== RUN set BUILD_SHADER=call buildshaders.bat -set ARG_EXTRA= - -%BUILD_SHADER% stdshader_dx9_20b -game %GAMEDIR% -source %SOURCEDIR% -%BUILD_SHADER% stdshader_dx9_20b_new -game %GAMEDIR% -source %SOURCEDIR% -%BUILD_SHADER% stdshader_dx9_30 -game %GAMEDIR% -source %SOURCEDIR% -force30 - - -rem echo. -if not "%dynamic_shaders%" == "1" ( - rem echo Finished full buildallshaders %* -) else ( - rem echo Finished dynamic buildallshaders %* -) -rem %TTEXE% -diff %tt_all_start% -cur -rem echo. +%BUILD_SHADER% stdshader_dx9_20b -game %GAMEDIR% -source %SOURCEDIR% +%BUILD_SHADER% stdshader_dx9_20b_new -game %GAMEDIR% -source %SOURCEDIR% +%BUILD_SHADER% stdshader_dx9_30 -game %GAMEDIR% -source %SOURCEDIR% -force30 diff --git a/src/materialsystem/stdshaders/buildshaders.bat b/src/materialsystem/stdshaders/buildshaders.bat index e300b832c..1ec3b5e92 100644 --- a/src/materialsystem/stdshaders/buildshaders.bat +++ b/src/materialsystem/stdshaders/buildshaders.bat @@ -9,7 +9,9 @@ set TTEXE=time /t :no_ttexe_end echo. -echo ==================== buildshaders %* ================== +echo ====================================== +echo buildshaders.bat %* +echo. %TTEXE% -cur-Q set tt_start=%ERRORLEVEL% set tt_chkpt=%tt_start% @@ -48,7 +50,7 @@ REM USAGE REM **************** :usage echo. -echo "usage: buildshaders [-game] [gameDir if -game was specified] [-source sourceDir]" +echo "usage: buildshaders [-game gameDir] [-source sourceDir]" echo " gameDir is where gameinfo.txt is (where it will store the compiled shaders)." echo " sourceDir is where the source code is (where it will find scripts and compilers)." echo "ex : buildshaders myshaders" @@ -120,9 +122,26 @@ title %1 %SHVER% echo Building inc files and worklist for %inputbase%... -set DYNAMIC= -if "%dynamic_shaders%" == "1" set DYNAMIC=-Dynamic -powershell -NoLogo -ExecutionPolicy Bypass -Command "%SrcDirBase%\devtools\bin\process_shaders.ps1 %DYNAMIC% -Version %SHVER% '%inputbase%.txt'" + +set PS_EXTRA_ARGS= + +if defined FORCE ( + set PS_EXTRA_ARGS=%PS_EXTRA_ARGS% -Force +) + +if defined dynamic_shaders ( + set PS_EXTRA_ARGS=%PS_EXTRA_ARGS% -Dynamic +) + +if defined THREADS ( + set PS_EXTRA_ARGS=%PS_EXTRA_ARGS% -Threads %THREADS% +) + +if defined OPTIMIZE ( + set PS_EXTRA_ARGS=%PS_EXTRA_ARGS% -Optimize %OPTIMIZE% +) + +powershell -NoLogo -ExecutionPolicy Bypass -Command "%SrcDirBase%\devtools\bin\process_shaders.ps1 %PS_EXTRA_ARGS% -Version %SHVER% '%inputbase%.txt'" REM **************** REM PC Shader copy @@ -131,8 +150,9 @@ REM This batch file may have been invoked standalone or slaved (master does fina REM **************** :DoXCopy if not "%dynamic_shaders%" == "1" ( -if not exist "%targetdir%" md "%targetdir%" -if not "%targetdir%"=="%shaderDir%" xcopy %shaderDir%\*.* "%targetdir%" /e /y + echo Coping compiled shaders.. + if not exist "%targetdir%" md "%targetdir%" + if not "%targetdir%"=="%shaderDir%" xcopy %shaderDir%\*.* "%targetdir%" /e /y ) goto end @@ -143,4 +163,4 @@ REM **************** %TTEXE% -diff %tt_start% -echo. \ No newline at end of file +echo. diff --git a/src/materialsystem/stdshaders/stdshader_dx9_sdk.sln b/src/materialsystem/stdshaders/stdshader_dx9_sdk.sln index 43a54a487..58b85d8a2 100644 --- a/src/materialsystem/stdshaders/stdshader_dx9_sdk.sln +++ b/src/materialsystem/stdshaders/stdshader_dx9_sdk.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.7.33808.371 +# Visual Studio Version 18 +VisualStudioVersion = 18.1.11312.151 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stdshader_dx9", "stdshader_dx9_sdk.vcxproj", "{C8D2DC83-E117-7576-7B43-10C844264C51}" EndProject diff --git a/src/materialsystem/stdshaders/stdshader_dx9_sdk.vcxproj b/src/materialsystem/stdshaders/stdshader_dx9_sdk.vcxproj index ab90f8401..f60fa0921 100644 --- a/src/materialsystem/stdshaders/stdshader_dx9_sdk.vcxproj +++ b/src/materialsystem/stdshaders/stdshader_dx9_sdk.vcxproj @@ -14,12 +14,14 @@ 17.0 stdshader_dx9 {C8D2DC83-E117-7576-7B43-10C844264C51} + 10.0 DynamicLibrary v143 MultiByte + true DynamicLibrary @@ -46,7 +48,8 @@ true true false - true + false + game_shader_dx9 Release_dx9\ @@ -55,17 +58,20 @@ true false false - true + false + game_shader_dx9 - Publishing to target directory (..\..\game\swarm\bin\)... - if exist "..\..\game\swarm\bin\game_shader_dx9.dll" attrib -r "..\..\game\swarm\bin\game_shader_dx9.dll" - - ..\..\game\swarm\bin\game_shader_dx9.dll;%(Outputs) + + + + + + /MP %(AdditionalOptions) @@ -101,7 +107,7 @@ version.lib;winmm.lib;legacy_stdio_definitions.lib;%(AdditionalDependencies) NotSet - $(OutDir)game_shader_dx9.dll + $(TargetPath) true ..\..\lib\common\.;..\..\lib\public\.;%(AdditionalLibraryDirectories) libc;libcd;libcmtd;%(IgnoreSpecificDefaultLibraries) @@ -124,21 +130,33 @@ $(OutDir)stdshader_dx9.bsc - + setlocal enabledelayedexpansion + +set DestDir=..\..\game\swarm\bin + +if not exist !DestDir! mkdir !DestDir! +if exist !DestDir!\$(TargetFileName) attrib -R !DestDir!\$(TargetFileName) +copy /Y $(TargetPath) !DestDir!\ + + Publishing to target directory (..\..\game\swarm\bin)... + + if exist "$(TargetPath)" attrib -R "$(TargetPath)" + - Publishing to target directory (..\..\game\swarm\bin\)... - if exist "..\..\game\swarm\bin\game_shader_dx9.dll" attrib -r "..\..\game\swarm\bin\game_shader_dx9.dll" - - ..\..\game\swarm\bin\game_shader_dx9.dll;%(Outputs) + + + + + + - /MP %(AdditionalOptions) MaxSpeed AnySuitable true @@ -165,6 +183,8 @@ ProgramDatabase CompileAsCpp Prompt + true + true NDEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) @@ -173,7 +193,7 @@ version.lib;winmm.lib;legacy_stdio_definitions.lib;%(AdditionalDependencies) NotSet - $(OutDir)game_shader_dx9.dll + $(TargetPath) true ..\..\lib\common\.;..\..\lib\public\.;%(AdditionalLibraryDirectories) libc;libcd;libcmtd;%(IgnoreSpecificDefaultLibraries) @@ -188,6 +208,7 @@ MachineX86 PromptImmediately + UseLinkTimeCodeGeneration true @@ -197,8 +218,19 @@ $(OutDir)stdshader_dx9.bsc - + setlocal enabledelayedexpansion + +set DestDir=..\..\game\swarm\bin + +if not exist !DestDir! mkdir !DestDir! +if exist !DestDir!\$(TargetFileName) attrib -R !DestDir!\$(TargetFileName) +copy /Y $(TargetPath) !DestDir!\ + + Publishing to target directory (..\..\game\swarm\bin)... + + if exist "$(TargetPath)" attrib -R "$(TargetPath)" +