#!/bin/bash GENERATED_DATA_PATH="../openVulkanoCpp/GeneratedShaderData" SHADER_PATH="../openVulkanoCpp/Shader" check_return_code() { # return code of last executed command retVal=$? if [ $retVal -ne 0 ]; then exit 1 fi } rm -f *.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