开启辅助访问
切换到窄版
登录
立即注册
只需一步,快速开始
社区
BBS
找回密码
站务合作
搜索
搜索
在线大礼包
每日签到
本版
用户
引擎世界丨EngineWorld.CN
»
社区
›
3A引擎专区
›
Unity
›
Unity_StochasticSSR[2]-改进篇
返回列表
发新帖
Unity_StochasticSSR[2]-改进篇
[复制链接]
2963
|
3
|
2018-9-11 22:02:24
|
显示全部楼层
|
阅读模式
继续上次的Unity_StochasticSSR[1]-实现篇。这次来分享一下改进内容。本来想用HiZ的结果卡在第一步的MipMap Depth,Unity的RT非二次幂不能产生MipMap,所以就转头用了2D步进的追踪方式(求好心大佬告知怎么弄非二次幂MipMap)。
首先呢改进的第一点就是TemporalFiltter。之前用的是CameraDepth的MtionVector,然后用UV - MotionVector来采样当前帧的反射RT。这也做有个坏处就是很鬼畜拖影,就像下面的视频展示。
上传视频封面
好的标题可以获得更多的推荐及关注者
可以看到,前面基于CameraDepth的拖影严重。。简直不能再恶心。后面使用了RayDepth来算的MotionVector可以得到一个比较正常的结果。
改动呢也是相当的简易。就是吧RayCasting阶段得到的rayPos的Z拿出来结合当前帧和上一帧的ViewProjectionMatrix来生成一个MotonVector。具体可以详见源代码。
完成这一步即可修复那种甩拖尾的残影效果。因为甩尾解决了差不多所以自然可以加强TAA的采样。得到的就是更少的噪点。如图。
可以看到噪点几乎又少了百分之40的样子。。
第二个修改的地方就是上一版本因为是用了Temporal和相邻像素共用一个样本来去噪。所以导致的结果也是很模糊,虽然高粗糙度看不出来,但是低粗糙度下却很模糊。如下图对比(左边是改进的,右边是原来的)。
修改也是灰常简单的。。直接做几个判断主要如 : 在低粗糙度下不使用ImportanceSampler,Resolver的偏移量为0,TAA的强度低一些,最后再加点锐化。
完成这步即可得到地粗糙度下比较清晰的反射。
第三个修改的内容则是PreintegratedGF这一项。之前的版本我是用的Fersnel去在最后一个Pass混合的,但后来看了
Ragnarok
大佬的StochasticSSR才发现这个问题。所以我就修改了一下内容吧Fersnel去了,加上那张PreintegratedGF的LUT我不知道怎么生成。所以就用了虚幻的Mobile的曲面拟合近似的版本。
PPT说这样可以减少方差,但是我对比好像只有红色 紫色这是很艳的颜色边缘会黑一圈而已。。上面是原来的下面是PreintegratedGF。
最后修改的则是追踪方式。因为没有MipMapDepth,所以也就没换HiZ了。这里用的是之前提到过的2D屏幕步进方法好处是能确保每次步进都是一个像素。
大概就是这样具体可以看源代码这些就是本次修改的内容,下面放几张图欣赏欣赏吧。下次弄出来HiZ再分享。
ennm,蛮漂亮的。。最后镇文图配GitHub。
下载地址:
https://github.com/haolange/Unit ... en-Space-Reflection
回复
使用道具
举报
提升卡
变色卡
千斤顶
ilovedumei
|
2019-6-13 19:29:40
|
显示全部楼层
哇塞 太棒了 你太好了
回复
支持
反对
使用道具
举报
AaronW
|
2019-11-18 11:27:53
|
显示全部楼层
厉害,学习了!
回复
支持
反对
使用道具
举报
hanju
|
2020-7-3 11:35:48
|
显示全部楼层
资源不错,感谢分享。
回复
支持
反对
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
cg_bull
33
主题
266
回帖
3191
积分
中阶编码师
中阶编码师, 积分 3191, 距离下一级还需 809 积分
中阶编码师, 积分 3191, 距离下一级还需 809 积分
积分
3191
加好友
发消息
回复楼主
返回列表
CryEngine
Lumberyard
Unity
Unigine
xenko