mirror of
https://github.com/GayPizzaSpecifications/voxelotl-engine.git
synced 2025-08-02 13:00:53 +00:00
68 lines
2.0 KiB
Bash
Executable File
Vendored
68 lines
2.0 KiB
Bash
Executable File
Vendored
#!/bin/bash
|
|
|
|
set -x
|
|
set -e
|
|
cd `dirname "$0"`
|
|
|
|
shadernames=(FullscreenVert BlitFrom2D BlitFrom2DArray BlitFrom3D BlitFromCube)
|
|
|
|
generate_shaders()
|
|
{
|
|
fileplatform=$1
|
|
compileplatform=$2
|
|
sdkplatform=$3
|
|
minversion=$4
|
|
|
|
for shadername in "${shadernames[@]}"; do
|
|
xcrun -sdk $sdkplatform metal -c -std=$compileplatform-metal1.1 -m$sdkplatform-version-min=$minversion -Wall -O3 -D COMPILE_$shadername -o ./$shadername.air ./Metal_Blit.metal || exit $?
|
|
xcrun -sdk $sdkplatform metallib -o $shadername.metallib $shadername.air || exit $?
|
|
xxd -i $shadername.metallib | perl -w -p -e 's/\Aunsigned /const unsigned /;' >./${shadername}_$fileplatform.h
|
|
rm -f $shadername.air $shadername.metallib
|
|
done
|
|
}
|
|
|
|
generate_shaders macos macos macosx 10.11
|
|
generate_shaders ios ios iphoneos 8.0
|
|
generate_shaders iphonesimulator ios iphonesimulator 8.0
|
|
generate_shaders tvos ios appletvos 9.0
|
|
generate_shaders tvsimulator ios appletvsimulator 9.0
|
|
|
|
# Bundle together one mega-header
|
|
catShaders()
|
|
{
|
|
target=$1
|
|
for shadername in "${shadernames[@]}"; do
|
|
cat ${shadername}_$target.h >> Metal_Blit.h
|
|
done
|
|
}
|
|
|
|
rm -f Metal_Blit.h
|
|
echo "#if defined(SDL_PLATFORM_IOS)" >> Metal_Blit.h
|
|
echo "#if TARGET_OS_SIMULATOR" >> Metal_Blit.h
|
|
catShaders iphonesimulator
|
|
echo "#else" >> Metal_Blit.h
|
|
catShaders ios
|
|
echo "#endif" >> Metal_Blit.h
|
|
echo "#elif defined(SDL_PLATFORM_TVOS)" >> Metal_Blit.h
|
|
echo "#if TARGET_OS_SIMULATOR" >> Metal_Blit.h
|
|
catShaders tvsimulator
|
|
echo "#else" >> Metal_Blit.h
|
|
catShaders tvos
|
|
echo "#endif" >> Metal_Blit.h
|
|
echo "#else" >> Metal_Blit.h
|
|
catShaders macos
|
|
echo "#endif" >> Metal_Blit.h
|
|
|
|
# Clean up
|
|
cleanupShaders()
|
|
{
|
|
target=$1
|
|
for shadername in "${shadernames[@]}"; do
|
|
rm -f ${shadername}_$target.h
|
|
done
|
|
}
|
|
cleanupShaders iphonesimulator
|
|
cleanupShaders ios
|
|
cleanupShaders tvsimulator
|
|
cleanupShaders tvos
|
|
cleanupShaders macos |