import os import sys import subprocess import logging os.chdir(sys.argv[1]) # Configure logging logging.basicConfig( filename=os.path.join(sys.argv[2], "CompileShaders.log"), # Log file name filemode="w", # Append mode (use "w" for overwrite) format="%(asctime)s - %(levelname)s - %(message)s", # Log format level=logging.INFO # Logging level ) def filterFunc(fileName): params = fileName.split(".") return params[len(params) - 1] != "spv" def __main__(): SHADERS_PATH = os.path.join(os.getcwd()) if os.name == "nt": GLSLC_PATH = os.path.join(os.environ.get("VULKAN_SDK"), "bin", "glslc") else: GLSLC_PATH = "/usr/local/bin/glslc" logging.info(str.join(" ", ["SHADER PATH:", SHADERS_PATH])) logging.info(str.join(" ", ["GLSLC PATH:", GLSLC_PATH])) shaders = filter(filterFunc, os.listdir(SHADERS_PATH)) for shader in shaders: name, ext = shader.split(".") command = GLSLC_PATH args = [ os.path.join(SHADERS_PATH, shader), "-o", os.path.join(SHADERS_PATH, name + "." + ext + ".spv") ] logging.info(str.join(" ", ["Compiling:", shader])) logging.info(str.join(" ", [command] + args)) subprocess.Popen([command] + args) if __name__ == "__main__": __main__()