Files
prosperon/shaders/compile.sh
2025-11-22 09:43:51 -06:00

56 lines
1.8 KiB
Bash
Executable File

#!/usr/bin/env bash
# Ensure directories exist
mkdir -p spv
mkdir -p msl
mkdir -p dxil
mkdir -p reflection
# Vertex shaders
for filename in *.vert.hlsl; do
if [ -f "$filename" ]; then
outSpv="spv/${filename/.hlsl/.spv}"
outDxil="dxil/${filename/.hlsl/.dxil}"
outMsl="msl/${filename/.hlsl/.msl}"
outReflect="reflection/${filename/.hlsl/.json}"
# Produce SPIR-V
dxc -spirv -T vs_6_0 -Fo "$outSpv" "$filename"
# Produce DXIL with embedded debug info (example)
shadercross "$filename" -o "$outDxil"
# dxc -Zi -Qembed_debug -T vs_6_0 -Fo "$outDxil" "$filename"
# Convert SPIR-V to Metal Shader Language
spirv-cross "$outSpv" --msl > "$outMsl"
# Generate reflection
spirv-cross "$outSpv" --reflect > "$outReflect"
fi
done
# Fragment shaders
for filename in *.frag.hlsl; do
if [ -f "$filename" ]; then
outSpv="spv/${filename/.hlsl/.spv}"
outDxil="dxil/${filename/.hlsl/.dxil}"
outMsl="msl/${filename/.hlsl/.msl}"
outReflect="reflection/${filename/.hlsl/.json}"
dxc -spirv -T ps_6_0 -Fo "$outSpv" "$filename"
shadercross "$filename" -o "$outDxil"
# dxc -Zi -Qembed_debug -T ps_6_0 -Fo "$outDxil" "$filename"
spirv-cross "$outSpv" --msl > "$outMsl"
spirv-cross "$outSpv" --reflect > "$outReflect"
fi
done
# Compute shaders
for filename in *.comp.hlsl; do
if [ -f "$filename" ]; then
outSpv="spv/${filename/.hlsl/.spv}"
outDxil="dxil/${filename/.hlsl/.dxil}"
outMsl="msl/${filename/.hlsl/.msl}"
outReflect="reflection/${filename/.hlsl/.json}"
dxc -spirv -T cs_6_0 -Fo "$outSpv" "$filename"
dxc -Zi -Qembed_debug -T cs_6_0 -Fo "$outDxil" "$filename"
spirv-cross "$outSpv" --msl > "$outMsl"
spirv-cross "$outSpv" --reflect > "$outReflect"
fi
done