实现一个实时 Path Tracing

  • 前言
  • 1.代码优化
  • 2.屏幕空间
  • 3.光线追踪分辨率精简
  • 4光线追踪反射分辨率精简
  • 5.实时 Path Tracing
  • 6.贴图坐标优化
  • 7.降噪
  • 8.超分辨率 DLSS
  • 其他加速方法
  • 加速收敛方法
  • 实现代码
  • PT视频

前言

大半年前已经开发出来但是一直没心情写博客,而且骂我的人很多,说我抄袭等等,但是这项目对我负收益,我是开源的

1.代码优化

时隔半年终于有时间写个教程
求交计算很多都可以优化简化减少计算量

2.屏幕空间

首先就是屏幕空间在一个3D场景中 只计算显示在屏幕的三角形 减少了在场景之外的三角形计算,按分辨率2000*2000=4000000个三角形需要计算,大部分是重复的我们直接记住索引,有索引标记的就光线追踪

3.光线追踪分辨率精简

在屏幕空间基础上,分辨率20002000,我们500500 可以再优化4/3的性能

4光线追踪反射分辨率精简

光线追踪有反射深度128SPP, 原本2K的分辨率,我们50*50分辨率光线追踪,可以再优化20倍的性能

5.实时 Path Tracing

路径追踪是需要多帧合成的图片,每张图片大量噪点,把合成的光线追踪结果存放在贴图坐标上(创建一个数组按贴图坐标存放),如此离线存在贴图坐标中,我们每次去噪或者以30帧后亮点微弱混合,便可看不到路径追踪的噪点(这里直接/30亮点权重不一样,后面++1才能颜色无偏差)

6.贴图坐标优化

贴图坐标有光线追踪后保存了颜色可以离线显示,没有照到的坐标是0(黑色的)摄像机移动是黑色一片片的,光线追踪这部分是大量噪点的(解决办法)用一个很小的贴图比如1010图片,混合保存光线追踪追踪
有一张大的精细的光影图片和这张小的光影图,没有照到的坐标是黑色,直接用这个小光影图的颜色(为什么用小光影图,因为一张2K分辨率的图片需要渲染10分钟,但是1张10
10的颜色图片光线追踪很快)

7.降噪

从30亮点开始还是能看到轻微的噪点变动,50亮度也许看不出噪点但是需要的帧数太多所以还是需要降噪,降噪屏幕模糊,TAA,SVGF

8.超分辨率 DLSS

就是画面放大2-N倍不失真, 光线追踪最吃性能的就是分辨率,相邻的像素例如123像素1,3光线追踪,2直接混合颜色节省了1次光线追踪计算,但是混合色画面是模糊的,在1,3像素混合得出2,1,7像素混合得出4,中间5像素直接使用一个位置颜色,可以避免画面模糊,如此整个画面就减少了1半像素光线追踪或者四分之三性能将被节省

其他加速方法

多线程 CPU多的叠加性能
GPU加速 cuda
等计算通过并行显卡加速叠加性能
lod 对一个模型远处的时候低精度减少模型面数
模型反射标记 同一个标记的优先进行三角形相交计算
简化法向量 可以简化成上下左右前后方向 方向相对的再相交计算 减少了方向不相对却浪费计算三角形相交
光栅化加速 一般都说SHE BVH 个人觉得还是光栅化快
vc的编译参数使速度最大化、

加速收敛方法

随机蒙特卡洛有的地方可能永远也扫描不到,路径追踪一般使用sobol 和重要性采样
sobol 均匀地提前在一个位置中散步随机数,使得扫描得时间固定
重要性采样重要得地方多采样几次

实现代码

PT视频

实时 Path Tracing 实现相关推荐

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

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

  2. Path Tracing

    Path Tracing 懒得翻译了,相信搞图形学的人都能看得懂,2333 Path Tracing is a rendering algorithm similar to ray tracing i ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. Linux文件管理以及一些常用的基础命令解析
  2. 沙洋有几个微服务群_集群 分布式 微服务
  3. Redis集成到Maven工程(Jedis客户端)
  4. 难道计算机专业真的没落
  5. python的ols_【量化工具】OLS在python中的四种实现方式
  6. phabricator mysql_Phabricator服务的搭建
  7. 解决Azure中COULD NOT LOAD FILE OR ASSEMBLY问题
  8. python vs java 搞笑视频_Python和Java该学哪个?别纠结了700集视频合集,限时分享...
  9. 老掉牙的ArrayList解析它它它又来了
  10. 金蝶KIS商贸版开发销售出库单、销售订单带商品图片打印单据
  11. matlab矩阵运算rank,Matlab矩阵运算
  12. 门诊电子处方软件免费版本2.3
  13. MOS管参数每一个参数详解-收藏版
  14. 举个栗子!Tableau 技巧(89):如何在 Tableau 官网提交 Case
  15. Excel如何冻结窗口
  16. Dreaming to Distill Data-free Knowledge Transfer via DeepInversion
  17. Interproscan linux版本详细安装教程及运行报错解决方案
  18. Robot Framework作者建议如何选择自动化测试框架
  19. 做网站必须托管服务器吗,做网站必须托管服务器吗
  20. 三国志战略版:Daniel_新晋减伤战法-奇计良谋

热门文章

  1. 浅谈CSS3动画的凌波微步--steps()
  2. C# Winform Chart控件用法6之雷达图
  3. 【OpenCV入门】读取图片/视频/调用摄像头
  4. python的csv模块自动删除空白_从CSV中删除空白行?
  5. python开发工程师必刷题型(长期更新)
  6. 如何把小米和计算机共享,小米手机怎么通过usb共享电脑上网
  7. 2018年上半年慈善组织互联网公开募捐事业健康有序发展
  8. android自动化测试之生成单元测试报告
  9. 软件新秀C4D,为什么游戏影视建模不用它?3Dmax/Maya/Zbrush好在哪里?
  10. 肖战画的端午粽子,心思巧妙,每个粽子都有都代表不同的意义