#!/bin/sh # Regenerates src/guide_spirv.h from guide.vert / guide.frag (needs glslc: the Frame has it in /usr/bin). set -e cd "$(dirname "$0")" glslc -O --target-env=vulkan1.1 -fshader-stage=vert guide.vert -o /tmp/guide.vert.spv glslc -O --target-env=vulkan1.1 -fshader-stage=frag guide.frag -o /tmp/guide.frag.spv python3 - /tmp/guide.vert.spv /tmp/guide.frag.spv > ../../src/guide_spirv.h <<'PY' import struct, sys print("#pragma once") print("// GENERATED by tools/guide/gen_guide_spirv.sh from tools/guide/guide.{vert,frag}. Do not edit by hand.") print("// vert: in vec3 position @0, vec4 color @1; push { mat4 clipFromWorld[2]; }; spec 0 = alpha scale") print("// frag: out = color") print("#include \n#include \n") for name, path in (("Vert", sys.argv[1]), ("Frag", sys.argv[2])): data = open(path, "rb").read() words = struct.unpack("<%dI" % (len(data) // 4), data) print("static const uint32_t kGuide%sSpirv[] = {" % name) for i in range(0, len(words), 8): print(" " + ",".join("0x%08x" % w for w in words[i:i + 8]) + ",") print("};") print("static const size_t kGuide%sSize = sizeof(kGuide%sSpirv);\n" % (name, name)) PY