Unity_StochasticSSR[2]-改进篇
继续上次的Unity_StochasticSSR-实现篇。这次来分享一下改进内容。本来想用HiZ的结果卡在第一步的MipMap Depth,Unity的RT非二次幂不能产生MipMap,所以就转头用了2D步进的追踪方式(求好心大佬告知怎么弄非二次幂MipMap)。首先呢改进的第一点就是TemporalFiltter。之前用的是CameraDepth的MtionVector,然后用UV - MotionVector来采样当前帧的反射RT。这也做有个坏处就是很鬼畜拖影,就像下面的视频展示。
https://pic1.zhimg.com/80/v2-62b7512f767d0abbf1673eae24269f84_b.jpg
上传视频封面
好的标题可以获得更多的推荐及关注者
可以看到,前面基于CameraDepth的拖影严重。。简直不能再恶心。后面使用了RayDepth来算的MotionVector可以得到一个比较正常的结果。
改动呢也是相当的简易。就是吧RayCasting阶段得到的rayPos的Z拿出来结合当前帧和上一帧的ViewProjectionMatrix来生成一个MotonVector。具体可以详见源代码。
https://pic4.zhimg.com/v2-d2c1385a2de1cd550e877d1ee4c10a07_b.jpg
https://pic2.zhimg.com/v2-4b48a955f742ac87fd08d8febae23643_b.jpg
完成这一步即可修复那种甩拖尾的残影效果。因为甩尾解决了差不多所以自然可以加强TAA的采样。得到的就是更少的噪点。如图。
https://pic4.zhimg.com/v2-ab6d68b6b82715c96f2dd0ccfea3cad4_b.jpg
https://pic2.zhimg.com/v2-5c9638a286d22982eda76775dbefc3f7_b.jpg
可以看到噪点几乎又少了百分之40的样子。。
第二个修改的地方就是上一版本因为是用了Temporal和相邻像素共用一个样本来去噪。所以导致的结果也是很模糊,虽然高粗糙度看不出来,但是低粗糙度下却很模糊。如下图对比(左边是改进的,右边是原来的)。
https://pic3.zhimg.com/v2-353444313bab8ac2d831be38cb47678d_b.jpg
修改也是灰常简单的。。直接做几个判断主要如 : 在低粗糙度下不使用ImportanceSampler,Resolver的偏移量为0,TAA的强度低一些,最后再加点锐化。
https://pic4.zhimg.com/v2-db8b6a65ef7252ac36e5f93808d28c0f_b.jpg
https://pic3.zhimg.com/v2-98aff6b2ffa14ca0a31d06f15bdf71a6_b.jpg
https://pic4.zhimg.com/v2-0290d6d25609de686629ac188f869fe7_b.jpg
https://pic1.zhimg.com/v2-a47c65094652f7ffc78fc908599d0244_b.jpg
完成这步即可得到地粗糙度下比较清晰的反射。
第三个修改的内容则是PreintegratedGF这一项。之前的版本我是用的Fersnel去在最后一个Pass混合的,但后来看了Ragnarok大佬的StochasticSSR才发现这个问题。所以我就修改了一下内容吧Fersnel去了,加上那张PreintegratedGF的LUT我不知道怎么生成。所以就用了虚幻的Mobile的曲面拟合近似的版本。
https://pic1.zhimg.com/v2-86d15890cf0be092f73306741d43991f_b.jpg
https://pic4.zhimg.com/v2-34fd2980bb709c06f8a450163730ca9a_b.jpg
PPT说这样可以减少方差,但是我对比好像只有红色 紫色这是很艳的颜色边缘会黑一圈而已。。上面是原来的下面是PreintegratedGF。
https://pic3.zhimg.com/v2-379d6f72b931e87d466d4570f4a6f167_b.jpg
https://pic1.zhimg.com/v2-0276eb01601143b28152620754550ba3_b.jpg
最后修改的则是追踪方式。因为没有MipMapDepth,所以也就没换HiZ了。这里用的是之前提到过的2D屏幕步进方法好处是能确保每次步进都是一个像素。
https://pic4.zhimg.com/v2-61698fc7ac877dbce048f61a67a5d917_b.jpg
https://pic4.zhimg.com/v2-99b187b9b761f32d8be3c7f03c3a036e_b.jpg
https://pic1.zhimg.com/v2-bee65c892c1a7d306eaf0c9096a0b8da_b.jpg
https://pic2.zhimg.com/v2-e3fb94edb2fa9ea161170bcadb0d4ffb_b.jpg
大概就是这样具体可以看源代码这些就是本次修改的内容,下面放几张图欣赏欣赏吧。下次弄出来HiZ再分享。
https://pic2.zhimg.com/v2-e0551c12da23deaf8c3108dd0f07551f_b.jpg
https://pic3.zhimg.com/v2-eee8850a7e902b55888e20b2bc921446_b.jpg
https://pic1.zhimg.com/v2-8a008d6037db1b0e565ed760145a2eb5_b.jpg
https://pic3.zhimg.com/v2-f283b3180de8d426d0953f619996406b_b.jpg
https://pic2.zhimg.com/v2-ced419204da4a7ac7fe65865c1cfe055_b.jpg
https://pic3.zhimg.com/v2-9b717597b66fd8e06bd4e0abcdd079a9_b.jpg
https://pic3.zhimg.com/v2-e360925369f372c3e9e4f3697f34bd23_b.jpg
https://pic3.zhimg.com/v2-c3875777769d23f06cdfff18032f9924_b.jpg
https://pic2.zhimg.com/v2-00bcc66031dfaaa0244caea23ea76e23_b.jpg
https://pic3.zhimg.com/v2-3ae14882e135c31b0a25a4caa96e9dba_b.jpg
https://pic2.zhimg.com/v2-5a37da773d96b60f8c9f0fbd708e71e6_b.jpg
https://pic3.zhimg.com/v2-4958f02e6e4b96005f1bb4b1d38fcb53_b.jpg
ennm,蛮漂亮的。。最后镇文图配GitHub。
https://pic2.zhimg.com/v2-736bae0e88cc3809dcb8002fad9395f0_b.jpg
下载地址:https://github.com/haolange/Unity-Stochastic-Screen-Space-Reflection
哇塞 太棒了你太好了 厉害,学习了! 资源不错,感谢分享。
页:
[1]