问题
我想将ShaderEffect的输出提供给自身,有效地生成反馈循环。
我天真的尝试包括简单地链接ShaderEffectSource和ShaderEffect,如下所示:
ShaderEffectSource {
id:buf1;
sourceItem: effect;
}
ShaderEffect {
id:effect;
property variant src: buf1;
//fragment shader then uses src as texture
}
我的下一个天真的方法包括将第二个ShaderEffectSource引入混合中,如下所示:
ShaderEffectSource {
id:buf1;
sourceItem: effect;
}
ShaderEffectSource {
id:buf2;
sourceItem: buf1;
}
ShaderEffect {
id:effect;
property variant src: buf2;
//fragment shader then uses src as texture
}
然而,这些方法都不起作用。它似乎一步到位,但最终从未反馈过。
我有一种感觉,这是可能的,但我对QML相当新,而且很可能是非常合乎逻辑且简单的解决方案。欢迎任何提示!
答案
首选简短工作副本片段的答案: - )
答案 0 :(得分:1)
这很容易解决。从documentation我发现有一个recursive property
可以使用递归着色器(duh)!例如代码:
ShaderEffectSource {
id:buf1;
recursive:true;
sourceItem: effect;
}
ShaderEffect {
id:effect;
property variant src: buf1;
//fragment shader then uses src as texture
}
答案 1 :(得分:1)
有一些使用递归ShaderEffectSource对从here链接的UI进行反应扩散和流体动力学效果的示例。