gpt4 book ai didi

c++ - 拥有 2 个较小的渲染目标还是一个较大的渲染目标更好?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:55:57 28 4
gpt4 key购买 nike

我正在编写一个延迟渲染器,并试图打包我的 gbuffer。

将漫反射和高光存储在一起会更好吗:

vec4 difSpec = (diffuse.xyz, specular) // FORMAT_RGBA
gl_FragData[0] = difSpc;

或使用 2 个渲染目标

vec3 diffuse
float specular
gl_FragData[0] = diffuse // FORMAT_RGB
gl_FragData[1] = specular // FORMAT_RED

问题是一个比另一个更好,为什么。

最佳答案

您使用的缓冲区绑定(bind)/重新绑定(bind)操作越少越好。

更重要的是,在您的情况下,您只需要 4 个 float 就可以了:RGB+Specular。所以使用完整的 128 位渲染目标并打包 (r,g,b,specular) 值。它必须更好,因为访问不同的内存位置(RGB 为 96 位,镜面反射为 32 位以上)对缓存不利。

对于较旧的视频卡,一个渲染目标也更好。不管怎样,当你只使用 96 位时,你就是在浪费内存。 g-buffer 总是必须紧密包装。

关于c++ - 拥有 2 个较小的渲染目标还是一个较大的渲染目标更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11273136/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com