56 lines
1.8 KiB
Bash
Executable File
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
|