summaryrefslogtreecommitdiff
path: root/materialsystem/stdshaders/buildshaders.bat
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /materialsystem/stdshaders/buildshaders.bat
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'materialsystem/stdshaders/buildshaders.bat')
-rw-r--r--materialsystem/stdshaders/buildshaders.bat258
1 files changed, 258 insertions, 0 deletions
diff --git a/materialsystem/stdshaders/buildshaders.bat b/materialsystem/stdshaders/buildshaders.bat
new file mode 100644
index 0000000..cc1bc6b
--- /dev/null
+++ b/materialsystem/stdshaders/buildshaders.bat
@@ -0,0 +1,258 @@
+@echo off
+
+set TTEXE=..\..\devtools\bin\timeprecise.exe
+if not exist %TTEXE% goto no_ttexe
+goto no_ttexe_end
+
+:no_ttexe
+set TTEXE=time /t
+:no_ttexe_end
+
+echo.
+rem echo ==================== buildshaders %* ==================
+%TTEXE% -cur-Q
+set tt_start=%ERRORLEVEL%
+set tt_chkpt=%tt_start%
+
+
+REM ****************
+REM usage: buildshaders <shaderProjectName> [-x360]
+REM ****************
+
+setlocal
+set arg_filename=%1
+rem set shadercompilecommand=echo shadercompile.exe -mpi_graphics -mpi_TrackEvents
+set shadercompilecommand=shadercompile.exe
+set shadercompileworkers=128
+set x360_args=
+set targetdir=..\..\..\game\hl2\shaders
+set SrcDirBase=..\..
+set ChangeToDir=../../../game/bin
+set shaderDir=shaders
+set SDKArgs=
+set SHADERINCPATH=vshtmp9/... fxctmp9/...
+
+
+set DIRECTX_SDK_VER=pc09.00
+set DIRECTX_SDK_BIN_DIR=dx9sdk\utilities
+
+if /i "%2" == "-x360" goto dx_sdk_x360
+if /i "%2" == "-dx9_30" goto dx_sdk_dx9_30
+if /i "%2" == "-dx10" goto dx_sdk_dx10
+goto dx_sdk_end
+:dx_sdk_x360
+ set DIRECTX_SDK_VER=x360.00
+ set DIRECTX_SDK_BIN_DIR=x360xdk\bin\win32
+ goto dx_sdk_end
+:dx_sdk_dx9_30
+ set DIRECTX_SDK_VER=pc09.30
+ set DIRECTX_SDK_BIN_DIR=dx10sdk\utilities\dx9_30
+ goto dx_sdk_end
+:dx_sdk_dx10
+ set DIRECTX_SDK_VER=pc10.00
+ set DIRECTX_SDK_BIN_DIR=dx10sdk\utilities\dx10_40
+ goto dx_sdk_end
+:dx_sdk_end
+
+if "%1" == "" goto usage
+set inputbase=%1
+
+if /i "%3" == "-force30" goto set_force30_arg
+goto set_force_end
+:set_force30_arg
+ set DIRECTX_FORCE_MODEL=30
+ goto set_force_end
+:set_force_end
+
+if /i "%2" == "-x360" goto set_x360_args
+if /i "%2" == "-game" goto set_mod_args
+goto build_shaders
+
+REM ****************
+REM USAGE
+REM ****************
+:usage
+echo.
+echo "usage: buildshaders <shaderProjectName> [-x360 or -dx10 or -game] [gameDir if -game was specified] [-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"
+echo "ex : buildshaders myshaders -game c:\steam\steamapps\sourcemods\mymod -source c:\mymod\src"
+goto :end
+
+REM ****************
+REM X360 ARGS
+REM ****************
+:set_x360_args
+set x360_args=-x360
+set SHADERINCPATH=vshtmp9_360/... fxctmp9_360/...
+goto build_shaders
+
+REM ****************
+REM MOD ARGS - look for -game or the vproject environment variable
+REM ****************
+:set_mod_args
+
+if not exist %sourcesdk%\bin\shadercompile.exe goto NoShaderCompile
+set ChangeToDir=%sourcesdk%\bin
+
+if /i "%4" NEQ "-source" goto NoSourceDirSpecified
+set SrcDirBase=%~5
+
+REM ** use the -game parameter to tell us where to put the files
+set targetdir=%~3\shaders
+set SDKArgs=-nompi -game "%~3"
+
+if not exist "%~3\gameinfo.txt" goto InvalidGameDirectory
+goto build_shaders
+
+REM ****************
+REM ERRORS
+REM ****************
+:InvalidGameDirectory
+echo -
+echo Error: "%~3" is not a valid game directory.
+echo (The -game directory must have a gameinfo.txt file)
+echo -
+goto end
+
+:NoSourceDirSpecified
+echo ERROR: If you specify -game on the command line, you must specify -source.
+goto usage
+goto end
+
+:NoShaderCompile
+echo -
+echo - ERROR: shadercompile.exe doesn't exist in %sourcesdk%\bin
+echo -
+goto end
+
+REM ****************
+REM BUILD SHADERS
+REM ****************
+:build_shaders
+
+rem echo --------------------------------
+rem echo %inputbase%
+rem echo --------------------------------
+REM make sure that target dirs exist
+REM files will be built in these targets and copied to their final destination
+if not exist %shaderDir% mkdir %shaderDir%
+if not exist %shaderDir%\fxc mkdir %shaderDir%\fxc
+if not exist %shaderDir%\vsh mkdir %shaderDir%\vsh
+if not exist %shaderDir%\psh mkdir %shaderDir%\psh
+REM Nuke some files that we will add to later.
+if exist filelist.txt del /f /q filelist.txt
+if exist filestocopy.txt del /f /q filestocopy.txt
+if exist filelistgen.txt del /f /q filelistgen.txt
+if exist inclist.txt del /f /q inclist.txt
+if exist vcslist.txt del /f /q vcslist.txt
+
+
+REM ****************
+REM Revert any targets (vcs or inc) that are opened for integrate.
+REM ****************
+perl "%SrcDirBase%\devtools\bin\p4revertshadertargets.pl" %x360_args% -source "%SrcDirBase%" %inputbase%
+
+REM ****************
+REM Generate a makefile for the shader project
+REM ****************
+perl "%SrcDirBase%\devtools\bin\updateshaders.pl" %x360_args% -source "%SrcDirBase%" %inputbase%
+
+
+REM ****************
+REM Run the makefile, generating minimal work/build list for fxc files, go ahead and compile vsh and psh files.
+REM ****************
+rem nmake /S /C -f makefile.%inputbase% clean > clean.txt 2>&1
+echo Building inc files, asm vcs files, and VMPI worklist for %inputbase%...
+nmake /S /C -f makefile.%inputbase%
+
+REM ****************
+REM Copy the inc files to their target
+REM ****************
+if exist "inclist.txt" (
+ echo Publishing shader inc files to target...
+ perl %SrcDirBase%\devtools\bin\copyshaderincfiles.pl inclist.txt %x360_args%
+)
+
+REM ****************
+REM Deal with perforce operations for inc files
+REM ****************
+if exist inclist.txt if not "%VALVE_NO_AUTO_P4_SHADERS%" == "1" (
+ echo Executing perforce operations on .inc files.
+ perl ..\..\devtools\bin\p4autocheckout.pl inclist.txt "Shader Auto Checkout INC" . %SHADERINCPATH%
+)
+
+REM ****************
+REM Add the executables to the worklist.
+REM ****************
+if /i "%DIRECTX_SDK_VER%" == "pc09.00" (
+ rem echo "Copy extra files for dx 9 std
+)
+if /i "%DIRECTX_SDK_VER%" == "pc09.30" (
+ echo %SrcDirBase%\devtools\bin\d3dx9_33.dll >> filestocopy.txt
+)
+if /i "%DIRECTX_SDK_VER%" == "pc10.00" (
+ echo %SrcDirBase%\devtools\bin\d3dx10_33.dll >> filestocopy.txt
+)
+if /i "%DIRECTX_SDK_VER%" == "x360.00" (
+ rem echo "Copy extra files for xbox360
+)
+
+echo %SrcDirBase%\%DIRECTX_SDK_BIN_DIR%\dx_proxy.dll >> filestocopy.txt
+
+echo %SrcDirBase%\..\game\bin\shadercompile.exe >> filestocopy.txt
+echo %SrcDirBase%\..\game\bin\shadercompile_dll.dll >> filestocopy.txt
+echo %SrcDirBase%\..\game\bin\vstdlib.dll >> filestocopy.txt
+echo %SrcDirBase%\..\game\bin\tier0.dll >> filestocopy.txt
+
+REM ****************
+REM Cull duplicate entries in work/build list
+REM ****************
+if exist filestocopy.txt type filestocopy.txt | perl "%SrcDirBase%\devtools\bin\uniqifylist.pl" > uniquefilestocopy.txt
+if exist filelistgen.txt if not "%dynamic_shaders%" == "1" (
+ echo Generating action list...
+ copy filelistgen.txt filelist.txt >nul
+ rem %SrcDirBase%\devtools\bin\fxccombogen.exe <filelistgen.txt 1>nul 2>filelist.txt
+)
+
+REM ****************
+REM Execute distributed process on work/build list
+REM ****************
+
+set shader_path_cd=%cd%
+if exist "filelist.txt" if exist "uniquefilestocopy.txt" if not "%dynamic_shaders%" == "1" (
+ echo Running distributed shader compilation...
+ cd %ChangeToDir%
+ %shadercompilecommand% -mpi_workercount %shadercompileworkers% -allowdebug -shaderpath "%shader_path_cd:/=\%" %x360_args% %SDKArgs%
+ cd %shader_path_cd%
+)
+
+
+REM ****************
+REM PC and 360 Shader copy
+REM Publish the generated files to the output dir using ROBOCOPY (smart copy) or XCOPY
+REM This batch file may have been invoked standalone or slaved (master does final smart mirror copy)
+REM ****************
+if not "%dynamic_shaders%" == "1" (
+ if exist makefile.%inputbase%.copy echo Publishing shaders to target...
+ if exist makefile.%inputbase%.copy perl %SrcDirBase%\devtools\bin\copyshaders.pl makefile.%inputbase%.copy %x360_args%
+)
+
+REM ****************
+REM Deal with perforce operations for vcs files
+REM ****************
+if not "%dynamic_shaders%" == "1" if exist vcslist.txt if not "%VALVE_NO_AUTO_P4_SHADERS%" == "1" (
+ echo Executing perforce operations on .vcs files.
+ perl ..\..\devtools\bin\p4autocheckout.pl vcslist.txt "Shader Auto Checkout VCS" ../../../game/hl2/shaders ../../../game/hl2/shaders/...
+)
+
+REM ****************
+REM END
+REM ****************
+:end
+
+
+%TTEXE% -diff %tt_start%
+echo.
+