MiuixRuntimeShader class
运行时着色器的跨平台封装。对应 Kotlin interface RuntimeShader。
与原版的关键差异(务必了解):
- Kotlin 侧从运行时字符串编译 AGSL/SkSL,uniform 按名字设置
(
setFloatUniform("name", ...))。 - Flutter 的
FragmentShader只能由预编译的.frag资源(经 impellerc)产生, uniform 按下标设置(setFloat(index, value))。因此本封装:- 由 MiuixRuntimeShader.fromProgram 用已加载的 ui.FragmentProgram 构造;
- 通过 uniformLayout(uniform 名 → 起始 float 下标)把名字翻译成下标, 从而保留 Kotlin 端「按名设 uniform」的调用风格;
- 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 -
从数组设置
floatuniform。对应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