MiuixRuntimeShader class

运行时着色器的跨平台封装。对应 Kotlin interface RuntimeShader

与原版的关键差异(务必了解)

  • Kotlin 侧从运行时字符串编译 AGSL/SkSL,uniform 按名字设置 (setFloatUniform("name", ...))。
  • Flutter 的 FragmentShader 只能由预编译的 .frag 资源(经 impellerc)产生, uniform 按下标设置(setFloat(index, value))。因此本封装:
    1. MiuixRuntimeShader.fromProgram 用已加载的 ui.FragmentProgram 构造;
    2. 通过 uniformLayout(uniform 名 → 起始 float 下标)把名字翻译成下标, 从而保留 Kotlin 端「按名设 uniform」的调用风格;
    3. sampler(子着色器)通过 samplerLayout(名 → sampler 下标)设置。

着色器源码不再内联于 Dart,而是作为 .frag 资源随包分发(批次 5 液态玻璃/模糊 会提供具体 .frag 与对应 layout)。

Constructors

MiuixRuntimeShader.fromProgram(FragmentProgram program, {Map<String, int> uniformLayout = const {}, Map<String, int> samplerLayout = const {}})

Properties

hashCode int
The hash code for this object.
no setterinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
samplerLayout Map<String, int>
sampler 名 → sampler 下标。用于 ui.FragmentShader.setImageSampler
final
shader FragmentShader
底层 Flutter 着色器。可直接作为 ui.Shader 用于 Paint..shader
final
uniformLayout Map<String, int>
uniform 名 → 起始 float 下标。用于把按名设值翻译为 ui.FragmentShader.setFloat
final

Methods

dispose() → void
释放底层资源。Flutter 的 ui.FragmentShader 需显式 dispose。
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
setColorUniform(String name, Color color) → void
vec4 设置颜色(RGBA,分量 0..1)。对应 setColorUniform(name, Color)
setFloat2Uniform(String name, double v1, double v2) → void
设置 vec2。对应 setFloatUniform(name, v1, v2)
setFloat3Uniform(String name, double v1, double v2, double v3) → void
设置 vec3。对应 setFloatUniform(name, v1, v2, v3)
setFloat4Uniform(String name, double v1, double v2, double v3, double v4) → void
设置 vec4。对应 setFloatUniform(name, v1, v2, v3, v4)
setFloatArrayUniform(String name, List<double> values) → void
从数组设置 float uniform。对应 setFloatUniform(name, FloatArray)
setFloatUniform(String name, double value) → void
设置单分量 float。对应 setFloatUniform(name, value)
setInputShader(String name, Image image) → void
绑定子输入着色器(如被模糊的图层快照)。对应 setInputShader(name, shader)
toString() String
A string representation of this object.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited