// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include #include #include #include #include #include "common/common_types.h" namespace VideoCore { enum class FxUniformKind { Boolean, Integer, Floating, }; enum class FxUiType { Hidden, Slider, Drag, Combo, Radio, CheckBox, Color, InputBox, }; struct FxUniformDesc { std::string name; std::string label; std::string tooltip; std::string category; FxUniformKind kind{FxUniformKind::Floating}; u32 components{1}; FxUiType ui_type{FxUiType::Hidden}; f32 ui_min{0.0f}; f32 ui_max{1.0f}; f32 ui_step{0.01f}; std::vector items; std::array default_value{}; }; struct FxEffectDesc { std::string file; std::string name; std::string label; std::string description; std::vector techniques; std::vector uniforms; std::string error; bool Valid() const { return error.empty() && !techniques.empty(); } }; std::filesystem::path GetFxRootDirectory(); std::vector GetFxIncludePaths(const std::filesystem::path& effect_path); std::filesystem::path ResolveFxTexturePath(const std::filesystem::path& effect_path, std::string_view source); void ReloadFxCatalog(); const std::vector& GetFxCatalog(); const FxEffectDesc* FindFxEffect(std::string_view file); const FxUniformDesc* FindFxUniform(const FxEffectDesc& effect, std::string_view name); } // namespace VideoCore