45 lines
1.3 KiB
Python
45 lines
1.3 KiB
Python
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__() |