PBRT
文章平均质量分 82
图形跟班
we've got to find what we love.
展开
-
[PBRT-V3]怎么对比不同渲染算法的效果
面对不同的渲染算法,比如:PT、BDPT、PM、SPPM、Original MLT、PSSMLT、MMLT等等,对比不同渲染算法效果的常用方式是:相同时间下,渲染图片的质量(或者,渲染相同质量图片所需的时间)。这里涉及到一个关键问题:怎么评估渲染图片的质量? 一般是,计算渲染图片和参考图片(标准图片)的MSE(均方差)。参考图片的选择要特别注意!!! 参考图片的选择要特别注意!!! ...原创 2018-09-08 22:33:00 · 2133 阅读 · 0 评论 -
Q136:PBRT-V3,双向路径追踪(Bidirectional Path Tracing)(16.3章节)
之前了解了路径追踪,参考如下: Q124:PBRT-V3,“路径追踪”积分器(14.5章节)接下来,先回忆一下Path Tracing,然后具体了解Bidirectional Path Tracing。原创 2017-08-12 08:54:02 · 3607 阅读 · 4 评论 -
Metropolis Light Transport学习与实现
文章转自:http://www.cnblogs.com/starfallen/p/3509234.html 版权归原作者!这段时间一直在看Metropolis Light Transport(简称mlt),现利用这篇博文把之前看资料已经coding上的一些体会记录下来。1.Before MLT在MLT算法被提出之前,最热的GI算法bidirectional path tracing虽然对比于bas转载 2017-08-16 12:02:16 · 3315 阅读 · 0 评论 -
Q134:PBRT-V3,次表面散射(Subsurface Scattering)(15.5章节)
〇、引入前续: Q132:PBRT-V3,BSSRDF(双向散射表面反射分布函数)(5.6.2章节、11.4章节) Q133:PBRT-V3,BSSRDF的采样(15.4章节)在Q132、Q133中,都有用到“BSSRDTable对象中的一个叫做“profile”的Sr表”。 根据||po-pi||的值从这个表里获得Sr的值。 那么,问题来了:这个Sr表存放的具体是什么呢?是在什么时候原创 2017-07-22 19:08:45 · 1715 阅读 · 4 评论 -
Q133:PBRT-V3,BSSRDF的采样(15.4章节)
前续:Q132:PBRT-V3,BSSRDF(双向散射表面反射分布函数)(5.6.2章节、11.4章节) 从Q132中,咱知道了在给定(po, wo, pi, wi)的情况下怎么求解S(po, wo, pi, wi)。〇,概述这一章节,要做的事情主要是: 在只知道(po, wo)的情况,怎么对BSSRDF进行采样,然后得到(pi, wi)、其对应的概率pdf、S(po, wo, pi, wi)的原创 2017-07-18 22:29:56 · 1386 阅读 · 0 评论 -
Q114:阅读PBRT-V3官方源代码的正确姿势
这里是小编自己看code的笔记。 刚开始看这份code的时候,容易被搞迷糊。 所以,提醒自己一些小技巧。这里的内容将“持续更新”。发现有必要记录的小技巧时都来此更新一下。1,函数调用: 查看对应的callstack。 在目标函数中设置断点,在调试时查看; 在Xcode中,貌似不用进行调试,可以直接查看callstack;(这个之前没遇到过,记下)2,变量含义: 由于PBRT-V3的软件架原创 2017-06-15 18:10:58 · 3331 阅读 · 0 评论 -
Q132:PBRT-V3,BSSRDF(双向散射表面反射分布函数)(5.6.2章节、11.4章节)
一、BSSRDF的定义BSSRDF描述的是次表面中光的传播。考虑次表面中光的传播的话,光线离开次表面时的点(Po)和光线进入次表面时的点(Pi)不再是同一位置。如下方图示: BSSRDF的定义式:BSSRDF对应的渲染方程的一般形式:二、BSSRDF的建模与近似在给定po、wo、pi、wi时,总不能根据BSSRDF的定义式来求解S(po, wo, pi, wi)吧。 最直接的方法是建立各种BSS原创 2017-07-17 21:54:36 · 4499 阅读 · 0 评论 -
Q131:PBRT-V3,对比SurfaceInteration和MediumInteraction(笔记)
个人的笔记。对比SurfaceInteration和MediumInteraction(笔记)原创 2017-07-16 20:10:12 · 630 阅读 · 0 评论 -
Q130:PBRT-V3,非均匀介质的采样(11.3.3章节、15.2.2章节)
PBRT-V3中是用3d grids来表示非均匀介质的。一、非均匀介质的表示之前做的笔记截图如下: 接下来关于“密度”和“sigma_t”的理解就是个人YY啦!假设每个小正方体中最多可以装64个粒子。 那么,小正方体中保存的密度值=该小正方体中装的粒子数目/64。 比如,小正方体中只装了32个粒子,则对应的密度为0.5。GridDensityMedium类中的成员变量sigma_t保存的是一个原创 2017-07-16 19:37:07 · 1016 阅读 · 0 评论 -
Q129:PBRT-V3,均匀介质的采样(15.2.1章节)
对于均匀介质的采样,推导过程截图如下:原创 2017-07-16 11:04:18 · 1217 阅读 · 0 评论 -
Q127:PBRT-V3,理解“体渲染”积分器的关键竟然是这张图
“体渲染”积分器是在“路径追踪”积分器的基础上考虑了场景中的介质,相当于是对“路径追踪”积分器的拓展。 所以,在学习“体渲染”积分器之前,得有“路径追踪”积分器的基础。参考: Q124:PBRT-V3,“路径追踪”积分器(14.5章节)一、那张关键的图在学习“体渲染”时,一直感觉云里雾里。突然发现,理解“体渲染”积分器的关键竟然是这张图: 对应的方程: 上图和方程描述的是: 一条光线从原创 2017-07-16 09:47:51 · 2149 阅读 · 2 评论 -
Q128:PBRT-V3,“体渲染”积分器的“传播方程”(15.1章节)
对比“路径追踪”积分器和“体渲染”积分器中长度为n的路径上返回的光的计算:原创 2017-07-16 10:33:22 · 896 阅读 · 0 评论 -
Q137:PBRT-V3,各种采样(Sampling)之间的逻辑
文章内容是小编个人当前对PBRT-V3的理解,可能和实际有偏差。一、概述PBRT-V3中最直观最常用到采样的地方有: 采样0,对单位正方形进行采样; 采样1,对Film上的每个像素点进行多次采样; 采样2,对交点处的BSDF进行采样; 采样3,对具体光源进行采样; 采样4,从所有光源中随机选取一个光源;另外一个不怎么常用到的采样是: 采样5,Metropolis Sampling(这个是原创 2017-08-26 15:51:54 · 2556 阅读 · 0 评论 -
Q138:PBRT-V3,伪随机数发生器(pseudo-random number generator,RNG)(A.1.2章节)
PBRT-V3中的伪随机数发生器RNG是用PCG pseudo-random number generator (O’Neill 2014)的算法实现的。原创 2017-08-28 09:23:23 · 1712 阅读 · 0 评论 -
Q139:PBRT-V3,Metropolis Light Transport (MLT)(16.4章节)
看这篇文章之前,可以先看看小编之前转载的一篇博文: Metropolis Light Transport学习与实现后文内容的结构不是“教程”样式的,而是个人完成初步学习之后对学习结果的简单总结样式。主要是对个人理解的沉淀。一、概述前面已经学过BDPT(Bidirectional Path Tracing, 双向路径追踪)。 BDPT的基本思路是: 1,对每个像素点进行多次采样; 2,每个采样原创 2017-08-29 23:19:54 · 2361 阅读 · 4 评论 -
[PBRT-V3]从MCMC的角度分析MLT
关于MLT,之前有过一篇博文:Q139:PBRT-V3,Metropolis Light Transport (MLT)(16.4章节)为了更好地理解MLT,小编决定从MCMC的角度对该渲染算法分析一下。关于MCMC,主要参考如下(感谢Eureka和刘建平Pinard写了这些文章)。 Eureka的博文: 马尔可夫链蒙特卡罗算法(MCMC) 刘建平Pinard的博文: MCMC(一...原创 2018-08-20 20:20:21 · 793 阅读 · 0 评论 -
How to convert hair particles to mesh in Blender
This article is from: https://blender.stackexchange.com/questions/70373/how-to-convert-hair-particles/70442#70442 The copyright belongs to the original author.转载 2018-07-20 23:48:33 · 564 阅读 · 0 评论 -
[PBRT-V3]代码中的#define(持续更新)
#define的定义其实就是简单的文本的替换1. ARENA_ALLOC(arena, Type)#define ARENA_ALLOC(arena, Type) new ((arena).Alloc(sizeof(Type))) Type实际使用的情况类似于这样: si->bsdf = ARENA_ALLOC(arena, BSDF)(*si);这段code...原创 2018-07-12 12:39:08 · 377 阅读 · 0 评论 -
Uniform Grid , KD-Tree , BVH 性能比较
文章转自:https://blog.csdn.net/StevenZhai0504/article/details/28420195 版权归原作者!Ray tracing中,每条光线都需要和场景中所有的图元求交(这里我们假设所有的图元都是三角形)。Brute force的方法就是一点一点的遍历每个图元,然后找出与光线交点距离光线起始点最近的图元,当然这种方法的算法复杂度是O(N)的,对于...转载 2018-06-14 17:08:12 · 3624 阅读 · 0 评论 -
Q146:PBRT-V3,对系统进行拓展(以添加一个新的Integrator为例)
本文的主要内容是:给PBRT-V3系统添加一个新的Integrator(比如,vcm),确保在编译PBRT-V3时能够编译到新添加的vcm文件,并能编译成功。 不含vcm的具体实现(必须实现的函数全部实现为空函数)。具体操作截图如下。一、新建文件二、添加相关代码三、debug确定运行程序是能够调用到vcm的render()原创 2017-10-26 12:12:35 · 638 阅读 · 0 评论 -
In C++, what is a memory arena?
This article is from: https://www.quora.com/In-C++-what-is-a-memory-arena The original author holds the copyright.A memory arena is simply a large, contiguous chunk of memory that is allocated once an转载 2017-10-31 09:35:41 · 1268 阅读 · 0 评论 -
Q135:PBRT-V3,随机渐进光子映射(Stochastic Progressive Photon Mapping)(16.2章节)
一、概述一开始出现的是Photon Mapping,后来有了Progressive Photon Mapping,后来才有了Stochastic Progressive Photon Mapping。 关于这三个的前世今生等相互关联,参考: photon mapping学习笔记 再谈光子映射前面的都不是重点。 咱关注的是PBRT-V3上介绍的SPPM(Stochastic Progressi原创 2017-07-28 09:22:08 · 4737 阅读 · 1 评论 -
Q142:PBRT-V3,交点处各种微分的求解(三角形,3.6章节)
根据三角形的顶点坐标、顶点uv、顶点法向量,怎么求三角形上任意点处的各种微分(,)呢?关于关于求法和类似,只需要将其中的“顶点p”换成“顶点的法向量n”。原创 2017-09-02 10:58:07 · 688 阅读 · 0 评论 -
Q141:PBRT-V3,交点处各种微分的求解(球面,3.2章节)
第一遍看这本书时,不理解为什么要求解交点处的各种微分。 后面才发现是在“纹理过滤”中要用到。对于球面交点处各种微分的求解,简单截图如下:总结一下:只要知道曲面方程、uv方程,就可以求出交点处的各种微分。原创 2017-09-01 21:48:55 · 784 阅读 · 0 评论 -
Q140:PBRT-V3,各种渲染算法(Integrator,积分器)汇总
PBRT-V3中各种渲染算法(Integrator)汇总截图如下:各种渲染算法(Integrator)之前的博文链接:WhittedIntegrator: Q111:PBRT-V3系统概述中的5.1分段DirectLightingIntegrator: Q120:PBRT-V3,“直接光照”积分器(14.3章节)PathIntegrator: Q124:PBRT-V3,“路径追踪”积分器(14原创 2017-08-30 11:03:49 · 1785 阅读 · 2 评论 -
Q124:PBRT-V3,“路径追踪”积分器(14.5章节)
〇、概述路径形式的LTE:由这个方程得知,要求解从撞击点p1返回到相机p0的辐射率,需要解决两个问题:问题1,怎么对无穷条路径返回的辐射率进行求和?问题2,怎么求某一条路径返回的辐射率?一、怎么求和?可以使用Russian roulette方法。参考: Q122:PBRT-V3,提高Monte Carlo积分计算效率的方法——Russian Roulette和Splitting(13.7章节)那么原创 2017-07-13 21:43:45 · 1749 阅读 · 5 评论 -
Q120:PBRT-V3,“直接光照”积分器(14.3章节)
DirectLightingIntegrator(直接光照积分器)是PBRT-V3中介绍的第二个积分器。第一个WhittedIntegrator。 回忆一下WhittedIntegrator: Q111:PBRT-V3系统概述中的5.1分段。DirectLightingIntegrator和WhittedIntegrator有很多相同之处: 1,概念上: 都只考虑直接光照。(间接光照部分只考原创 2017-07-12 13:05:42 · 1982 阅读 · 0 评论 -
Q107:Mac系统下GDB对PBRT-V3进行debug
参考:Q107:Linux系统下GDB对PBRT-V3进行debugMac系统下GDB的使用和Linux下基本一样。主要发现两处不一样的地方。其一,有关文件路径Linux中类似于:/home/lbzeng/pbrt-v3/src/integrators/directlighting.cpp而Mac中是:/Users/lbzeng/pbrt-v3/src//integrators/directligh原创 2017-06-10 19:14:31 · 773 阅读 · 0 评论 -
Q106:Mac系统下安装编译PBRT-V3
Mac和Linux比较类似,所以,“Mac系统下安装编译PBRT-V3”和“Linux系统下安装编译PBRT-V3”是非常相似的。基于“Q106:Linux系统下安装编译PBRT-V3”,看看Mac下不同的地方。对了,如果在Mac上使用类似于Linux上apt-get工具来安装软件的话,(Mac上对应的是homebrew)homebrew的安装参考: Mac上安装homebrew(类似于Linu原创 2017-06-10 17:38:34 · 1833 阅读 · 3 评论 -
Q109:用PBRT渲染Blender导出的模型(3)
前续: Q109:用PBRT渲染Blender导出的模型 Q109:用PBRT渲染Blender导出的模型(2)这里只是小编自己练习用Blender建模的笔记。参考:Sebastian Lague做的“卡通人物从建模到动画”系列视频。 视频可以在优酷上找到: http://v.youku.com/v_show/id_XMTkwOTM3OTcyNA==.html?f=29119101&spm=原创 2017-06-07 19:17:18 · 1021 阅读 · 0 评论 -
Q118:PBRT-V3材质及其对应的反射模型(笔记)
Matte材质及其对应的反射模型:设置材质和反射模型是在材质对象的ComputeScatteringFunctions()成员方法中。 下方是Matte材质的ComputeScatteringFunctions()成员方法的截图: 调用该方法的callstack截图如下: 其他材质及其对应的反射模型:MatteMaterial Kd, a spectral diffuse refle原创 2017-06-19 15:33:12 · 1355 阅读 · 0 评论 -
Q109:用PBRT渲染Blender导出的模型
前续:Q106:Linux系统下安装编译PBRT-V3 这篇文章的内容主要分两部分:1,用Blender建立模型;2,用PBRT渲染一、用Blender建立模型咱在这里要建立的模型是“马克杯”。完全参考: 台湾大神的blender教程全集 中的“马克杯”部分。小编开视频做的笔记截图: 将模型数据导出,截图如下:导出的有如下两个文件: 二、用PBRT渲染参考:http://pbrt.org/u原创 2017-06-05 11:35:43 · 2405 阅读 · 2 评论 -
Q117:PBRT-V3反射模型(Reflection Models)笔记
看完反射模型这一章节,超级简略总结笔记:原创 2017-06-18 16:13:52 · 893 阅读 · 0 评论 -
Q116:PBRT-V3场景描述文件.pbrt格式解析
对于PBRT-V3场景文件.pbrt格式,小编自己根据自己的理解总结如下:1,“#”后面的内容为注释举例1:#sphere.pbrt#first we set up the eye2,每一行的第一个词为“关键字”,在api.cpp中对应着处理函数。举例2:#first we set up the eyeLookAt 1 1 10 0 0 -1 0 1 0 #ex ey ez lx ly l原创 2017-06-17 20:43:28 · 3614 阅读 · 9 评论 -
Q109:用PBRT渲染Blender导出的模型 (2)
前续:Q109:用PBRT渲染Blender导出的模型这里只是小编自己练习用Blender建模的笔记。还是参考:台湾大神的blender教程全集 对应内容是其中“小狗玩具模型”部分。理论部分和“前续”是一样的,后面主要是小编看视频学习时做的笔记。还有就是,将模型导出后,用PBRT渲染时的脚本机器输出图形。笔记PBRT脚本#sharp.pbrt -- a simple pbrt input file原创 2017-06-05 23:45:25 · 2084 阅读 · 0 评论 -
Q115:Linux系统下CodeBlocks对PBRT-V3进行编译和调试
我也是醉了,在各种环境下对PBRT-V3进行了编译和调试。 参考:Q113:PBRT-V3分别在Linux和Mac下的编译与调试(汇总)不过,小编对CodeBlocks“情有独钟”,所以,必须在CodeBlocks下完成这个事情。(注意是Linux系统)一、用cmake生成CodeBlocks的工程文件二、编译三、调试原创 2017-06-16 11:37:05 · 1248 阅读 · 0 评论 -
Q113:PBRT-V3分别在Linux和Mac下的编译与调试(汇总)
Linux系统下:Q106:Linux系统下安装编译PBRT-V3Q107:Linux系统下GDB对PBRT-V3进行debug另外,也可以直接用CodeBlocks: Q115:Linux系统下CodeBlocks对PBRT-V3进行编译和调试Mac系统下:Q106:Mac系统下安装编译PBRT-V3Q107:Mac系统下GDB对PBRT-V3进行debug当然,也可以直接使用Xcode:Q11原创 2017-06-13 13:39:02 · 2662 阅读 · 0 评论 -
Q106:Linux系统下安装编译PBRT-V3
106.0 引入本人之前尝试过在windows系统中编译pbrt-v3,但是出现了很多错误。pbrt-v3的源代码中部分Linux的函数没有用宏包好,而是直接使用,所以在windows环境下就报错了。而且,报错的这些函数和pbrt的“图形”核心并无关系,所以本人不想深入研究这些函数。所以,决定转到Linux系统。所以,也就有了前面安装Linux系统的博文: Q105:PC双系统:Windows 7原创 2017-05-18 09:19:27 · 3305 阅读 · 0 评论 -
Mipmap
小编认为,帮助理解mipmap最好的资料来自wiki: https://en.wikipedia.org/wiki/Mipmap下方文章转自:https://my.oschina.net/sweetdark/blog/177812 版权归原作者。Mipmap是一个功能强大的纹理技术,它可以提高渲染的性能以及提升场景的视觉质量。它可以用来解决使用一般的纹理贴图会出现的两个常见的问题:闪烁,当屏幕上转载 2017-07-02 11:43:00 · 1116 阅读 · 0 评论 -
图形学中的贴图采样、走样与反走样等,图形学走样
文章转自:http://www.bkjia.com/ASPjc/912364.html 版权归原作者!计算机图形学中不可避免的会涉及到图像分析与处理的相关知识,前些时间也重温了下常用到的采样、重建以及纹理贴图等内容,并对其中的走样与反走样有了更多的认识,这里小结一下。1. 基本问题信号的采样与重建过程中首先面临着两个基本的问题:给定一个连续的信号g(x)以及它的离散采样信号gs(x),能否通过gs转载 2017-07-02 11:32:12 · 2753 阅读 · 1 评论