PBRT作为一个比较完备和轻量级引擎,里面有很多细节和实现步骤我们都很难短时间掌握。因此,我决定写一系列的小书,来实现一个低级光追渲染引擎到PBRT的过渡实现。这个系列的小书不会去讲解和实现那些比较独特的内容,例如真实感相机等,而是对PBRT的主流渲染管线从细节到移植改编的实现。

光线追踪最好的入门系列之一是光追三部曲,这三本书可以让你短时间内就能拥有一个自己编写的光线追踪引擎,但是其完备性和鲁棒性都不够,可以用来渲染的场景也有限。而即使这三本小书学透了,再去学习PBRT[1]源码也会面临诸多困难,而PBRT[1]这本书的讲解结构也是非常松散的,不利于马上动手去实现。因此,我们的任务目标是在光追三部曲的基础上,从整体到细节去把握PBRT,直到把PBRT应用到我们自己的光线追踪引擎上去。

之所以选择的高级引擎书籍是PBRT,因为其代码只有不到三万行,跟我自己写的第一个比较完整的渲染引擎,一个医学数据渲染引擎(如下图)的代码量差不多,因此我感觉能对如何介绍里面的知识相对容易把握一些。

本系列的小书:《图形学C++必备参考资料》,《PBRT文件加载和设定》,《PBRT代码实战-从简单的引擎扩展到PBRT路径追踪引擎》……

在写这本书的时候,我其实是比较忐忑的。我一直在想,对于一个初学者而言,应该怎么去面对一个比较庞大而且复杂的引擎架构呢,以及,他们想看到一本什么样的书呢。为此我咨询了一些初学者,可以说,本书是一边写,一边向大家求得反馈而形成的。

PBRT是一个轻量级的系统,但仍然里面有比较复杂的逻辑结构划分,因此,本书作为PBRT解读系列的第一本书(也可以说《图形学C++必备参考资料》是第一本,这两本书是相辅相成的),意在能够让读者在有一定基础中快速把握整个PBRT系统,知道场景如何加载的,以及加载到了各个基类的什么位置,这样再研究该系统的话就会更轻松。

本书的售价是6元(电子版),但是并不直接收取费用。如果您免费得到了这本书的电子版,在学习和实现时觉得有用,可以往我们的支付宝账户(17853140351,备注:PBRT文件加载和设定)支持6元,您的赞助将是我们Dezeming Family继续创作各种图形学、机器学习、以及数学原理小册子的动力!

写完后我会在第一时间发布:

https://dezeming.top/

PBRT的程序运行流程相关推荐

  1. MFC 学习笔记(一):MFC单文档程序运行流程梳理与总结

    MFC 学习笔记(一):MFC单文档程序运行流程梳理与总结 1.MFC单文档程序运行流程 1.首先利用全局变量对象 theApp 启动应用程序 (这是因为这个全局对象,基类CWinApp中 this ...

  2. IOS学习笔记1—Iphone程序运行流程

    Iphone程序运行流程 main.m文件,iOS应用程序的主入口 main函数的两个参数为命令行参数,在ios开发中不会用到这些元素,包括这两个参数是为了与标准ANSI C保持一致 UIApplic ...

  3. 根据输入的年份、产品类型和随机数产生固定资产编号 即:固定资产编号=年份+0+产品类型+3位随机数 程序运行流程:请输入年份: …… 请

    根据输入的年份.产品类型和随机数产生固定资产编号 即:固定资产编号=年份+0+产品类型+3位随机数 程序运行流程:请输入年份: -- 请选择产品类型(1. 台式机 2. 笔记本 3. 其他): -- ...

  4. Android Studio程序运行流程(大白话迅速入门)

    Android Studio程序运行流程 前面我们说过了,开发过程中程序员需要关注的三处地方:第一处:activity Java类.第二是:模块中res文件下的AndroidManifest.xml文 ...

  5. (1.3)HarmonyOS鸿蒙启动程序运行流程

    程序启动运行流程: ①解析config.json文件 ②初始化 ③获取入口Ability的全类名(config.json里的module里的mainAbility) ④找到Ability并运行 ⑤运行 ...

  6. iPhone程序运行流程浅谈

    1. 和大多数语言一样,每一个iPhone应用也都是从主函数开始运行,它的main函数都在XCode的Other Reasource逻辑目录下. [cpp] view plaincopyprint? ...

  7. C++运行时候库操作概述和整个程序运行流程

    一.任何一个C/C++程序,它的背后都是一套庞大的代码来进行支撑,以使得该程序能够正常运行.这套代码至少包括入口函数.及其依赖的函数所构成的函数集合.当然,它还应该包括各种标准函数(如字符串,数学运算 ...

  8. JAVA程序运行流程

    Java程序运行 1.使用javac将后缀.java的源文件编译成.class字节码文件 2.JVM加载字节码(也称为类加载) 从表面上看,.class文件通过加载,生成某种形式的Class数据结构进 ...

  9. PHP程序运行流程:语法分析(Parse)与抽象语法树(AST),PHP-Parser

    什么是抽象语法树? 在 PHP5中,从 php 脚本到 Opcodes 的执行的过程是: Lexing:词法扫描分析,将源文件转换成 Token 流: Parsing:语法分析,在此阶段生成 Opco ...

  10. 学习Struts--Chap02:Struts2框架各个功能模块和程序执行流程的介绍

    1.Struts2的系统架构: 2.架构中不同Key的作用介绍: servlet Filters:过滤器链,client的全部请求都要经过Filter链的处理. Struts Core:Struts2 ...

最新文章

  1. maven项目中,如何导出项目所有的jar
  2. iPhone 13注定便宜不了,台积电已提前背锅
  3. Java:网络编程之UDP的使用
  4. php中获取网站访客来源的关键词方法
  5. (Java集合框架)集合框架概述和Collection常用功能及遍历
  6. 面试题解(2):loop相关
  7. 在ubuntu中使用MYBASE
  8. idea启动java Maven项目,出现“ java: 程序包xxxx不存在“
  9. [css] css如何消除字体的锯齿?
  10. 【输入一个数,判断是否为素数(质数)】
  11. 关于数据持久化的一个简介
  12. [源码和文档分享]基于汇编语言实现打字练习软件
  13. (转载)十四步实现拥有强大AI的五子棋游戏
  14. matlab里直线拟合,matlab如何拟合直线
  15. ACM解题总结——HihoCoder1199 (微软笔试题)
  16. Renascence架构介绍——文件夹
  17. html转换opml,asp.net下URL网址重写成.html格式、RSS、OPML的知识总结
  18. ARP协议(2)ARP协议格式详解
  19. BZOJ4516 [Sdoi2016]生成魔咒 后缀自动机/后缀数组
  20. Jupyter Notebooks学习分享

热门文章

  1. 网易云音乐 For Mac
  2. EXCEL制作行政区地图,小O地图EXCEL版发布新版本
  3. HMM隐马尔科夫模型及MATLAB实现
  4. python三元一次方程代码_求三元一次方程计算器代码
  5. 人声修音插件 – Antares Auto-Tune Pro 9.1.0.5 WiN
  6. Go语言实战--学习笔记--runner
  7. Firefly III 搭建个人财务记账平台
  8. UDS协议的项目应用
  9. 网易云Api,轻松获取音乐数据
  10. React跨域解决方案