《Ray Tracing in One Weekend》、《Ray Tracing from the Ground Up》读后感以及光线追踪学习推荐
《Ray Tracing in One Weekend》
优点:
- 相对简单易懂
- 渲染效果相当好
- 代码简短,只看书上的代码就可以写出完整的程序,而且Github上的代码是将基类与之类写在一起的,方便阅读
缺点:
- 看完书你依然不知道,渲染效果好是因为用了路径追踪
- 书中部分代码是有问题的
- 并没有使用标准库容器,没有一定c++基础看不了
点评
定位是光线追踪小学级别的入门书籍,可以让你大致了解光追的原理,一窥离线渲染的些许门道,而不至于遭受巨大打击。
《Ray Tracing from the Ground Up》
优点:
- 覆盖了比较多的基础部分
- 结构设计清晰,看代码很舒服
缺点:
- 此时年代过于久远(2007-9),高光模型竟然用phong
- 中文版翻译质量不佳
- 官网的代码是残缺不全的,也就是没有若干编程经验,学习此书寸步难行
- 渲染效果不如《Ray Tracing in One Weekend》
- 部分代码不如《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》读后感以及光线追踪学习推荐的更多相关文章
- OpenCascade Ray Tracing Rendering
OpenCascade Ray Tracing Rendering eryar@163.com 摘要Abstract:OpenCascade6.7.0中引入了光线跟踪算法的实现.使用光线跟踪算法可实现 ...
- 【Ray Tracing The Next Week 超详解】 光线追踪2-9
我们来整理一下项目的代码 目录 ----include --hit --texture --material ----RTdef.hpp ----ray.hpp ----camera.hpp ---- ...
- 【Ray Tracing The Next Week 超详解】 光线追踪2-8 Volume
Preface 今天有两个东东,一个是体积烟雾,一个是封面图 下一篇我们总结项目代码 Chapter 8:Volumes 我们需要为我们的光线追踪器添加新的物体——烟.雾,也称为participat ...
- 【Ray Tracing in One Weekend 超详解】 光线追踪1-4
我们上一篇写了Chapter5 的第一个部分表面法线,那么我们来学剩下的部分,以及Chapter6. Chapter5:Surface normals and multiple objects. 我们 ...
- 【Ray Tracing The Next Week 超详解】 光线追踪2-1
Preface 博主刚放假回家就进了医院,今天刚完事儿,来续写第二本书 Ready 我们来总结一下上一本书的笔记中我们的一些规定 1. 数学表达式 我们采用小写粗黑体代表向量,大写粗黑体代表矩阵, ...
- 【Ray Tracing in One Weekend 超详解】 光线追踪1-10
<Ray Tracing in One Weekend>完结篇 最近课程上机实验,封面图渲染时间也超长,所以写东西就落下了,见谅 这篇之后,我会继续<Ray Tracing The ...
- 【Ray Tracing in One Weekend 超详解】 光线追踪1-2
今天我们开始进入正篇 Chapter 3: Rays, a simple camera, and background 对于所有的光线追踪器,基本都有一个光线类,计算沿光线看到的颜色. 我们的光线是一 ...
- Peter Shirley Ray Tracing in One Weekend(下篇)
Peter Shirley-Ray Tracing in One Weekend (2016) 原著:Peter Shirley 下篇主要对本书的后5章节进行学习,包括材质球的Metal,和Diele ...
- Peter Shirley Ray Tracing in One Weekend(上篇)
Peter Shirley-Ray Tracing in One Weekend (2016) 原著:Peter Shirley 本书是Peter Shirley ray tracing系列三部曲的第 ...
随机推荐
- pandas常用函数之diff
diff函数是用来将数据进行某种移动之后与原数据进行比较得出的差异数据,举个例子,现在有一个DataFrame类型的数据df,如下: index value1 A 0 B 1 C 2 D 3 如果执行 ...
- 【.net】ASP.Net设置和取消设置web项目起始页
#在visual studio中设置和取消web项目的起始页 方法一:在所要设置的页面上右键->设为起始页 方法二:web项目上右键->属性页 website项目: tips:如果取消要取 ...
- 第三节: Quartz.Net五大构件之Scheduler(创建、封装、基本方法等)和Job(创建、关联等)
一. 五大构件 引言: Quartz.Net的五大构件 1. 调度器:Scheduler 2. 作业任务:Job 3. 触发器: Trigger 4. 线程池: SimpleThreadPoo ...
- 第十三节: EF的三种模式(三) 之 来自数据库的CodeFirst模式
一. 简介 [来自数据库的Code First模式]实质上并不是CodeFirst模式,而是DBFirst模式的轻量级版本,在该模式中取消了edmx模型和T4模板,直接生成了EF上下文和相应的类,该模 ...
- JavaScript 基础六 'use strict'严格模式下的规则
why 严格模式 [1] 消除js语法的一些不合理.不严谨.不安全问题,减少怪异行为并保证代码运行安全 [2] 提高编译器效率,增加运行速度 使用 [1]整个脚本启用严格模式,在顶部执行:" ...
- 字符串常量池和String.intern()方法在jdk1.6、1.7、1.8中的变化
字符串常量池也是运行时常量池 jdk1.6中,它是在方法区中,属于“永久代” jdk1.7中,它被移除方法区,放在java堆中 jdk1.8中,取消了“永久代”,将常量池放在元空间,与堆独立了 pub ...
- linux磁盘空间满?
磁盘空间满啦 找到项目的logs文件夹 进入logs文件夹,会看到很多access.log*文件. 在Xshell里,输入命令cd 到项目节点的logs文件夹 可能还需要清空下回收站.
- C# - 代码重构
隐藏更多 只暴露集合中供人使用的单一功能,将关于集合的更多功能隐藏掉. 旧版本 public class Animal{ private List<string> LanguageL ...
- localhost和127.0.0.1的区别
localhost(local)是不经网卡传输,它不受网络防火墙和网卡相关的的限制. 127.0.0.1是通过网卡传输,依赖网卡,并受到网络防火墙和网卡相关的限制. ::1 是IPv6中的12 ...
- mongoose 连接数据库操作
连接数据库 var mongoose = require('mongoose'); var schema = mongoose.Schema; // 连接MongoDB mongoose.connec ...