IT之家5月8日消息,当地时间5月7日,AMD更新了DGF(Dense Geometry Format,稠密几何格式)SDK至1.2版本,并引入一项名为DGF SuperCompression(DGFS)的新技术。
该技术旨在进一步压缩DGF数据,降低存储成本,同时保持对非DGF硬件的兼容性。
DGF 是一种面向硬件的高效几何压缩格式,其设计确保每个三角形所需的信息可通过一次128字节对齐的内存读取完成访问。然而,这一特性使得DGF作为存储格式时效率不高:顶点位置和压缩参数需要在多个块之间重复,并且为了数据对齐需要插入填充位。
DGFS 作为软件层面的压缩系统,可对DGF数据再次压缩,使几何体体积显著减小。经DGFS编码后的数据无法直接被硬件使用,但能够精确重建原始DGF块,并支持高效解码为传统的顶点和索引缓冲区,从而可在非DGF硬件上运行。
与直接存储DGF块相比,在资源包中采用DGFS有两个主要优势:压缩后文件体积最高可再减小22%;同时可以面向DGF和非DGF设备使用统一的资源格式。
DGFS 采用集群粒度压缩。每个三角形簇(即Meshlet)独立压缩和解码,这与现代渲染引擎中以小规模、自包含的三角形簇为单位的架构趋势一致。有观点将DGF视为对集群级加速结构(CLAS)的回应,但AMD澄清这其实是一种误解:DGF与CLAS并非替代关系,而是正交互补的技术。
DGFS编码器首先解码块顶点并构建统一的编码空间(锚点、指数和偏移量),将所有顶点转换至该公共空间后消除重复顶点。唯一顶点位置随后转换为差值,进行Zig-Zag编码,并以字节交错的结构化数组形式存储。AMD表示,这种布局有助于在DGFS流之上应用通用压缩时提高压缩率。
在压缩流中,顶点按特定顺序排列:唯一顶点按其在块中首次出现的顺序从顶点数组前端索引;重复顶点则放在末尾并从后端索引。每个块对应一张顶点表,用一位标识每个块顶点属于“唯一”还是“共享”集合。唯一顶点的索引可通过递增计数器计算,共享顶点的索引则直接存储。从数组后端索引共享顶点可使顶点表中存储的索引值更小。
AMD提供的测试数据显示,在原始存储占用方面,DGFS比DGF约小30%。在游戏(881275)场景中,DGFS数据不会常驻内存,因此压缩后的磁盘大小更为关键。
当采用GDeflate压缩后,DGFS比DGF约小20%。解码速度方面,单CPU核心即可在极短时间内完成大规模模型的解码,基于CPU的流式解码足够快。AMD同时指出,基于GPU的解码器同样可行,向量化版本的DGFS解码器具有良好的性能表现。
