实时 Path Tracing 实现

前言

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

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视频

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值