《Ray Tracing in One Weekend》

优点:
  1. 相对简单易懂
  2. 渲染效果相当好
  3. 代码简短,只看书上的代码就可以写出完整的程序,而且Github上的代码是将基类与之类写在一起的,方便阅读
缺点:
  1. 看完书你依然不知道,渲染效果好是因为用了路径追踪
  2. 书中部分代码是有问题的
  3. 并没有使用标准库容器,没有一定c++基础看不了
点评

定位是光线追踪小学级别的入门书籍,可以让你大致了解光追的原理,一窥离线渲染的些许门道,而不至于遭受巨大打击。

《Ray Tracing from the Ground Up》

优点:
  1. 覆盖了比较多的基础部分
  2. 结构设计清晰,看代码很舒服
缺点:
  1. 此时年代过于久远(2007-9),高光模型竟然用phong
  2. 中文版翻译质量不佳
  3. 官网的代码是残缺不全的,也就是没有若干编程经验,学习此书寸步难行
  4. 渲染效果不如《Ray Tracing in One Weekend》
  5. 部分代码不如《Ray Tracing in One Weekend》,比如摄像机
点评

定位是光线追踪初中升高中级别的进阶书籍(五年中考三年模拟),覆盖的内容在当时应该是比较全的。但此书依然是教学性质的,很多产品级渲染器需要考虑的地方都没有讲。对于2016还在看这本书或者介绍这本书的,我真想往他们脸上糊上一本pbrt(本人看这本书是因为朋友推荐,看到15章时才发现此书年代久远还在用phong这种渲染模型,但本着有始有终的想法,还是硬把这本书看完了)。

不过他的采样设计貌似不适合直接用tbb加速(生成若干个随机数数组,然后通过一套跳转算法取数),直接用渲染会出现奇怪的撕裂斑块,可以通过自旋锁解决,但是速度会慢很多,奇怪的是就算了用自旋锁,路径跟踪渲染间接照明还是会出现奇怪的撕裂斑块。《Ray Tracing in One Weekend》是采用直接生成随机数的方法,消耗虽然大,但是应该可以直接使用tbb加速而不会产生错误效果。
稍微看了一下pbrt,感觉就是个产品级渲染器代码说明书。

学习推荐:

新手:《Ray Tracing in One Weekend》=》《Physically Based Rendering: From Theory to Implementation》

有离线渲染基础:《Physically Based Rendering: From Theory to Implementation》

《Ray Tracing in One Weekend》、《Ray Tracing from the Ground Up》读后感以及光线追踪学习推荐的更多相关文章

  1. OpenCascade Ray Tracing Rendering

    OpenCascade Ray Tracing Rendering eryar@163.com 摘要Abstract:OpenCascade6.7.0中引入了光线跟踪算法的实现.使用光线跟踪算法可实现 ...

  2. 【Ray Tracing The Next Week 超详解】 光线追踪2-9

    我们来整理一下项目的代码 目录 ----include --hit --texture --material ----RTdef.hpp ----ray.hpp ----camera.hpp ---- ...

  3. 【Ray Tracing The Next Week 超详解】 光线追踪2-8 Volume

     Preface 今天有两个东东,一个是体积烟雾,一个是封面图 下一篇我们总结项目代码 Chapter 8:Volumes 我们需要为我们的光线追踪器添加新的物体——烟.雾,也称为participat ...

  4. 【Ray Tracing in One Weekend 超详解】 光线追踪1-4

    我们上一篇写了Chapter5 的第一个部分表面法线,那么我们来学剩下的部分,以及Chapter6. Chapter5:Surface normals and multiple objects. 我们 ...

  5. 【Ray Tracing The Next Week 超详解】 光线追踪2-1

     Preface 博主刚放假回家就进了医院,今天刚完事儿,来续写第二本书  Ready 我们来总结一下上一本书的笔记中我们的一些规定 1. 数学表达式 我们采用小写粗黑体代表向量,大写粗黑体代表矩阵, ...

  6. 【Ray Tracing in One Weekend 超详解】 光线追踪1-10

    <Ray Tracing in One Weekend>完结篇 最近课程上机实验,封面图渲染时间也超长,所以写东西就落下了,见谅 这篇之后,我会继续<Ray Tracing The ...

  7. 【Ray Tracing in One Weekend 超详解】 光线追踪1-2

    今天我们开始进入正篇 Chapter 3: Rays, a simple camera, and background 对于所有的光线追踪器,基本都有一个光线类,计算沿光线看到的颜色. 我们的光线是一 ...

  8. Peter Shirley Ray Tracing in One Weekend(下篇)

    Peter Shirley-Ray Tracing in One Weekend (2016) 原著:Peter Shirley 下篇主要对本书的后5章节进行学习,包括材质球的Metal,和Diele ...

  9. Peter Shirley Ray Tracing in One Weekend(上篇)

    Peter Shirley-Ray Tracing in One Weekend (2016) 原著:Peter Shirley 本书是Peter Shirley ray tracing系列三部曲的第 ...

随机推荐

  1. MongoDB用户及数据库管理命令

    1.用户管理: 连接数据库: mongo 127.0.0.1:27017 切换到admin数据库: > use admin 创建管理员账户: db.createUser( { user: &qu ...

  2. 团体程序设计天梯赛(CCCC) L3015 球队“食物链” 状态压缩

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code #include <cstdio> #include ...

  3. POJ 1015 Jury Compromise(双塔dp)

    Jury Compromise Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 33737   Accepted: 9109 ...

  4. Luogu P1654 OSU!

    写法和CF235B Let's Play Osu!非常相似.但是这个题厉害就厉害在统计的贡献里面有一个平方的期望,而这个平方的期望和期望的平方是完全不一样的,需要另外统计,逻辑上仔细想一想就会明白. ...

  5. HZNU第十二届校赛赛后补题

    愉快的校赛翻皮水! 题解 A 温暖的签到,注意用gets #include <map> #include <set> #include <ctime> #inclu ...

  6. 携程apollo系列-客户端集成

    本文讲解如何在 Java 程序中集成 Apollo 配置, 主要涉及到一些基础用法. 对于一些高级用法, 比如如何加密/解密配置项 (可用于数据库密码配置), 如何动态切换数据源地址,如何动态切换日志 ...

  7. tensorflow 模型保存和加载

    使用 tf.train.Saver 保存:tf.train.Saver.save(sess, save_path, global_step=None, latest_filename=None, me ...

  8. python中的转义字符

    当我们需要在字符中添加特殊符号时,我们需要用\(即反斜杠来转义字符) 常用的转义字符: 注:如果不想转义添加的特殊字符,需要显示字符串原来的意思的时候,需要用r或R来定义 结果是这样的

  9. 深入理解JavaScript,这一篇就够了

    前言 JavaScript 是我接触到的第二门编程语言,第一门是 C 语言.然后才是 C++.Java 还有其它一些什么.所以我对 JavaScript 是非常有感情的,毕竟使用它有十多年了.早就想写 ...

  10. Lua中的协同程序

    [前言] 协同程序与线程差不多,也就是一条执行序列,拥有自己独立的栈.局部变量和指令指针,同时又与其它协同程序共享全局变量和其它大部分东西.从概念上讲,线程与协同程序的主要区别在于,一个具有多个线程的 ...