Files
vkzip/shaders/compile_shaders.sh
T

42 lines
1.2 KiB
Bash
Executable File

#!/bin/bash
# Compile GLSL compute shaders to SPIR-V
# Requires glslc (from Vulkan SDK) or glslangValidator
SHADER_DIR="$(dirname "$0")"
OUTPUT_DIR="${1:-$SHADER_DIR}"
# Find compiler
if command -v glslc &> /dev/null; then
COMPILER="glslc"
compile() { $COMPILER -o "$2" "$1"; }
elif command -v glslangValidator &> /dev/null; then
COMPILER="glslangValidator"
compile() { $COMPILER -V -o "$2" "$1"; }
else
echo "ERROR: No GLSL compiler found!"
echo "Install Vulkan SDK: https://vulkan.lunarg.com/sdk/home"
echo " Ubuntu/Debian: sudo apt install vulkan-tools glslang-tools"
echo " Arch: sudo pacman -S vulkan-tools glslang"
echo " Fedora: sudo dnf install vulkan-tools glslang"
exit 1
fi
echo "Using compiler: $COMPILER"
echo "Output directory: $OUTPUT_DIR"
mkdir -p "$OUTPUT_DIR"
for shader in "$SHADER_DIR"/*.comp; do
if [ -f "$shader" ]; then
name=$(basename "$shader")
output="$OUTPUT_DIR/${name}.spv"
echo " Compiling $name -> ${name}.spv"
compile "$shader" "$output"
if [ $? -ne 0 ]; then
echo " FAILED: $name"
exit 1
fi
fi
done
echo "All shaders compiled successfully!"