找回密码
 立即注册
查看: 344|回复: 3

光线追踪-Unity-ComputeShader实现

[复制链接]
发表于 2022-9-7 13:15 | 显示全部楼层 |阅读模式
行为动机

学了Games101与Games202 (感谢闫老师分享), 我感兴趣就是光线追踪这一块
https://www.bilibili.com/video/BV1X7411F744?spm_id_from=333.337.search-card.all.click
Games最深的内容只讲了BVH 路径追踪与光源采样(入门确实够了),
但是嘞,
我想在光线追踪中跑PBR!
我想整个体积渲染!
我想做个次表面散射的皮肤!
我想用光线追踪渲染个更好看的Tifa!
我想渲染时间更快一点,而不是每一张图片渲染都等个几十分钟!
抱着这些问题,我就开始找其他的资料,
发现了,RayTracingInOneWeek系列


发现了,用ComputeShader写的光线追踪


还发现,坐我旁边的同事已经开始用 DXR捣鼓光追渲染器了,效果叼得一批,还能实时跑!
我承认,在此之前我对硬件跑光追一无所知,
于是乎,我查了一些资料,发现,原来18年的时候就能跑硬件光追了!



DX12与Vulkan都能跑硬件光追!

于是乎,我也屁颠屁颠地去下了个DX12光追Demo:


https://github.com/microsoft/DirectX-Graphics-Samples
功夫不负有心人,经过一个周末的死命折腾,写了几百行代码(Ctl+C+V),成功地跑了个牛逼哄哄的光追效果:



这个三角形很特别,它是光线追踪渲染的

但是勒,在无尽的API调用中,我迷失了自己,效果是整出来了,但是我都不知道干了什么!
于是我就开始反思,到底是哪出了问题?想了又想,是基础不牢!是不懂原理!核心的问题在于,我以为自己学了Games101 202,就明白了所有光追的知识了,但实际上却是一个刚刚入门!闫老师说:不推荐初学者去看PBRT,然后我就没去看!但实际上PBRT是包含了光追的大部分内容!因此我重整心态,掏出了我裸考过四六级的勇气去看PBRT,
https://pbr-book.org/
跳着跳着看,结合代码看,终于是有了一点头绪,
然后在去Github上找各种 光线追踪渲染器的源代码,看看他们的算法是怎么实现的,有了这些基础之后,
于是在Unity中用ComputeShader去实现了一版“光线追踪”,
为什么用ComputeShader写光线追踪?
因为用C++学光线追踪渲染太慢,用DXR学不到原理, 因此用ComputeShader非常适合学习光线追踪, 渲染速度还能接受 "所见即所得"!!!
一开始的效果长这样:




随后加入了,PathTracing, BVH,DisneyPBR,MIS,等效果与速度都有了很大的提升



DisneyPBR



反射 面光源



MIS 加快收敛



透射


光线追踪-Unity-ComputeShader
https://www.zhihu.com/video/1549447566420635648
B站高清视频连接:

后续打算:

1.实现PBRT中更进阶一些的算法:双向路径追踪 体渲染 次表面散射等
2.借助硬件的力量,将DXR融到光栅化的实时管线中
3.AI算法降噪?Maybe

最后

欢迎大家加入技术美术交流群(688075253):



TalkArtist

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2022-9-7 13:21 | 显示全部楼层
Joey同志目前在职还是在校?
发表于 2022-9-7 13:26 | 显示全部楼层
工作了
发表于 2022-9-7 13:30 | 显示全部楼层
都已经卖课了[尴尬]
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-15 02:44 , Processed in 0.090982 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表