6#include <PhosphorShaders/phosphorshaders_export.h>
8#include <PhosphorRegistry/IFactoryBase.h>
9#include <PhosphorRegistry/MetadataPackLoader.h>
10#include <PhosphorRegistry/Registry.h>
28class IWallpaperProvider;
75 bool useZoneColor =
false;
97 bool isUserShader =
false;
98 bool isMultipass =
false;
99 bool useWallpaper =
false;
100 bool bufferFeedback =
false;
101 qreal bufferScale = 1.0;
102 QString bufferWrap = QStringLiteral(
"clamp");
104 QString bufferFilter = QStringLiteral(
"linear");
106 bool useDepthBuffer =
false;
110 return !
id.isEmpty() && (isNoneShader(
id) || shaderUrl.isValid());
119 class ShaderPack final :
public PhosphorRegistry::IFactoryBase
123 : m_info(std::move(info))
126 [[nodiscard]] QString
id()
const override
199 Q_INVOKABLE QVariantMap
presetParams(
const QString& shaderId,
const QString& presetName)
const;
259 bool validateParameterValue(
const ParameterInfo& param,
const QVariant& value)
const;
260 QVariantMap shaderInfoToVariantMap(
const ShaderInfo& info)
const;
261 QVariantMap parameterInfoToVariantMap(
const ParameterInfo& param)
const;
269 PhosphorRegistry::Registry<ShaderPack> m_registry;
274 std::unique_ptr<PhosphorRegistry::MetadataPackLoader<ShaderPack>> m_loader;
276 static std::unique_ptr<IWallpaperProvider> s_wallpaperProvider;
277 static QString s_cachedWallpaperPath;
278 static QImage s_cachedWallpaperImage;
279 static qint64 s_cachedWallpaperMtime;
280 static QMutex s_wallpaperCacheMutex;
286 struct WallpaperCropEntry
293 static constexpr int CropCacheCapacity = 8;
294 static std::array<WallpaperCropEntry, CropCacheCapacity> s_cachedWallpaperCrops;
295 static int s_cachedWallpaperCropNextSlot;
Registry entry: a discovered shader as a PhosphorRegistry factory.
Definition ShaderRegistry.h:120
QString displayName() const override
Definition ShaderRegistry.h:130
QString id() const override
Definition ShaderRegistry.h:126
ShaderPack(ShaderInfo info)
Definition ShaderRegistry.h:122
const ShaderInfo & info() const
Definition ShaderRegistry.h:134
Registry of available shader effects.
Definition ShaderRegistry.h:61
ShaderRegistry(QObject *parent=nullptr)
QVariantMap shaderInfo(const QString &id) const
void reportShaderBakeFinished(const QString &shaderId, bool success, const QString &error)
void shaderCompilationStarted(const QString &shaderId)
QStringList shaderPresetNames(const QString &shaderId) const
void setUserPath(const QString &path)
static QImage loadWallpaperImage(const QRect &subGeom, const QRect &physGeom)
Return the wallpaper image cropped to the portion that a sub-region (subGeom) occupies on a physical ...
QVariantMap translateParamsToUniforms(const QString &shaderId, const QVariantMap &storedParams) const
static ShaderInfo parsePackMetadata(const QString &packDir, QString *error=nullptr)
Parse a pack directory's metadata.json into a ShaderInfo using the SAME parser the live registry uses...
QList< ShaderInfo > availableShaders() const
~ShaderRegistry() override
static QString paramPreamble(const ShaderInfo &info)
Build the generated #define p_<id> <glsl-accessor> preamble (T1.1) for info's declared parameters,...
ShaderInfo shader(const QString &id) const
static QString wallpaperPath()
static QImage loadWallpaperImage()
QVariantList availableShadersVariant() const
static void invalidateWallpaperCache()
void shaderCompilationFinished(const QString &shaderId, bool success, const QString &error)
QVariantList shaderPresetsVariant(const QString &shaderId) const
static QString noneShaderUuid()
bool shadersEnabled() const
Always true — once a ShaderRegistry is constructed, shader discovery and metadata are functional (the...
Definition ShaderRegistry.h:211
QVariantMap validateAndCoerceParams(const QString &id, const QVariantMap ¶ms) const
QVariantMap defaultParams(const QString &id) const
void addSearchPaths(const QStringList &paths, PhosphorFsLoader::LiveReload liveReload=PhosphorFsLoader::LiveReload::On, PhosphorFsLoader::RegistrationOrder order=PhosphorFsLoader::RegistrationOrder::LowestPriorityFirst)
bool validateParams(const QString &id, const QVariantMap ¶ms) const
static bool isNoneShader(const QString &id)
void reportShaderBakeStarted(const QString &shaderId)
void addSearchPath(const QString &path, PhosphorFsLoader::LiveReload liveReload=PhosphorFsLoader::LiveReload::On)
QStringList searchPaths() const
QUrl shaderUrl(const QString &id) const
static QRect computeWallpaperCropRect(QSize wpSize, const QRect &physGeom, const QRect &subGeom)
Pure geometry helper: compute the pixel rect inside a wallpaper of size wpSize that corresponds to su...
QVariantMap presetParams(const QString &shaderId, const QString &presetName) const
RegistrationOrder
Caller's declared priority direction for registerDirectories / setDirectories input.
Definition WatchedDirectorySet.h:58
@ LowestPriorityFirst
[sys-lowest, ..., sys-highest, user] — the canonical strategy view.
LiveReload
Opt-in policy for directory watching.
Definition WatchedDirectorySet.h:34
Definition ShaderEffect.h:30
Definition ShaderRegistry.h:66
QString group
Definition ShaderRegistry.h:69
QVariant maxValue
Definition ShaderRegistry.h:74
QString uniformName() const
Convert slot to uniform name (e.g., slot 0 → "customParams1_x")
QVariant defaultValue
Definition ShaderRegistry.h:72
QString wrap
Definition ShaderRegistry.h:76
QVariant minValue
Definition ShaderRegistry.h:73
QString id
Definition ShaderRegistry.h:67
QString name
Definition ShaderRegistry.h:68
QString type
"float", "color", "int", "bool", "image"
Definition ShaderRegistry.h:70
Definition ShaderRegistry.h:83
QString vertexShaderPath
Definition ShaderRegistry.h:91
QString id
Definition ShaderRegistry.h:84
QString sourcePath
Definition ShaderRegistry.h:90
bool isValid() const
Definition ShaderRegistry.h:108
QString author
Definition ShaderRegistry.h:87
QMap< QString, QVariantMap > presets
Definition ShaderRegistry.h:96
QString category
Definition ShaderRegistry.h:94
QList< ParameterInfo > parameters
Definition ShaderRegistry.h:95
QUrl shaderUrl
Definition ShaderRegistry.h:89
QString name
Definition ShaderRegistry.h:85
QString previewPath
Definition ShaderRegistry.h:93
QStringList bufferFilters
Definition ShaderRegistry.h:105
QString description
Definition ShaderRegistry.h:86
QString version
Definition ShaderRegistry.h:88
QStringList bufferShaderPaths
Definition ShaderRegistry.h:92
QStringList bufferWraps
Definition ShaderRegistry.h:103