问题
我想将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还很陌生,很可能非常合乎逻辑和简单的解决方案还没有找到。欢迎任何提示!
回答
最好使用带有简短工作副本可粘贴片段的答案:-(
这个问题很容易解决。从文档中,我发现有一个recursive property
可以使用递归着色器(duh(!例如代码:
ShaderEffectSource {
id:buf1;
recursive:true;
sourceItem: effect;
}
ShaderEffect {
id:effect;
property variant src: buf1;
//fragment shader then uses src as texture
}
有一些使用递归ShaderEffectSource对从这里链接的UI进行反应扩散和流体动力学效果的示例。