Update end-to-end rendering deployment example

This commit is contained in:
Rick Shahid 2022-11-11 08:52:53 -08:00
Родитель f0557e73fa
Коммит e9e1747d87
3 изменённых файлов: 100 добавлений и 48 удалений

Просмотреть файл

@ -29,7 +29,7 @@ imageGallery = {
generation = "V2" generation = "V2"
publisher = "MicrosoftWindowsDesktop" publisher = "MicrosoftWindowsDesktop"
offer = "Windows-10" offer = "Windows-10"
sku = "Win10-21H2-Pro-G2" sku = "Win10-22H2-Pro-G2"
}, },
{ {
name = "WinArtist" name = "WinArtist"
@ -93,7 +93,7 @@ imageTemplates = [
} }
}, },
{ {
name = "LnxFarmBatch" name = "LnxFarmPBRT"
image = { image = {
definitionName = "Linux" definitionName = "Linux"
customizeScript = "customize.sh" customizeScript = "customize.sh"
@ -110,10 +110,7 @@ imageTemplates = [
runElevated = false runElevated = false
renderManager = "" renderManager = ""
renderEngines = [ renderEngines = [
"Blender", "PBRT,Moana"
"PBRT",
"Unity",
"Unreal"
] ]
} }
}, },
@ -187,6 +184,28 @@ imageTemplates = [
] ]
} }
}, },
{
name = "WinFarmPBRT"
image = {
definitionName = "WinFarm"
customizeScript = "customize.ps1"
terminateScript1 = "terminate.ps1"
terminateScript2 = "onTerminate.ps1"
inputVersion = "Latest"
}
build = {
machineType = "Farm"
machineSize = "Standard_HB120rs_v2" # https://learn.microsoft.com/azure/virtual-machines/sizes
osDiskSizeGB = 480 # https://learn.microsoft.com/azure/virtual-machines/linux/image-builder-json#osdisksizegb
timeoutMinutes = 420 # https://learn.microsoft.com/azure/virtual-machines/linux/image-builder-json#properties-buildtimeoutinminutes
outputVersion = "1.0.0"
runElevated = false
renderManager = ""
renderEngines = [
"PBRT,Moana"
]
}
},
{ {
name = "WinArtist" name = "WinArtist"
image = { image = {

Просмотреть файл

@ -37,21 +37,18 @@ Start-Process -FilePath $installFile -ArgumentList "/SILENT /NORESTART" -Wait
$toolPathGit = "C:\Program Files\Git\bin" $toolPathGit = "C:\Program Files\Git\bin"
Write-Host "Customize (End): Git" Write-Host "Customize (End): Git"
Write-Host "Customize (Start): Visual Studio" Write-Host "Customize (Start): Visual Studio Build Tools"
$versionInfo = "2022" $versionInfo = "2022"
$installFile = "VisualStudioSetup.exe" $installFile = "vs_buildtools.exe"
$downloadUrl = "$storageContainerUrl/VS/$versionInfo/$installFile$storageContainerSas" $downloadUrl = "https://aka.ms/vs/17/release/$installFile"
$workloadIds = "--add Microsoft.VisualStudio.Workload.ManagedDesktop;includeRecommended"
$workloadIds += " --add Microsoft.VisualStudio.Workload.NativeDesktop;includeRecommended"
$workloadIds += " --add Microsoft.VisualStudio.Workload.NativeGame;includeRecommended"
$workloadIds += " --add Microsoft.NetCore.Component.Runtime.3.1"
$workloadIds += " --add Component.Unreal"
Invoke-WebRequest -OutFile $installFile -Uri $downloadUrl Invoke-WebRequest -OutFile $installFile -Uri $downloadUrl
Start-Process -FilePath $installFile -ArgumentList "--quiet --norestart $workloadIds" -Wait $componentIds = "--add Microsoft.VisualStudio.Component.Windows11SDK.22621"
$toolPathVSIX = "C:\Program Files\Microsoft Visual Studio\$versionInfo\Community\Common7\IDE" $componentIds += " --add Microsoft.VisualStudio.Component.VC.CMake.Project"
$toolPathCMake = "C:\Program Files\Microsoft Visual Studio\$versionInfo\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin" $componentIds += " --add Microsoft.NetCore.Component.Runtime.3.1"
$toolPathMSBuild = "C:\Program Files\Microsoft Visual Studio\$versionInfo\Community\Msbuild\Current\Bin" Start-Process -FilePath $installFile -ArgumentList "--quiet --norestart $componentIds" -Wait
Write-Host "Customize (End): Visual Studio" $toolPathCMake = "C:\Program Files (x86)\Microsoft Visual Studio\$versionInfo\BuildTools\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin"
$toolPathMSBuild = "C:\Program Files (x86)\Microsoft Visual Studio\$versionInfo\BuildTools\MSBuild\Current\Bin"
Write-Host "Customize (End): Visual Studio Build Tools"
Write-Host "Customize (Start): Python" Write-Host "Customize (Start): Python"
$versionInfo = "3.11.0" $versionInfo = "3.11.0"
@ -67,20 +64,20 @@ Write-Host "Customize (End): Python"
if (($machineSize.StartsWith("Standard_NV") -and $machineSize.EndsWith("_v5")) -or if (($machineSize.StartsWith("Standard_NV") -and $machineSize.EndsWith("_v5")) -or
($machineSize.StartsWith("Standard_NC") -and $machineSize.EndsWith("_T4_v3")) -or ($machineSize.StartsWith("Standard_NC") -and $machineSize.EndsWith("_T4_v3")) -or
($machineSize.StartsWith("Standard_NV") -and $machineSize.EndsWith("_v3"))) { ($machineSize.StartsWith("Standard_NV") -and $machineSize.EndsWith("_v3"))) {
Write-Host "Customize (Start): NVIDIA GPU Driver (GRID)" Write-Host "Customize (Start): NVIDIA GPU (GRID)"
$installFile = "nvidia-gpu-grid.exe" $installFile = "nvidia-gpu-grid.exe"
$downloadUrl = "https://go.microsoft.com/fwlink/?linkid=874181" $downloadUrl = "https://go.microsoft.com/fwlink/?linkid=874181"
Invoke-WebRequest -OutFile $installFile -Uri $downloadUrl Invoke-WebRequest -OutFile $installFile -Uri $downloadUrl
Start-Process -FilePath $installFile -ArgumentList "/s /noreboot" -Wait Start-Process -FilePath $installFile -ArgumentList "/s /noreboot" -Wait
Write-Host "Customize (End): NVIDIA GPU Driver (GRID)" Write-Host "Customize (End): NVIDIA GPU (GRID)"
} elseif ($machineSize.StartsWith("Standard_N")) { } elseif ($machineSize.StartsWith("Standard_N")) {
Write-Host "Customize (Start): NVIDIA GPU Driver (CUDA)" Write-Host "Customize (Start): NVIDIA GPU (CUDA)"
$versionInfo = "11.8.0" $versionInfo = "11.8.0"
$installFile = "cuda_${versionInfo}_522.06_windows.exe" $installFile = "cuda_${versionInfo}_522.06_windows.exe"
$downloadUrl = "$storageContainerUrl/NVIDIA/CUDA/$versionInfo/$installFile$storageContainerSas" $downloadUrl = "$storageContainerUrl/NVIDIA/CUDA/$versionInfo/$installFile$storageContainerSas"
Invoke-WebRequest -OutFile $installFile -Uri $downloadUrl Invoke-WebRequest -OutFile $installFile -Uri $downloadUrl
Start-Process -FilePath $installFile -ArgumentList "/s /noreboot" -Wait Start-Process -FilePath $installFile -ArgumentList "/s /noreboot" -Wait
Write-Host "Customize (End): NVIDIA GPU Driver (CUDA)" Write-Host "Customize (End): NVIDIA GPU (CUDA)"
} }
if ($machineType -eq "Scheduler") { if ($machineType -eq "Scheduler") {
@ -191,18 +188,38 @@ if ($renderEngines -like "*Blender*") {
if ($renderEngines -like "*PBRT*") { if ($renderEngines -like "*PBRT*") {
Write-Host "Customize (Start): PBRT v3" Write-Host "Customize (Start): PBRT v3"
$versionInfo = "v3" $versionInfo = "v3"
Start-Process -FilePath "$toolPathGit\git.exe" -ArgumentList "clone --recursive https://github.com/mmp/pbrt-$versionInfo.git" -Wait Start-Process -FilePath "$toolPathGit\git.exe" -ArgumentList "clone --recursive https://github.com/mmp/pbrt-$versionInfo.git" -Wait -RedirectStandardOutput "pbrt-$versionInfo.git.output.txt" -RedirectStandardError "pbrt-$versionInfo.git.error.txt"
Start-Process -FilePath "$toolPathCMake\cmake.exe" -ArgumentList "-B ""$rendererPathPBRT3"" -S $binDirectory\pbrt-$versionInfo" -Wait Start-Process -FilePath "$toolPathCMake\cmake.exe" -ArgumentList "-B ""$rendererPathPBRT3"" -S $binDirectory\pbrt-$versionInfo" -Wait -RedirectStandardOutput "pbrt-$versionInfo.cmake.output.txt" -RedirectStandardError "pbrt-$versionInfo.cmake.error.txt"
Start-Process -FilePath "$toolPathMSBuild\MSBuild.exe" -ArgumentList """$rendererPathPBRT3\PBRT-$versionInfo.sln"" -p:Configuration=Release" -Wait Start-Process -FilePath "$toolPathMSBuild\MSBuild.exe" -ArgumentList """$rendererPathPBRT3\PBRT-$versionInfo.sln"" -p:Configuration=Release" -Wait -RedirectStandardOutput "pbrt-$versionInfo.msbuild.output.txt" -RedirectStandardError "pbrt-$versionInfo.msbuild.error.txt"
New-Item -ItemType SymbolicLink -Target "$rendererPathPBRT3\Release\pbrt.exe" -Path "C:\Program Files\pbrt3" New-Item -ItemType SymbolicLink -Target "$rendererPathPBRT3\Release\pbrt.exe" -Path "C:\Windows\pbrt3"
Write-Host "Customize (End): PBRT v3" Write-Host "Customize (End): PBRT v3"
Write-Host "Customize (Start): PBRT v4" Write-Host "Customize (Start): PBRT v4"
$versionInfo = "v4" $versionInfo = "v4"
Start-Process -FilePath "$toolPathGit\git.exe" -ArgumentList "clone --recursive https://github.com/mmp/pbrt-$versionInfo.git" -Wait Start-Process -FilePath "$toolPathGit\git.exe" -ArgumentList "clone --recursive https://github.com/mmp/pbrt-$versionInfo.git" -Wait -RedirectStandardOutput "pbrt-$versionInfo.git.output.txt" -RedirectStandardError "pbrt-$versionInfo.git.error.txt"
Start-Process -FilePath "$toolPathCMake\cmake.exe" -ArgumentList "-B ""$rendererPathPBRT4"" -S $binDirectory\pbrt-$versionInfo" -Wait Start-Process -FilePath "$toolPathCMake\cmake.exe" -ArgumentList "-B ""$rendererPathPBRT4"" -S $binDirectory\pbrt-$versionInfo" -Wait -RedirectStandardOutput "pbrt-$versionInfo.cmake.output.txt" -RedirectStandardError "pbrt-$versionInfo.cmake.error.txt"
Start-Process -FilePath "$toolPathMSBuild\MSBuild.exe" -ArgumentList """$rendererPathPBRT4\PBRT-$versionInfo.sln"" -p:Configuration=Release" -Wait Start-Process -FilePath "$toolPathMSBuild\MSBuild.exe" -ArgumentList """$rendererPathPBRT4\PBRT-$versionInfo.sln"" -p:Configuration=Release" -Wait -RedirectStandardOutput "pbrt-$versionInfo.msbuild.output.txt" -RedirectStandardError "pbrt-$versionInfo.msbuild.error.txt"
New-Item -ItemType SymbolicLink -Target "$rendererPathPBRT4\Release\pbrt.exe" -Path "C:\Program Files\pbrt4" New-Item -ItemType SymbolicLink -Target "$rendererPathPBRT4\Release\pbrt.exe" -Path "C:\Windows\pbrt4"
Write-Host "Customize (End): PBRT v4" Write-Host "Customize (End): PBRT v4"
if ($renderEngines -like "*PBRT,Moana*") {
Write-Host "Customize (Start): PBRT (Moana Island)"
$dataDirectory = "moana"
New-Item -ItemType Directory -Path $dataDirectory -Force
Set-Location -Path $dataDirectory
$installFile = "island-basepackage-v1.1.tgz"
$downloadUrl = "$storageContainerUrl/PBRT/Moana/$installFile$storageContainerSas"
Invoke-WebRequest -OutFile $installFile -Uri $downloadUrl
tar -xzf $installFile
$installFile = "island-pbrt-v1.1.tgz"
$downloadUrl = "$storageContainerUrl/PBRT/Moana/$installFile$storageContainerSas"
Invoke-WebRequest -OutFile $installFile -Uri $downloadUrl
tar -xzf $installFile
$installFile = "island-pbrtV4-v2.0.tgz"
$downloadUrl = "$storageContainerUrl/PBRT/Moana/$installFile$storageContainerSas"
Invoke-WebRequest -OutFile $installFile -Uri $downloadUrl
tar -xzf $installFile
Set-Location -Path $binDirectory
Write-Host "Customize (End): PBRT (Moana Island)"
}
} }
if ($renderEngines -like "*Unity*") { if ($renderEngines -like "*Unity*") {
@ -238,10 +255,6 @@ if ($renderEngines -like "*Unreal*") {
[System.Environment]::SetEnvironmentVariable("PATH", "$env:PATH;C:\Program Files\dotnet") [System.Environment]::SetEnvironmentVariable("PATH", "$env:PATH;C:\Program Files\dotnet")
Start-Process -FilePath "$toolPathMSBuild\MSBuild.exe" -ArgumentList "-restore -p:Platform=Win64 -p:Configuration=""Development Editor"" ""$rendererPathUnreal\UE5.sln""" -Wait Start-Process -FilePath "$toolPathMSBuild\MSBuild.exe" -ArgumentList "-restore -p:Platform=Win64 -p:Configuration=""Development Editor"" ""$rendererPathUnreal\UE5.sln""" -Wait
Write-Host "Customize (End): Unreal Project Files" Write-Host "Customize (End): Unreal Project Files"
Write-Host "Customize (Start): Unreal Visual Studio Plugin"
$installFile = "UnrealVS.vsix"
Start-Process -FilePath "$toolPathVSIX\VSIXInstaller.exe" -ArgumentList "/quiet /admin ""$rendererPathUnreal\Engine\Extras\UnrealVS\$installFile""" -Wait
Write-Host "Customize (End): Unreal Visual Studio Plugin"
Write-Host "Customize (Start): Unreal Editor Shortcut" Write-Host "Customize (Start): Unreal Editor Shortcut"
$shortcutPath = "$env:AllUsersProfile\Desktop\Epic Unreal Editor.lnk" $shortcutPath = "$env:AllUsersProfile\Desktop\Epic Unreal Editor.lnk"
$scriptShell = New-Object -ComObject WScript.Shell $scriptShell = New-Object -ComObject WScript.Shell

Просмотреть файл

@ -34,7 +34,7 @@ echo "Customize (End): Build Platform"
if [[ ($machineSize == Standard_NV* && $machineSize == *_v5) || if [[ ($machineSize == Standard_NV* && $machineSize == *_v5) ||
($machineSize == Standard_NC* && $machineSize == *_T4_v3) || ($machineSize == Standard_NC* && $machineSize == *_T4_v3) ||
($machineSize == Standard_NV* && $machineSize == *_v3) ]]; then ($machineSize == Standard_NV* && $machineSize == *_v3) ]]; then
echo "Customize (Start): NVIDIA GPU Driver (GRID)" echo "Customize (Start): NVIDIA GPU (GRID)"
dnf -y install "kernel-devel-$(uname --kernel-release)" dnf -y install "kernel-devel-$(uname --kernel-release)"
dnf -y install elfutils-libelf-devel dnf -y install elfutils-libelf-devel
installFile="nvidia-gpu-grid.run" installFile="nvidia-gpu-grid.run"
@ -42,12 +42,12 @@ if [[ ($machineSize == Standard_NV* && $machineSize == *_v5) ||
curl -o $installFile -L $downloadUrl curl -o $installFile -L $downloadUrl
chmod +x $installFile chmod +x $installFile
./$installFile --silent ./$installFile --silent
echo "Customize (End): NVIDIA GPU Driver (GRID)" echo "Customize (End): NVIDIA GPU (GRID)"
elif [[ $machineSize == Standard_N* ]]; then elif [[ $machineSize == Standard_N* ]]; then
echo "Customize (Start): NVIDIA GPU Driver (CUDA)" echo "Customize (Start): NVIDIA GPU (CUDA)"
dnf config-manager --add-repo http://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.repo dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.repo
dnf -y install cuda-drivers dnf -y install cuda
echo "Customize (End): NVIDIA GPU Driver (CUDA)" echo "Customize (End): NVIDIA GPU (CUDA)"
fi fi
if [ $machineType == "Scheduler" ]; then if [ $machineType == "Scheduler" ]; then
@ -232,10 +232,10 @@ fi
if [[ $renderEngines == *PBRT* ]]; then if [[ $renderEngines == *PBRT* ]]; then
echo "Customize (Start): PBRT v3" echo "Customize (Start): PBRT v3"
versionInfo="v3" versionInfo="v3"
git clone --recursive https://github.com/mmp/pbrt-$versionInfo.git git clone --recursive https://github.com/mmp/pbrt-$versionInfo.git 1> pbrt-$versionInfo.git.output.txt 2> pbrt-$versionInfo.git.error.txt
mkdir -p $rendererPathPBRT3 mkdir -p $rendererPathPBRT3
cmake -B $rendererPathPBRT3 -S $binDirectory/pbrt-$versionInfo/ cmake -B $rendererPathPBRT3 -S $binDirectory/pbrt-$versionInfo 1> pbrt-$versionInfo.cmake.output.txt 2> pbrt-$versionInfo.cmake.error.txt
make -C $rendererPathPBRT3 -j $(nproc) make -j -C $rendererPathPBRT3 1> pbrt-$versionInfo.make.output.txt 2> pbrt-$versionInfo.make.error.txt
ln -s $rendererPathPBRT3/pbrt /usr/bin/pbrt3 ln -s $rendererPathPBRT3/pbrt /usr/bin/pbrt3
echo "Customize (End): PBRT v3" echo "Customize (End): PBRT v3"
echo "Customize (Start): PBRT v4" echo "Customize (Start): PBRT v4"
@ -245,12 +245,32 @@ if [[ $renderEngines == *PBRT* ]]; then
dnf -y install libXcursor-devel dnf -y install libXcursor-devel
dnf -y install libXi-devel dnf -y install libXi-devel
versionInfo="v4" versionInfo="v4"
git clone --recursive https://github.com/mmp/pbrt-$versionInfo.git git clone --recursive https://github.com/mmp/pbrt-$versionInfo.git 1> pbrt-$versionInfo.git.output.txt 2> pbrt-$versionInfo.git.error.txt
mkdir -p $rendererPathPBRT4 mkdir -p $rendererPathPBRT4
cmake -B $rendererPathPBRT4 -S $binDirectory/pbrt-$versionInfo/ cmake -B $rendererPathPBRT4 -S $binDirectory/pbrt-$versionInfo 1> pbrt-$versionInfo.cmake.output.txt 2> pbrt-$versionInfo.cmake.error.txt
make -C $rendererPathPBRT4 -j $(nproc) make -j -C $rendererPathPBRT4 1> pbrt-$versionInfo.make.output.txt 2> pbrt-$versionInfo.make.error.txt
ln -s $rendererPathPBRT4/pbrt /usr/bin/pbrt4 ln -s $rendererPathPBRT4/pbrt /usr/bin/pbrt4
echo "Customize (End): PBRT v4" echo "Customize (End): PBRT v4"
if [[ $renderEngines == *PBRT,Moana* ]]; then
echo "Customize (Start): PBRT (Moana Island)"
dataDirectory="moana"
mkdir $dataDirectory
cd $dataDirectory
installFile="island-basepackage-v1.1.tgz"
downloadUrl="$storageContainerUrl/PBRT/Moana/$installFile$storageContainerSas"
curl -o $installFile -L $downloadUrl
tar -xzf $installFile
installFile="island-pbrt-v1.1.tgz"
downloadUrl="$storageContainerUrl/PBRT/Moana/$installFile$storageContainerSas"
curl -o $installFile -L $downloadUrl
tar -xzf $installFile
installFile="island-pbrtV4-v2.0.tgz"
downloadUrl="$storageContainerUrl/PBRT/Moana/$installFile$storageContainerSas"
curl -o $installFile -L $downloadUrl
tar -xzf $installFile
cd $binDirectory
echo "Customize (End): PBRT (Moana Island)"
fi
fi fi
if [[ $renderEngines == *Unity* ]]; then if [[ $renderEngines == *Unity* ]]; then
@ -283,7 +303,7 @@ if [[ $renderEngines == *Unreal* ]]; then
if [ $machineType == "Workstation" ]; then if [ $machineType == "Workstation" ]; then
echo "Customize (Start): Unreal Project Files" echo "Customize (Start): Unreal Project Files"
$rendererPathUnreal/GenerateProjectFiles.sh $rendererPathUnreal/GenerateProjectFiles.sh
make -C $rendererPathUnreal -j $(nproc) make -j -C $rendererPathUnreal
echo "Customize (End): Unreal Project Files" echo "Customize (End): Unreal Project Files"
fi fi
echo "Customize (End): Unreal" echo "Customize (End): Unreal"