GTA V 图形分析摘要

此文信息主要摘自 Adrian Courrèges 同学的 GTA V - Graphics Study 系列 (1, 2, 3),俺昨晚从笔记拷出来时,给 Adrian 同学发了一封邮件,请他允许我 reblog 一下。在得到 Adrian Courrèges 同学的同意后,俺就放上来了。

本文信息提炼后,去掉了绝大部分科普,如有不适,请配合原文的更多细节。

环境渲染

最外层的 cubemap 是每一帧实时生成的,目的是简化后续真实反射的渲染。

这个 cubemap 是一张低精度的 128*128 纹理,每个面 30 左右 drawcall,都是地表天空等较大像素......

为什么从本质上讲,渲染逻辑不适合放到子线程中去?

按: 本文成文于一年前 [2013-01-13],修相关的 bug 修得郁闷,遂成文,[2014-03-20] 整理旧文档时稍作修订。

为什么从本质上讲,渲染逻辑不适合放到子线程中去?

因为渲染是一个需要大量的 CPU 和 GPU 同时参与的操作,无论如何组织架构,在事实上均难以避免高频和实时的较大数量的数据的更新和传输,这是渲染(尤其是 大量动态物体的数据在不断被改变 的情况下)的本质决定的。

从实践上看,那些线程化渲染(threaded rendering)的常见做法中,勉强去做每帧同步,或隔帧同步,或延迟1-N帧同步,均会导致大量的细节被暴露给整个架构。此亦从根本......

知识共享许可协议
本作品由Gu Lu创作,采用知识共享Attribution-NonCommercial-NoDerivatives 4.0 国际许可协议进行许可。