首页 文章

使用OpenSceneGraph的SSAO,Opmizations和管道

提问于
浏览
1

我对SSAO技术实现有一些疑问:

  • 它是否真的需要每个几何体的第二个(或更多)管道?我的意思是,我找到了一些关于它的教程和内容,但大多数情况下,他们只是给你指示去做,而不进一步详细说明 .

  • 有可能进行任何优化吗?我正在使用OSG而且我的印象是,如果你为CPU发送纹理并再次投入GPU并不是最好的解决方案 .

  • 是否可以使着色器在缓冲区中生成具有样本深度的纹理,并仅使用屏幕的四边形,颜色,场景深度和测试深度将其发送到第二个管道线?我正在使用osg而无法找到如何在文档中正确执行此操作 .

1 回答

  • 3

    通常,SSAO最适合作为延迟着色方法的一部分来实现 . 可以使用严格的前向着色方法,但仍然需要两次渲染过程,并且可以轻松地将SSAO添加到延迟着色引擎的第二次渲染过程中 . 在SSAO中,您需要场景的完整深度缓冲区才能计算遮挡,因此对问题第1部分的简短回答是肯定的,SSAO需要两次渲染过程 .

    请注意,在延迟着色中,尽管有两个渲染过程,但复杂几何体(即模型)仅在第一次传递期间渲染,第二次传递通常由为每种类型的光渲染的简单多边形形状组成 . 这几乎就是您在问题的第3部分中提出的建议 .

    关于问题的第2部分,如果设置正确,则不需要将中间纹理移回CPU,然后在两个渲染通道之间返回GPU;您只需将第一个渲染过程的纹理作为第二个渲染过程的资源 .

相关问题