You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shader双输出反馈问题:双输出回喂Shader迭代计算方案

双通道Shader输出回喂迭代的问题解决

我最近碰到这么个情况:想让Shader输出两个通道的数据,把这两个输出回喂回Shader里,分别用作迭代器和累加器。单通道的时候这套逻辑跑起来毫无问题,但换成双通道就出状况了。

原Shader代码

片段Shader

#version 420
uniform sampler2DRect inData0;
uniform sampler2DRect inData1;
out float outData0;
out float outData1;
void main(void) {
 outData0 = 1 + texture(inData0, gl_FragCoord.xy).r;
 outData1 = -1 + texture(inData1, gl_FragCoord.xy).r;
}

顶点Shader

#version 420
in vec2 position;
void main() {
 gl_Position = vec4(position, 0, 1);
}

前期进展

当时已经能通过GL.DrawBuffers和GL.ReadBuffer正确获取双输出了,但核心需求——实现output1回喂至input1的迭代逻辑一直没跑通。测试阶段用的是R32f/Red格式,后续计划替换成vec4。

解决方法

给uniform采样器和输出变量明确指定layout绑定与位置后,问题就顺利解决了。调整后的关键代码片段如下:

layout(binding = 0) uniform sampler2DRect inData0;
layout(binding = 1) uniform sampler2DRect inData1;
layout(location = 0) out float outData0;
layout(location = 1) out float outData1;

内容的提问来源于stack exchange,提问作者Tord

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:07:38