Path Tracing

懒得翻译了,相信搞图形学的人都能看得懂,2333

Path Tracing is a rendering algorithm similar to ray tracing in which rays are cast from a virtual camera and traced through a simulated scene. Path tracing uses random sampling to incrementally compute a final image. The random sampling process makes it possible to render some complex phenomena which are not handled in regular ray tracing, but it generally takes longer time to produce a high quality path traced image.

The random sampling in path tracing causes noise to appear in the rendered image. The noise is removed by letting the algorithm generate more samples, i.e. color values resulting from a single ray. A more in-depth explanation of the path tracing algorithm is given below.

Random Sampling

In path tracing rays are distributed randomly within each pixel in camera space and at each intersection with an object in the scene a new reflection ray, pointing in a random direction, is generated. After some number of bounces each ray eventually exits the scene or is absorbed. When a ray has finished boucing about in the scene a sample value is calculated based on the objects the ray bounced against. The sample value is added to the average for the source pixel.

The samples in a path-traced image are distributed evenly over all pixels. The color of each pixel is the average of all the sample values computed for that pixel.

The random components in path tracing cause the rendered image to appear noisy. The noise decreases over time as more and more samples are calculated.

Samples Per Pixel (SPP)

The defining factor for render quality is the number of samples per pixel (SPP).

The higher SPP you have in a rendered image the less noise will be noticeable. However the added quality per sample decreases the more samples you have already (since each sample is just contributing to an average over all samples). The difference in image quality between, for example, 20,000 SSP and 21,000 SSP will not be as noticeable as between 1,000 SSP and 2,000 SSP.

Sunlight does not require high SSP to give a nice image. Outdoor scenes can be rendered with relatively low SPP if sunlight is enabled. Emitters (torches, lava, glowstone, pumpkins, etc.) require a lot of SSP to reduce the noise, so indoor scenes and similar scenes in low-light environments take a much higher SPP number to look good.

Render Time

There is no definite answer to how long it will take to render a scene. The general guideline is that the longer you render an image, the better it will become. Take into account the diminishing returns explained above.

The time required to render a nice looking image depends on how well-lit the scene is, how many samples per second the renderer can produce (depending on how fast your CPU is), and how many pixels the canvas has.

Scaling the canvas has an effect on render time proportional to the pixel area of the canvas. An image of 800 by 800 pixels will take four times as long time to achieve the same quality as an image of 400 by 400 pixels since the total number of pixels has quadrupled. If your renders are taking too long, you can reduce the canvas size for quicker results.

More About Noise

Small but bright light sources, such as torches, add a lot of noise to a scene. It takes especially long time to render a scene lit mostly by a few torches. This is an unfortunate and unavoidable disadvantage of the Path Tracing rendering method.

The reason for this effect is based on the low probability for each sampled light path to include the torches, versus the high luminance of the object. The final render takes the average of all sampled values, but the average can be "too high" for a long time because of the high luminance. The average will decrease over time, but for a while there may be one pixel that has been lit by a particular light source in a neighborhood of several pixels that will stand out sharply against the others that have not yet been lit by the same source, hence the bright dots seen above at low sample counts.

SPP Comparisons

An indoor scene rendered with increasing SPP. The white numbers show SPP:

https://chunky.llbit.se/path_tracing.html

