54 lines
1.2 KiB
Bash
Executable File
54 lines
1.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Make a header file containing GLSL source code
|
|
echo "Generating headers containing GLSL source code.."
|
|
|
|
# Source files to be included
|
|
SHADER_SRC=( "shader.vert" "shader.frag" )
|
|
# Number of shaders
|
|
SHADERS_NUMBER=${#SHADER_SRC[@]}
|
|
OUTPUT="shader_src.h"
|
|
UPDATE=false
|
|
|
|
# Check if it is necessary to regenerate headers
|
|
for filename in "${SHADER_SRC[@]}"
|
|
do
|
|
if [[ $filename -nt $OUTPUT ]]; then
|
|
UPDATE=true
|
|
fi
|
|
done
|
|
|
|
if [[ $UPDATE == false ]]; then
|
|
echo "Headers are up-to-date."
|
|
exit
|
|
fi
|
|
|
|
# Prepare GLSL source to be included in C array
|
|
function processSrc {
|
|
# 1st part: remove /* */ comments
|
|
# 2nd part: remove // comments
|
|
# 3rd part: remove blank lines (or containing only whitespaces)
|
|
# 4th & 5th part: wrap every line in quotation marks
|
|
sed '/\/\*/,/\*\//d; s/[ \t]*\/\/.*$//; /^[ \t]*$/d; s/^[ \t]*/"/; s/[ \t]*$/\\n"/' $1 >> $OUTPUT
|
|
echo "," >> $OUTPUT
|
|
}
|
|
|
|
# Header
|
|
echo "#ifndef SHADER_SRC_H
|
|
#define SHADER_SRC_H
|
|
|
|
const unsigned int shaders_number = $SHADERS_NUMBER;
|
|
const char *shaders_src[] = {" > $OUTPUT
|
|
|
|
# Main contents
|
|
for filename in "${SHADER_SRC[@]}"
|
|
do
|
|
processSrc $filename
|
|
done
|
|
|
|
# Footer
|
|
echo "};
|
|
#endif /* SHADER_SRC_H */" >> $OUTPUT
|
|
|
|
echo "Done."
|