Files
komplex/tools/ShaderCompiler.py
2025-08-11 00:04:56 -04:00

52 lines
2.0 KiB
Python

# This file was originally part of the KDE Shader Wallpaper Project
# it contains modifications from Neil Panda and myself
import os
import subprocess
# If they fail to convert, try only converting for 120,150 or 150 instead of 100 es
# otherwise, debug the shader it self
# Paths
source_directory = 'processed'
output_directory = 'build'
# Ensure output directory exists
os.makedirs(output_directory, exist_ok=True)
# THIS WILL DELETE YOUR ORIGINAL FRAG AFTER COMPILING IF SET TO TRUE
DELETE_AFTER_COMPILATION = False
# Iterate over all .frag files in the source directory
for root, dirs, files in os.walk(source_directory):
for file in files:
if file.endswith('.frag'):
# Construct the full path to the source file
source_file_path = os.path.join(root, file)
# Construct new output path
relative_path = os.path.relpath(root, source_directory)
new_root = os.path.join(output_directory, relative_path)
os.makedirs(new_root, exist_ok=True)
output_file_name = file.replace('.frag', '.frag.qsb')
output_file_path = os.path.join(new_root, output_file_name)
# Construct and execute the command
cmd = [
'/usr/lib/qt6/bin/qsb', '--glsl', '330', '--hlsl', '50', '--msl', '12',
'-o', output_file_path, source_file_path
]
try:
subprocess.run(cmd, check=True)
# If the command was successful, delete the source file
if (DELETE_AFTER_COMPILATION):
os.remove(source_file_path)
print(f"Successfully converted and deleted: {file}")
else:
print(f"Successfully converted: {file}")
except subprocess.CalledProcessError:
# If the command failed, do not delete the source file
print(f"Conversion failed for: {file}")