Metal中无需结束Render Pass即可存储单个Render Pass Attachment的可行性及实现方法咨询
Metal中无需结束Render Pass即可存储单个Render Pass Attachment的可行性及实现方法咨询
我现在在做一个模拟器,遇到了Metal渲染里的一个问题:我想在着色器中采样当前Render Pass的某个附件内容,但附件要到Render Pass结束时才会写入主存。如果为每个绘制调用都新建一个Render Pass,虽然能保证拿到最新的附件内容,但这样开销太大了——每个附件都要先存储再在下一个Render Pass里加载,完全不划算。
我在想,有没有办法不用结束当前Render Pass,只把某一个附件写入主存?我考虑过用Tile Shader访问Tile Memory,然后把它写入到纹理里,但不确定在当前Render Pass中写入正在使用的纹理是否合法?
另外我也知道,用可编程混合可能是更常规的方案,但这需要分析着色器代码,把纹理采样提升为framebuffer fetch,对于模拟器来说这个工作量实在太大了,完全不值得去做。
提前感谢各位的解答!
备注:内容来源于stack exchange,提问作者Samo77
相关产品推荐
相关产品推荐

