diff --git a/Scripts/CompileShaders.sh b/Scripts/CompileShaders.sh index a433dc7..90db9d6 100644 --- a/Scripts/CompileShaders.sh +++ b/Scripts/CompileShaders.sh @@ -1,20 +1,38 @@ #!/bin/bash GENERATED_DATA_PATH="../openVulkanoCpp/GeneratedShaderData" -rm $GENERATED_DATA_PATH/*.h -rm $GENERATED_DATA_PATH/*.c +SHADER_PATH="../openVulkanoCpp/Shader" -for f in ../openVulkanoCpp/Shader/* ; do - if [[ "$f" == *.frag ]] || [[ "$f" == *.vert ]] - then - filename=$(basename -- "$f") - filename="${filename%.*}" - glslang -V $f -o $GENERATED_DATA_PATH/$filename.spv - bin2c -t -d $GENERATED_DATA_PATH/$filename.h -o $GENERATED_DATA_PATH/$filename.c $GENERATED_DATA_PATH/$filename.spv - sed -i 's/char \*entryName/const char *entryName/' $GENERATED_DATA_PATH/$filename.h - sed -i 's/const char \*data/const unsigned char *data/' $GENERATED_DATA_PATH/$filename.h - rm $GENERATED_DATA_PATH/$filename.spv +check_return_code() { + # return code of last executed command + retVal=$? + if [ $retVal -ne 0 ]; then + read -p "Press enter to continue" + exit 1 fi +} + +rm *.spv + +for f in $SHADER_PATH/*.vert ; do + filename=$(basename -- "$f") + filename_no_ext="${filename%.*}" + filename_no_ext_first_upper="${filename_no_ext^}" + + glslang -V $f -o $filename_no_ext.vert.spv + check_return_code + glslang -V $SHADER_PATH/$filename_no_ext.frag -o $filename_no_ext.frag.spv + check_return_code + rm $GENERATED_DATA_PATH/$filename_no_ext.h $GENERATED_DATA_PATH/$filename_no_ext.c + bin2c -t -d $GENERATED_DATA_PATH/$filename_no_ext.h -o $GENERATED_DATA_PATH/$filename_no_ext.c $filename_no_ext.vert.spv $filename_no_ext.frag.spv + check_return_code + sed -i 's/char \*entryName/const char *entryName/' $GENERATED_DATA_PATH/$filename_no_ext.h + sed -i 's/const char \*data/const unsigned char *data/' $GENERATED_DATA_PATH/$filename_no_ext.h + # avoid ODR violation + sed -i "s/fileTable/fileTable${filename_no_ext_first_upper}/" $GENERATED_DATA_PATH/$filename_no_ext.h $GENERATED_DATA_PATH/$filename_no_ext.c + sed -i "s/typedef struct {/#ifndef TFileTableEntry_H_INCLUDED\n#define TFileTableEntry_H_INCLUDED\ntypedef struct {/" $GENERATED_DATA_PATH/$filename_no_ext.h + sed -i "s/} TFileTableEntry;/} TFileTableEntry;\n#endif \/*TFileTableEntry_H_INCLUDED*\//" $GENERATED_DATA_PATH/$filename_no_ext.h + rm *.spv done read -p "Press enter to continue"