3 if [ ! -e 'dali-core' ] ; then
5 echo "Error: This script must be executed from the top-level directory where dali-core can be found!"
10 d=dali-core/dali/graphics/vulkan/shaders
11 outdir=dali-core/dali/graphics/vulkan/generated
14 all_shaders=$(ls -1 *.{vert,frag})
17 for name in $all_shaders ; do
18 echo "Compiling $name..."
19 varname=$(echo "SHADER_$name" | tr [a-z] [A-Z] | sed -e 's/-/_/g;s/\./_/g;')
20 glslangValidator -V1.0 $d/$name --vn $varname -o /tmp/spv.h
22 newname=$(echo ${name} | sed -e 's/\./-/;')".h"
25 cat /tmp/spv.h | sed -e 's/const uint32_t /std::vector<uint32_t> /g;s/\[\]//g;' | tail -n +3 > $outdir/$newname
26 echo >> $outdir/$newname
29 echo "Generating cpp file..."
30 echo "#include <cstdint>" > $outdir/builtin-shader-gen.cpp
31 echo "#include <vector>" >> $outdir/builtin-shader-gen.cpp
32 echo "#include <string>" >> $outdir/builtin-shader-gen.cpp
33 echo -e "#include <map>\n" >> $outdir/builtin-shader-gen.cpp
36 for name in $all_shaders ; do
37 varname=$(echo "SHADER_$name" | tr [a-z] [A-Z] | sed -e 's/-/_/g;s/\./_/g;')
38 newname=$(echo ${name} | sed -e 's/\./-/;')".h"
39 varnames="${varnames} $varname"
40 echo "#include \"$newname\"" >> $outdir/builtin-shader-gen.cpp
43 echo "static std::map<std::string, std::vector<uint32_t>> gGraphicsBuiltinShader = {" >> $outdir/builtin-shader-gen.cpp
44 for var in ${varnames} ; do
45 echo " { \"$var\", $var }," >> $outdir/builtin-shader-gen.cpp
47 echo -e "};\n" >> $outdir/builtin-shader-gen.cpp
49 # generate graphics shader getter function
50 cat >> $outdir/builtin-shader-gen.cpp << EOF
53 #define IMPORT_API __attribute__ ((visibility ("default")))
55 IMPORT_API std::vector<uint32_t> GraphicsGetBuiltinShader( const std::string& tag );
57 std::vector<uint32_t> GraphicsGetBuiltinShader( const std::string& tag )
59 auto iter = gGraphicsBuiltinShader.find( tag );
60 if( iter != gGraphicsBuiltinShader.end() )
70 echo "Generating extern header file ( for external use )..."
71 echo "#ifndef GRAPHICS_BUILTIN_SHADER_EXTERN_GEN_H" > $outdir/builtin-shader-extern-gen.h
72 echo "#define GRAPHICS_BUILTIN_SHADER_EXTERN_GEN_H" >> $outdir/builtin-shader-extern-gen.h
73 echo "#include <cstdint>" >> $outdir/builtin-shader-extern-gen.h
74 echo "#include <vector>" >> $outdir/builtin-shader-extern-gen.h
75 echo "#include <string>" >> $outdir/builtin-shader-extern-gen.h
76 echo "" >> $outdir/builtin-shader-extern-gen.h
78 for name in $all_shaders ; do
79 varname=$(echo "SHADER_$name" | tr [a-z] [A-Z] | sed -e 's/-/_/g;s/\./_/g;')
80 newname=$(echo ${name} | sed -e 's/\./-/;')".h"
81 echo "extern std::vector<uint32_t> $varname;" >> $outdir/builtin-shader-extern-gen.h
83 cat >> $outdir/builtin-shader-extern-gen.h << EOF
84 extern "C" std::vector<uint32_t> GraphicsGetBuiltinShader( const std::string& tag );
85 #define GraphicsGetBuiltinShaderId( x ) GraphicsGetBuiltinShader( #x )
87 echo "#endif // GRAPHICS_BUILTIN_SHADER_EXTERN_GEN_H" >> $outdir/builtin-shader-extern-gen.h