Unreal的SSR交点检测

关于 屏幕空间反射,可以参考文章很多,我觉得这篇写得还是蛮好的:Screen Space Glossy Reflections,借个图用用:

本文不考虑 粗糙度,也不考虑 多条反射射线,只借鉴一下 Unreal 引擎在处理 单条射线光线步进 时对 交点 的计算方式,用来改进我的插件 LWRP/URP SSR Water 的反射表现。

直接看下面这段最简单的 光线步进 代码片段:

#if SCALAR_BRANCHLESS    float MinHitTime = 1;float LastDiff = 0;float SampleTime = StepOffset * Step + Step; UNROLLfor( int i = 0; i < NumSteps; i++ ){float3 SampleUVz = RayStartUVz + RayStepUVz * SampleTime;// Use lower res for farther samplesfloat Level = Roughness * (i * 4.0 / NumSteps) + HZB_LEVEL_OFFSET;float SampleDepth = Texture.SampleLevel( Sampler, SampleUVz.xy, Level ).r;float DepthDiff = SampleUVz.z - SampleDepth;bool Hit = abs( DepthDiff + CompareTolerance ) < CompareTolerance;// Find more accurate hit using line segment intersection float TimeLerp = saturate( LastDiff / (LastDiff - DepthDiff) ); float IntersectTime = SampleTime + TimeLerp * Step - Step; float HitTime = Hit ? IntersectTime : 1;MinHitTime = min( MinHitTime, HitTime );LastDiff = DepthDiff;     SampleTime += Step;       }float3 HitUVz = RayStartUVz + RayStepUVz * MinHitTime;Result = float4( HitUVz, MinHitTime );

这里有一句比较有意思的注释:

Find more accurate hit using line segment intersection

在判断出射线和场景相交后,Unreal 并不着急返回 当前射线终点 对应的 屏幕坐标,而是根据上一段射线终点和当前射线终点相对于场景深度的偏移 插值 出一个更加准确的 屏幕坐标

有点绕口,画个图就明了了:

上图显示的是射线深度刚超过场景深度时的情形,图中 CurrentDiff 是正数,LastDiff 是负数,如果考虑正负号,则交点的屏幕坐标计算公式如下:

HitScreenUV = lerp(LastScreenUV, CurrentScreenUV, -LastDiff / (CurrentDiff - LastDiff)))

上面代码中的 LastScreenUV 即上一段射线终点对应的 屏幕坐标CurrentScreenUV 即当前射线终点对应的 屏幕坐标

-LastDiff / (CurrentDiff - LastDiff) 的分子分母都 乘以-1 即:

HitScreenUV = lerp(LastScreenUV, CurrentScreenUV, LastDiff / (LastDiff - CurrentDiff)))

这样就和 Unreal 的代码对应上了。

效果对比

我在 LWRP/URP SSR Water 的光线步进交点计算中并没有上面的 插值 操作,而是判断出相交后直接返回当前射线终点对应的屏幕坐标。

配合 抖动,在 采样Step数屏幕分辨率 比较高时,这样的做法表现其实也还不错。

不过,当我把分辨率调到 1200 x 600 时,之前的表现就一般般了,如下图:

添加插值后,还是 1200 x 600 的分辨率,表现就好多了:

如果把分辨率提到 2160 x 1080 这种常见的手机分辨率,表现就更好了:

做为一个水的shader,这样就差不多了,因为加上水波纹后,一切都是浮云:

个人主页

本文的个人主页链接:https://baddogzz.github.io/2020/03/06/Accurate-Hit/。

好了,拜拜!

