ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Visibility Buffer:抛弃G-Buffer的几何渲染新范式

Visibility Buffer:抛弃G-Buffer的几何渲染新范式 开场去年做一款开放世界手游时,我们团队的渲染管线在场景复杂的森林区域直接翻车了——树叶粒子叠加导致 G-Buffer 阶段 Overdraw 爆炸,iPhone 12 上帧时间从 16ms 飙升到 38ms。美术同学还在不停往场景里堆微三角形(LOD 细分后的草地、破碎的岩石)。传统 G-Buffer 思路是"提前把所有信息准备好,后面光照阶段直接读",听起来很优雅,可一旦三角形密度爆表,每个像素都要写一堆材质属性,带宽就被吃光了。后来我们尝试把整个几何阶段砍到只剩 8 字节——只存一个三角形 ID 和材质 ID。光照阶段再去顶点缓冲区里"按需查询"材质数据。这一换,Overdraw 代价从"每像素采样纹理浪费"变成了"每像素只写两个整数",性能立刻稳住了。这就是 Visibility Buffer 想解决的问题。一、Visibility Buffer 核心概念1.1 什么是 Visibility BufferVisibility Buffer 这种几何表示方案,最早由 Burns 和 Hunt 在 2013 年的论文The Visibility Buffer: A Cache-Friendly Representation of Per-Primitive Data(JCGT)中系统化提出,近年被多家引擎和 GPU 厂商的示例工程推广。核心思想是:几何阶段只记录"这个像素被哪个三角形的哪个实例覆盖",完全不存材质属性。光照阶段再根据这些 ID 重新 fetch 顶点数据、插值、采样纹理。G-Buffer 每像素通常需要 20~40 字节(MRT 输出 Albedo、Normal、Metallic
返回列表