BlueRose
文章97
标签28
分类7
PBRT读后感与阅读建议

PBRT读后感与阅读建议

看懂PBRT需要有一定c++ 基础,并且对c++11有一定了解。一定的数据结构基础。

c++

  1. union
  2. 位运算符计算(幸好有上过计算机组成原理)

    c++11特征:

  3. 智能指针
  4. 多线程库与lambda
  5. 随机数库
  6. 枚举类

图元与相交加速计算这章大量的数据结构,看得人有点蛋疼。不过通过pbrt反过来学习c++与数据结构还是挺不错的。
另外十分庆幸本书没有使用模板、类型推导、类型萃取等泛型编程技巧。

想要完全吃透PBRT,需要读者写过工程性代码,对异步库、内存池代码有一定了解。

很可惜本人因为工作原因,对以上皆不熟。仅仅是知道c++11多线程库的函数以及其用法。内存池知道原理却没有用过。同时PBRT从头到尾大量地穿插了日志系统、性能统计、断言系统。这对我这种没有工程编程经验的人还说,可以说是相当遗憾,没有办法简单模仿PBRT写出一款比较完整的渲染器。

对于想看此书的人说的话

  1. 看了这本书对游戏、引擎开发有帮助么?

    有,但非常非常小,你应该去看《real-time rendering 4th》。因为图形API(direct3D、openGl)为你做太多的工作,举个例子贴图采样、mipmap、并行渲染。这些PBRT统统会实现,如果有时间去深入研究会是一件很有趣的事情。除非你想自己编写一个现代高性能渲染器(为了学习不推荐)或者想做学术研究的起步,不然本人不推荐。
  2. 与《全局光照技术——从离线到实时渲染》的关系以及读书建议
    我感觉使用水果与果汁的比喻会比较恰当,水果指代PBRT,果汁指代《全局光照技术》。《全局光照技术》把很多PBRT中的推算过程进行压缩(比如BRDF的可见性项的推导),直接告诉读者结果。而且PBRT有完整的代码(可以下载网上的场景用于渲染测试),相当详细,并且代码段都有页数标记,可以让读者找到书中对应的章节。

所以我认为正确的阅读法为:
首先对照两本书的目录确定好相关的知识点的位置。再开始看PBRT,看到PBRT新的章节前先看一遍《全局光照技术》思路理顺(至少有一定了解),再去看PBRT就比较轻松了。如果还是不懂看一下代码估计也懂得差不多了(这里特指因为英语不行而导致的无法理解的问题)

小贴士

pbrt第二版(中文版)与第三版不同的地方比想象的多(特别是最后几章,因为架构发生了很大变化),而且中文版很多地方望文生义。