From 4bd1b46f7f05a997c8058bd8c4f117785f675338 Mon Sep 17 00:00:00 2001 From: Digital Artifex <7929434+DigitalArtifex@users.noreply.github.com> Date: Fri, 22 Aug 2025 21:03:57 -0400 Subject: [PATCH] Fixed a few compiler warnings --- plugin/AudioModel.cpp | 6 +- tools/ShaderCompiler.py | 139 ++++++++++++++++++++++++++++------------ 2 files changed, 102 insertions(+), 43 deletions(-) diff --git a/plugin/AudioModel.cpp b/plugin/AudioModel.cpp index e106dd7..57a1ad0 100644 --- a/plugin/AudioModel.cpp +++ b/plugin/AudioModel.cpp @@ -16,7 +16,7 @@ AudioModel::AudioModel(QObject *parent) : QObject(parent) { - m_impl_data = { nullptr, nullptr, 0, 1, {}, {}}; + m_impl_data = { nullptr, nullptr, {0, 0, {}}, 1, {}, {}, 0.0}; m_impl_data.samples.reserve(4096); m_impl_data.smoothed.reserve(2048); @@ -212,11 +212,11 @@ void AudioModel::on_process(void *userdata) n_samples = buf->datas[0].chunk->size / sizeof(float); // convert channels to mono - for(int index = 0; index < n_samples; index += n_channels) + for(uint32_t index = 0; index < n_samples; index += n_channels) { float average = 0; - for(int channel = 0; channel < n_channels; channel++) + for(uint32_t channel = 0; channel < n_channels; channel++) average += samples[index + channel]; average /= n_channels; diff --git a/tools/ShaderCompiler.py b/tools/ShaderCompiler.py index c8eac00..1e16764 100644 --- a/tools/ShaderCompiler.py +++ b/tools/ShaderCompiler.py @@ -2,50 +2,109 @@ # it contains modifications from Neil Panda and myself import os +import sys 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) +import shutil +import argparse # 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) +def parse_arguments(): + parser = argparse.ArgumentParser( + description='A shader processor for ShaderToy', + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=""" +Examples: + python ShaderToyProcessor.py -i ./src/deadly_halftones + """ + ) + + parser.add_argument('-i', '--input', + default='processed', + help='Input directory to process') + + parser.add_argument('-v', '--verbose', + action='store_true', + help='Enable verbose output') + + parser.add_argument('-o', '--output', + default='build', + help='Output Directory') + + return parser.parse_args() - # 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}") +def main(): + args = parse_arguments() + + if args.output: + output_directory = args.output + + if args.input: + source_directory = args.input + + if args.verbose: + print(f"Input directory: {source_directory}") + print(f"Output directory: {output_directory}") + + last_file = "" + + # Ensure output directory exists + os.makedirs(output_directory, exist_ok=True) + + try: + # 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'): + last_file = file + + # 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 + ] + + subprocess.run(cmd, check=True) + # If the command was successful, delete the source file + if (DELETE_AFTER_COMPILATION): + os.remove(source_file_path) + if args.verbose: + print(f"Successfully converted and deleted: {file}") + elif args.verbose: + print(f"Successfully converted: {file}") + + # Otherwise, just copy the 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}") + 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) + new_file_path = os.path.join(new_root, file) + + if args.verbose: + print(f"Writing to: '{new_file_path}'") + + shutil.copy(file_path, new_file_path) + + except subprocess.CalledProcessError: + # If the command failed, do not delete the source file + print(f"Conversion failed for: {last_file}") + sys.exit(1) + + +if __name__ == '__main__': + main()