Skip to content

shader entity optimizations by removing indirect matrix indexing where possible #4215

shader entity optimizations by removing indirect matrix indexing where possible

shader entity optimizations by removing indirect matrix indexing where possible #4215

Workflow file for this run

name: Pull Request Verification
on:
pull_request
env:
CCACHE_VERSION: 4.12.1
CCACHE_MAXSIZE: 500Mi
# see https://ccache.dev/manual/latest.html#_precompiled_headers
CCACHE_SLOPPINESS: pch_defines,time_macros,include_file_mtime,include_file_ctime
jobs:
windows:
runs-on: windows-latest
env:
# needed on Windows because wiRenderer conditionally includes wiShaderDump.h
# and only our CMake config has a workaround for it
CCACHE_NODIRECT: 1
steps:
- uses: actions/checkout@v4
- uses: microsoft/setup-msbuild@v2
with:
msbuild-architecture: x64
- name: Restore Ccache database
id: restore-ccache
uses: actions/cache/restore@v4
with:
path: C:\Users\runneradmin\AppData\Local\ccache
key: ccache-win-${{ github.run_id }}
restore-keys: ccache-win-
- name: Install Ccache
run: |
curl -sOSL https://github.com/ccache/ccache/releases/download/v$Env:CCACHE_VERSION/ccache-$Env:CCACHE_VERSION-windows-x86_64.zip
unzip -qj ccache-$Env:CCACHE_VERSION-windows-x86_64.zip ccache-$Env:CCACHE_VERSION-windows-x86_64/ccache.exe
mv ccache.exe cl.exe
mv .github/workflows/Directory.Build.props.ghbuild Directory.Build.props
- name: Initial compile
shell: cmd
run: |
MSBuild WickedEngine.sln /t:OfflineShaderCompiler /m /p:Configuration=Release /p:Platform=x64
- name: Generate shader dump
shell: cmd
run: |
cd "WickedEngine"
"../BUILD/x64/Release/OfflineShaderCompiler/OfflineShaderCompiler.exe" hlsl6 spirv shaderdump strip_reflection
- name: Recompile with shader dump
shell: cmd
run: |
MSBuild WickedEngine.sln /t:clean /m /p:Configuration=Release /p:Platform=x64
MSBuild WickedEngine.sln /t:Editor_Windows /m /p:Configuration=Release /p:Platform=x64
- name: Save Ccache database
id: save-ccache
if: always() && steps.restore-ccache.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: C:\Users\runneradmin\AppData\Local\ccache
key: ${{ steps.restore-ccache.outputs.cache-primary-key }}
- name: Move files
shell: cmd
run: |
move BUILD\x64\Release\Editor_Windows\Editor_Windows.exe .\
move Editor\config.ini .\
move Editor\startup.lua .\
move Editor\languages .\
move Editor\fonts .\
- name: Package Editor
uses: actions/upload-artifact@v4
with:
name: Editor (Windows)
path: |
languages/
fonts/
config.ini
startup.lua
Editor_Windows.exe
windows-arm64:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: microsoft/setup-msbuild@v2
with:
msbuild-architecture: x64
- name: Initial compile
shell: cmd
run: |
MSBuild WickedEngine.sln /t:OfflineShaderCompiler /m /p:Configuration=Release /p:Platform=x64
- name: Generate shader dump
shell: cmd
run: |
cd "WickedEngine"
"../BUILD/x64/Release/OfflineShaderCompiler/OfflineShaderCompiler.exe" hlsl6 spirv shaderdump strip_reflection
- name: Recompile with shader dump
shell: cmd
run: |
MSBuild WickedEngine.sln /t:clean /m /p:Configuration=Release /p:Platform=ARM64
MSBuild WickedEngine.sln /t:Editor_Windows /m /p:Configuration=Release /p:Platform=ARM64
- name: Move files
shell: cmd
run: |
move BUILD\ARM64\Release\Editor_Windows\Editor_Windows.exe .\
move Editor\config.ini .\
move Editor\startup.lua .\
move Editor\languages .\
move Editor\fonts .\
- name: Package Editor
uses: actions/upload-artifact@v4
with:
name: Editor (Windows, ARM64)
path: |
languages/
fonts/
config.ini
startup.lua
Editor_Windows.exe
windows_cmake:
# The omission of CCache is intentional.
# This job is only run on PRs, so using CCache isn't worth it
# since PR jobs cannot access each other's cache, only the
# cache from the master branch (which doesn't exist in this case)
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
include:
- name: cmake
cmake_extra_opts: ""
cmake_build_opts: --config Release
editor_path: build\Editor\Release\Editor.exe
- name: cmake clang
cmake_extra_opts: >
-GNinja
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_C_COMPILER=clang
-DCMAKE_CXX_COMPILER=clang++
cmake_build_opts: ""
editor_path: build\Editor\Editor.exe
name: windows (${{ matrix.name }})
steps:
- uses: actions/checkout@v4
- name: Compile with embedded shaders
shell: cmd
run: |
cmake -B build -DWICKED_EMBED_SHADERS=YES -DWICKED_ENABLE_IPO=NO ${{ matrix.cmake_extra_opts }}
cmake --build build ${{ matrix.cmake_build_opts }} --parallel
- name: Move files
shell: cmd
run: |
move ${{ matrix.editor_path }} .\Editor_Windows.exe
move Editor\config.ini .\
move Editor\startup.lua .\
move Editor\languages .\
move Editor\fonts .\
- name: Package Editor
uses: actions/upload-artifact@v4
with:
name: Editor (Windows) [${{ matrix.name }} build]
path: |
languages/
fonts/
config.ini
startup.lua
Editor_Windows.exe
linux:
runs-on: ubuntu-latest
name: linux (${{ matrix.cc }})
strategy:
fail-fast: false
matrix:
include:
- cc: gcc
cxx: g++
package_bins: true
- cc: clang
cxx: clang++
package_bins: false
steps:
- uses: actions/checkout@v4
- name: Restore Ccache database
id: restore-ccache
uses: actions/cache/restore@v4
with:
path: ~/.cache/ccache
key: ccache-${{ matrix.cc }}-${{ github.run_id }}
restore-keys: ccache-${{ matrix.cc }}-
- name: Install dependencies
run: |
sudo apt update
sudo apt install libsdl2-dev ccache
- name: Compile with embedded shaders
run: |
CC=${{ matrix.cc }} CXX=${{ matrix.cxx }} cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DWICKED_ENABLE_IPO=NO -DWICKED_EMBED_SHADERS=YES
make -C build -j$(nproc)
- name: Save Ccache database
id: save-ccache
if: always() && steps.restore-ccache.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: ~/.cache/ccache
key: ${{ steps.restore-ccache.outputs.cache-primary-key }}
- name: Move binaries
if: matrix.package_bins
run: |
mv build/Editor/Editor ./Editor_Linux
mv Editor/config.ini ./
mv Editor/startup.lua ./
mv Editor/fonts ./
- name: Package Editor
if: matrix.package_bins
uses: actions/upload-artifact@v4
with:
name: Editor (Linux)
path: |
fonts/
config.ini
startup.lua
Editor_Linux
macos:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Compile Offlineshadercompiler
run: |
xcodebuild clean build -project WickedEngine/offlineshadercompiler.xcodeproj -scheme offlineshadercompiler -configuration Release
- name: Generate shader dump
run: |
BUILD_PATH="$(xcodebuild -project WickedEngine/offlineshadercompiler.xcodeproj -scheme offlineshadercompiler -configuration Release -showBuildSettings | grep -m 1 "BUILT_PRODUCTS_DIR" | awk -F' = ' '{print $2}')"
cd WickedEngine
"${BUILD_PATH}/offlineshadercompiler" metal rebuild shaderdump
cd ..
- name: Build Editor
run: |
xcodebuild clean build -project Editor/Editor.xcodeproj -scheme Editor -configuration Release
- name: Move files
run: |
BUILD_PATH="$(xcodebuild -project Editor/Editor.xcodeproj -scheme Editor -configuration Release -showBuildSettings | grep -m 1 "BUILT_PRODUCTS_DIR" | awk -F' = ' '{print $2}')"
mv "${BUILD_PATH}/Editor" ./Editor_MacOS
mv Editor/config.ini ./
mv Editor/startup.lua ./
mv Editor/languages ./
mv Editor/fonts ./
- name: Package Editor
uses: actions/upload-artifact@v4
with:
name: Editor (Mac OS)
path: |
languages/
fonts/
config.ini
startup.lua
Editor_MacOS
ios:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Compile Offlineshadercompiler
run: |
xcodebuild clean build \
-project WickedEngine/offlineshadercompiler.xcodeproj \
-scheme offlineshadercompiler \
-configuration Release
- name: Generate shader dump
run: |
BUILD_PATH="$(xcodebuild -project WickedEngine/offlineshadercompiler.xcodeproj -scheme offlineshadercompiler -configuration Release -showBuildSettings | grep -m 1 "BUILT_PRODUCTS_DIR" | awk -F' = ' '{print $2}')"
cd WickedEngine
"${BUILD_PATH}/offlineshadercompiler" metal rebuild shaderdump
cd ..
- name: Build Editor_iOS
run: |
xcodebuild clean build \
-project Editor/Editor.xcodeproj \
-scheme Editor_iOS \
-configuration Release \
-sdk iphoneos \
CODE_SIGNING_ALLOWED=NO \
CODE_SIGNING_REQUIRED=NO
- name: Move files
run: |
BUILD_PATH="$(xcodebuild -project Editor/Editor.xcodeproj -scheme Editor_iOS -configuration Release -sdk iphoneos -showBuildSettings | grep -m 1 "BUILT_PRODUCTS_DIR" | awk -F' = ' '{print $2}')"
mv "${BUILD_PATH}/Editor_iOS.app" ./Editor_iOS.app
- name: Package Editor
uses: actions/upload-artifact@v4
with:
name: Editor (iOS)
path: |
Editor_iOS.app
content:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Package Content
uses: actions/upload-artifact@v4
with:
name: Content
path: |
Content/Documentation
Content/models
Content/scripts
Content/terrain