更精确SSR的交点检测相关推荐

  1. mAP提升40%!YOLO3改进版—— Poly-YOLO:更快,更精确的检测和实例分割

    本文转载自AI深度视线. 精彩内容 YOLOv3改进版来了!与YOLOv3相比,Poly-YOLO的训练参数只有其60%,但mAP却提高了40%!并提出更轻量的Poly-YOLO Lite,还扩展到了 ...

  2. Poly-YOLO:更快,更精确的检测(主要解决Yolov3两大问题,附源代码)

    点击上方"计算机视觉工坊",选择"星标" 干货第一时间送达 作者丨Edison_G 来源丨计算机视觉研究院 论文地址:https://arxiv.org/pdf ...

  3. rcm认证_这款小型rcm可以更精确地执行外科手术

    rcm认证 Harvard researchers drew upon inspiration from the Japanese art of Origami to develop this inn ...

  4. 商业智能让营销更精确

    大数据背景下的驱动,让越来越多的行业和企业关注数据挖掘分析,其实,商业数据用于营销早在数十年前就展开了. 著名的美国百货公司少女怀孕案例,利用顾客的购买记录数据,推测出少女怀孕,然后向其推荐一系列孕妇 ...

  5. 公交导航准确度大PK:高德地图百度地图谁更精确

    万物复苏.春意盎然的春天,正是四处赏春踏青的好时节.但踏青景点经常堵车怎么办?坐公交啊!随着政府对公共交通体系的大力支持,绿色出行不仅成为广大市民上班通勤的新常态,也是出游的好帮手.那么,该怎么才能更 ...

  6. 回顾︱DeepAR 算法实现更精确的时间序列预测(二)

    deepAR已经上线Amazon SageMaker +GluonTS,有AWS的站台 + 本身的灵活性,实操可行性还是蛮高的.模型本身可以加入一些额外的属性信息,同时可以输出点预测 + 概率预测. ...

  7. Network Delay Simulator模拟延时、带宽甚至丢包率,更精确地模拟慢网速环境

    Network Delay Simulator 免费软件,下载地址 .我正在使用的,三种之中功能最强大,监听Network Interface Card (NIC)和TCP/IP stack之间的网络 ...

  8. GPS北斗授时服务,NTP让网络时钟同步更精确

    GPS北斗授时服务,NTP让网络时钟同步更精确 GPS北斗授时服务,NTP让网络时钟同步更精确 1.时间同步技术必定将是整个大数据处理系统的重要支撑和保障.时间同步技术使数据产生与处理系统的所有节点具 ...

  9. 用劳斯判据计算系统几个精确的虚轴交点

    用劳斯判据计算系统几个精确的虚轴交点 vpa函数控制精度 format long syms K s51=1; s52=39; s53=2*K+24; s41=11.4; s42=K+43.6; s43 ...

最新文章

  1. R语言dplyr包distinct函数去除重复数据行实战
  2. 【论文阅读】A Gentle Introduction to Graph Neural Networks [图神经网络入门](5)
  3. linux网络编程之inet_pton和inet_ntop函数
  4. 《Python Cookbook 3rd》笔记(1.9):查找两字典的相同点
  5. git 部分常用命令记录
  6. [nRF51822] 13、浅谈nRF51822和NRF24LE1/NRF24LU1/NRF24L01经典2.4G模块无线通信配置与流程...
  7. 完美解决banner图片适应分辨率不同的问题
  8. IDEA创建javaweb项目,及常见的请求和响应头
  9. 颠覆式创新看世界,读《第二曲线创新》有感
  10. 松翰单片机定时器c语言,松翰T0 定时器中断
  11. 今天给大家分享的案例就是关于电影的啦,我们一起来看看IMDBtop10000的电影排行榜数据
  12. 最全英豪工具箱(LvyhTools)PPT插件教程(前篇)
  13. 苹果7更新系统后显示无服务器,苹果手机备份还原之后显示服务器問題
  14. 【深度学习】入门之keras
  15. bootstrap4 横向表格
  16. python统计分析pdf下载_Python金融大数据分析PDF高清文档下载
  17. Unity热更新技术学习——AssetsBundle详解
  18. 二维矩阵的常见转换技巧
  19. windows10桌面_Windows 10自带桌面快捷方式管理工具!非常方便值得一试
  20. 戴森VR体验店:以科技开启未来无限可能 沉浸式购物场景,引领零售新体验

热门文章

  1. 接口数据——Josn格式规范
  2. 使用springboot快速搭建支付宝当面付应用
  3. IT业界的十大经典谎言[转载]
  4. 年货都买些什么?年货清单列表用便签记下来
  5. .NET 6 史上超全攻略
  6. 开源文档存储服务器,开源云存储服务器
  7. OpenCV直方图计算函数calcHist详解
  8. Weblogic漏洞 - Weblogic 弱口令漏洞
  9. Kinect for Windows培训视频
  10. C语言详解系列——循环语句详解(1)while语句的语法结构