22#include <QActionGroup>
57 void Log(
const QString &message);
60 void Write(
const QString &message);
65 bool loadShaders(
const QString &path,
bool force =
false);
117 if (
process->state() == QProcess::Running) {
119 if (!
process->waitForFinished(10000)) {
144 QMainWindow::closeEvent(
event);
173 int columnNumber = 0,
int matchLength = 0);
268 QStringList &arguments,
425 const QString &source);
427 const QString &source);
430 bool success =
false,
431 const QString &diagnostics = QString());
434 const QString &runtimePath);
445#if defined(__linux__) || defined(__APPLE__) || defined(_WIN32)
447#if defined(__linux__) || defined(__APPLE__)
448 int shaderSelectionShmFd = -1;
449 sem_t *shaderSelectionSemaphore = SEM_FAILED;
451 HANDLE shaderSelectionMapping =
nullptr;
452 HANDLE shaderSelectionSemaphore =
nullptr;
Dialog for building nested shader playlists.
Builds an ordered library from fragment and compute shader files.
void openCustomStyleEditor()
QString editorPreviewStderr
QVector< QPointer< TextEditor > > open_files
QString playlist_file_path
void closeEvent(QCloseEvent *event) override
QString editorPreviewPath
void prompt_acmxvk_rebuild(const QString &reason, PendingAcmxvkAction resume_action)
Offer to rebuild a stale or incomplete ACMXVK source library.
void menuWatermarkSettings()
void detectFeatureSupport()
void listClicked(const QModelIndex &i)
Handle shader list selection changes.
QPointer< UniformReferenceDialog > uniformReferenceDialog
double deep_dream_strength
QProcess * editorPreviewProcess
QString currentShaderName() const
Return the filename in the Name column for the current selection.
void applyCustomStyleSheet(bool enable)
Apply or remove the custom stylesheet override.
void publishRuntimeSettingsToRunningProcess()
void menuToggleDisplayFilter(bool checked)
QAction * normalizedTimeAction
QAction * listMenu_findNext
void publishMultipassShadersToRunningProcess()
quint64 liveShaderCompileSequence
double deep_dream_octave_scale
QString editorPreviewStdout
void menuMetadataViewer()
void handleSavedShader(const QString &filePath)
QActionGroup * backendActionGroup
QString gpu_filter_indices
void update_backend_ui()
Update title, actions, and status text for the active backend.
double deep_dream_rotation
QAction * runFromCacheAction
QAction * shaderPassAction
void menuGPUFilterSettings()
QAction * watermarkAction
PendingAcmxvkAction pending_acmxvk_action
QAction * libraryBuilderAction
QHash< QString, bool > shaderCacheStatus
Cached map of shader stem -> failed flag for the current library.
void menuUniformReference()
bool audio_buffers_enabled
QAction * removeBrokenAction
void openShaderEditor(const QString &filePath, int lineNumber=1, int columnNumber=0, int matchLength=0)
Open or focus an editor for a shader source location.
void set_backend(acmx2::Backend backend, bool persist=true)
Select the active rendering backend and restore its paths.
void cleanupClosedEditors()
CompileHealth
Compile-health status for a single shader.
void event(SDL_Event &e) override
Placeholder—SDL events are forwarded to ACView::event() by libmx2.
QPointer< PlaylistDialog > playlistDialog
bool deep_dream_gpu_filter_first
QString liveShaderCompileSource
void updateIndex()
Refresh shader index metadata timestamp.
void initShaderSelectionSharedMemory()
bool addShaderToList(const QString &shaderName)
Add shader to list if it is valid and not already present.
void queueAcmxvkLiveCompile(const QString &filePath)
QAction * listMenu_shuffle
QAction * fileMenu_loadLibrary
QAction * listMenu_search
void populateShaderTree()
Repopulate the shader tree widget from the current items list, recomputing Last Modified,...
QAction * deepDreamAction
QAction * runMenu_copyCommand
double deep_dream_feedback
void startNextAcmxvkEditorPreview()
void menuLibraryBuilder()
QProcess * liveShaderCompileProcess
void updateOpenEditorShaderContexts()
void updateOpenEditorCompileStatus(const QString &sourcePath, bool pending, bool success=false, const QString &diagnostics=QString())
QString sanitizeShaderName(const QString &name)
Normalize shader names for filesystem/process safety.
int currentShaderRow() const
Return the row index of the current selection, or -1.
QPointer< QDialog > shaderEditorWorkspace
void applyMainViewStyles(bool customStyleEnabled)
void publishRepeatStateToRunningProcess()
QAction * stayOnTopAction
QAction * styleSheetAction
void appendDeepDreamArguments(QStringList &arguments) const
unsigned int camera_index
bool duration_limit_enabled
void menuShaderPassSettings()
bool validateDeepDreamLaunch(QString &error) const
QString encode_rate_control
QStringList playlist_names
CustomUniformDialog * customUniformDialog
QString activeShaderManifestPath
QAction * helpMenu_uniformReference
quint64 editorPreviewSequence
MainWindow(QWidget *parent=0)
void publishAcmxvkCompiledShaderReload(const QString &sourcePath, const QString &runtimePath)
QAction * backendAcmx2Action
QString pendingEditorPreviewPath
QAction * backendAcmxvkAction
QAction * listMenu_shader
QAction * customUniformsAction
void Write(const QString &message)
Write raw text to the lower output pane.
void publishSelectedShaderIndexToRunningProcess()
void menuCleanShaderCache()
QString liveShaderCompileStderr
QString editorPreviewInput
bool cacheBuildInProgress
True while an ACMX2 cache rebuild or ACMXVK source build is running.
QStringList shader_pass_names
void Log(const QString &message)
Append timestamped text to the UI log output.
void refreshShaderCacheStatus()
Refresh shaderCacheStatus from the on-disk shader cache.
QList< QPair< QString, QStringList > > playlist_tree_data
unsigned int audio_channels
QPointer< DeepDreamSettingsDialog > deepDreamSettingsDialog
bool buildRunArguments(QStringList &arguments, PendingAcmxvkAction resume_action=PendingAcmxvkAction::None)
Build acmx2 command-line arguments from current UI state.
void cleanupShaderSelectionSharedMemory()
QString liveShaderCompileTemporary
void publishShaderReloadToRunningProcess(const QString &filePath)
void publishCustomUniformsToRunningProcess()
void ensureShaderEditorWorkspace()
QTextEdit * bottomTextBox
void loadSessionSettings()
Restore persisted Session Settings into the launcher's runtime state.
QString readFileContents(const QString &filePath)
Read an entire text file into memory.
acmx2::Backend active_backend
QString getShaderPassIndicesFromNames()
Map selected shader-pass names back to numeric indices.
QString liveShaderCompileOutput
QString encode_parameters
int deep_dream_iterations
void menuCustomUniforms()
bool publishAcmx2EditorPreview(const QString &filePath, const QString &source)
QString acmxvkPruneLibraryPath
void selectShaderRow(int row)
Select the row at row and scroll it into view.
QAction * listMenu_set_current
QPointer< GPUFilterDialog > gpuFilterDialog
QString liveShaderCompileStdout
QPointer< ShaderPassDialog > shaderPassDialog
QAction * gpuFilterAction
void addRecentLibrary(const QString &path)
Add a library directory to the persisted recent-libraries list.
QTabWidget * shaderEditorTabs
QAction * displayFilterAction
void updateRecentLibrariesMenu()
Rebuild the File > Load Recent submenu from persisted settings.
QAction * listMenu_findInFiles
void cleanupShaderSelectionSemaphore()
void menuPlaylistSettings()
bool display_filter_enabled
QString baseAppStyleSheet
void startNextAcmxvkLiveCompile()
QAction * listMenu_remove
float cross_fade_duration
void start_acmxvk_build(const QString &build_path, AcmxvkBuildMode mode)
Start a strict, failure-tolerant, or destructive ACMXVK build.
QString pendingEditorPreviewSource
QStringList liveShaderCompileQueue
bool deep_dream_available
bool backend_launch_available() const
Return whether the active backend can be launched.
void menuDeepDreamSettings()
bool cuda_device_available
void initControls()
Build menus, actions, widgets, and signal wiring.
bool loadShaders(const QString &path, bool force=false)
Load shader names from index/cache for the provided path.
void menuBuildShaderCache()
QStringList editorPreviewTemporaryFiles
QPointer< LibraryBuilderDialog > libraryBuilderDialog
QString editorPreviewOutput
void queueAcmxvkEditorPreview(const QString &filePath, const QString &source)
bool max_size_limit_enabled
bool loadLibraryPath(const QString &path)
Validate, load, persist, and remember a shader library directory.
void runHdr10Conversion()
Run ffmpeg to convert the just-produced acmx2 output (assumed HLG HDR) into HDR10 (HEVC NVENC,...
int deep_dream_maximum_dimension
void menuSetCurrentShader()
QAction * cleanShaderCacheAction
QAction * midiSettingsAction
QDateTime shaderCacheMTime
Modification time of the shader cache file when last read.
QString concatList(const QStringList lst)
Join list items into a comma-separated argument string.
QAction * buildCacheAction
Shader text editor widgets with line numbers and GLSL highlighting.
UI dialog for configuring chained GPU filter indices.
Dialog for enabling MIDI control and selecting mapping/device settings.
Dialog for selecting executable and resource directories.
Dialog for creating a new shader file.
Dialog for generating a shader index from a selected folder.
Dialog for configuring ordered multi-pass shader execution.