forked from jaildesigner-jailgames/jaildoctors_dilemma
45 lines
1.6 KiB
Bash
Executable File
45 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Compile Vulkan GLSL shaders to SPIR-V and update the C++ headers used by SDL3GPUShader.
|
|
# Required: glslc (from Vulkan SDK or: brew install glslang / apt install glslang-tools)
|
|
#
|
|
# Run from the project root: tools/shaders/compile_spirv.sh
|
|
|
|
set -e
|
|
|
|
SHADERS_DIR="data/shaders"
|
|
HEADERS_DIR="source/core/rendering/sdl3gpu"
|
|
|
|
if ! command -v glslc &> /dev/null; then
|
|
echo "ERROR: glslc not found. Install Vulkan SDK or run:"
|
|
echo " macOS: brew install glslang"
|
|
echo " Linux: sudo apt install glslang-tools"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Compiling SPIR-V shaders..."
|
|
|
|
glslc "${SHADERS_DIR}/postfx.vert" -o /tmp/postfx.vert.spv
|
|
glslc "${SHADERS_DIR}/postfx.frag" -o /tmp/postfx.frag.spv
|
|
|
|
echo "Generating C++ headers..."
|
|
|
|
xxd -i /tmp/postfx.vert.spv | \
|
|
sed 's/unsigned char .*postfx_vert_spv\[\]/static const uint8_t kpostfx_vert_spv[]/' | \
|
|
sed 's/unsigned int .*postfx_vert_spv_len/static const size_t kpostfx_vert_spv_size/' \
|
|
> "${HEADERS_DIR}/postfx_vert_spv.h"
|
|
|
|
xxd -i /tmp/postfx.frag.spv | \
|
|
sed 's/unsigned char .*postfx_frag_spv\[\]/static const uint8_t kpostfx_frag_spv[]/' | \
|
|
sed 's/unsigned int .*postfx_frag_spv_len/static const size_t kpostfx_frag_spv_size/' \
|
|
> "${HEADERS_DIR}/postfx_frag_spv.h"
|
|
|
|
# Prepend required includes to the headers
|
|
for f in "${HEADERS_DIR}/postfx_vert_spv.h" "${HEADERS_DIR}/postfx_frag_spv.h"; do
|
|
echo -e "#pragma once\n#include <cstdint>\n#include <cstddef>\n$(cat "$f")" > "$f"
|
|
done
|
|
|
|
echo "Done. Headers updated in ${HEADERS_DIR}/"
|
|
echo " postfx_vert_spv.h"
|
|
echo " postfx_frag_spv.h"
|
|
echo "Rebuild the project to use the new shaders."
|