Path Tracing相关推荐

  1. Ray Tracing,Ray Casting,Path Tracing,Ray Marching 的区别?

    作者:洛城 链接:https://www.zhihu.com/question/29863225/answer/70728387 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...

  2. Q136:PBRT-V3,双向路径追踪(Bidirectional Path Tracing)(16.3章节)

    之前了解了路径追踪,参考如下: Q124:PBRT-V3,"路径追踪"积分器(14.5章节) 接下来,先回忆一下Path Tracing,然后具体了解Bidirectional P ...

  3. Q89:全局光照(Global Illumination)——Path Tracing(只用于间接光照)

    89.1 Path Tracing只用于间接光照 根据Path Trace的算法,只有当最终的反射光线撞击到发光材质物体时,才会对最初的撞击点进行"有效"着色,否则着色为" ...

  4. Q88:全局光照(Global Illumination)——Path Tracing

    88.1 引入(Introduction) 截至当前,回忆一下我们学过的针对直接光照和间接光照的不同反射模型. 直接光照: Phong反射模型.包含漫反射部分和高光反射部分. 间接光照: 对于镜面材料 ...

  5. 计算机图形学【GAMES-101】9、蒙特卡洛路径追踪(Path Tracing)(光源采样)

    快速跳转: 1.矩阵变换原理Transform(旋转.位移.缩放.正交投影.透视投影) 2.光栅化(反走样.傅里叶变换.卷积) 3.着色计算(深度缓存.着色模型.着色频率) 4.纹理映射(重心坐标插值 ...

  6. (中文详解篇)smallpt: 99行代码完成全局光照Path Tracing

    目录 0. 什么是SmallPT Features 1. 光线追踪需要了解知识 1.1 什么是全局光照? 1.2 渲染方程 2. SmallPT代码分析 2.1 代码块1 2.2 代码块2 2.2.1 ...

  7. 实时 Path Tracing 实现

    实现一个实时 Path Tracing 前言 1.代码优化 2.屏幕空间 3.光线追踪分辨率精简 4光线追踪反射分辨率精简 5.实时 Path Tracing 6.贴图坐标优化 7.降噪 8.超分辨率 ...

  8. Q88:全局光照(Global Illumination)——Path Tracing算法生成反射焦散效果的图形

    由于在镜面反射中,光线几乎可以保持来自光源的全部能量,并在表面曲度和折射率的作用下,产生聚焦或者发散,当这种光线接触到场景中其它对象的表面时,又会产生新的照明效果,于是焦散便产生了. 简而言之,即是: ...

  9. 3D建模和3D渲染技术专题一: 热身篇,光线追踪(path Tracing),环境光阴影(ambient occlusion),焦距效果(effect focus)介绍

    相比大家都看到过美国迪斯尼或者梦工厂制作的一些动画片,其中很多都是使用3D图像技术来实现的,也就是说根本不用使用摄像机就能拍出一部很好的动画片.现在想开个专题主要介绍一些3D建模和3D渲染. 我之前在 ...

最新文章

  1. playsound函数Linux使用,函数PlaySound和sndPlaySound的用法
  2. 电脑音响怎么插_【图片】汽车音响改装案例本田CRV改装德国HELIX汽车音响_汽车音响改装吧...
  3. [转]“Ceph浅析”系列之(二)—Ceph的设计思想
  4. SpringMvc的执行过程
  5. 1 京东_推荐好友拿好礼 | 每1积分可兑换30元京东电子卡
  6. 解决苹果手机点击返回键页面不刷新问题
  7. GRIB格式转换心得(转自博客:http://windforestwing.blog.163.com/blog/static/19545412007103084743804/)...
  8. hdu 2544(最短路)
  9. vim编辑器中常用的命令
  10. mui.ajax ie8,IE8+MVVM的适配方案尝试
  11. linux双网卡同时访问内外网
  12. python time和datetime、pytz
  13. 论文写作中Word设置公式居中编号右对齐保姆级教程
  14. Excel中的DATEDIF函数
  15. Vue播放m3u8视频格式的视频监控(适合移动端和pc端),用了Video.js,以及多视频列表循环播放代码,已测试,可播放
  16. python fields函数_Python函数详解
  17. 【微服务】166:导入数据到索引库
  18. LS1046nfs挂载文件系统
  19. Android HDMI audio设备插拔事件
  20. C#像素鸟(独自一鸟闯天下)

热门文章

  1. andoridView修改
  2. [网摘学习]在Ubuntu上安装和配置OpenStack Nova之二
  3. [Buzz.Today]2011.05.25
  4. python读文件的解码方式_跳过Python文件读取中的不可解码字符
  5. mysql submission_date_UiPath如何连接MySQL
  6. java property异常_Java常见的异常和解决的办法
  7. mysql常用数据类型的属性有哪些_MySQL数据类型和常用字段属性总结
  8. python中的随机函数怎么用_Python中随机数的使用方法有那些?
  9. python查看微信撤回消息_想查看微信好友撤回的消息?Python帮你搞定
  10. 功能测试常用6种方法_建筑管道常用的8种连接方法