| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> unity hdrp的TAA -> 正文阅读 |
|
[游戏开发]unity hdrp的TAA |
入口当hdrp开启了后处理后会执行PostProcessSystem.cs的Render,然后如果开启了taa则执行taaEnabled中的内容 获取历史和申请当前颜色rt,获取历史移动速度和当前移动速度rtGrabTemporalAntialiasingHistoryTextures主要收集历史颜色rt和申请当前颜色rt的。 GrabVelocityMagnitudeHistoryTextures主要是收集历史速度变化rt和当前速度变化rt的。 TAA核心DoTemporalAntialiasing这里是核心的taa的处理,taaParams主要是收集一些taa需要的参数,比如前面说的rt。 通过DrawProcedural渲染两个pass,都是属于Hidden/HDRP/TemporalAA中的pass。 颜色处理第一个pass是主要处理taa的地方。 首先顶点着色器中对进来的图片进行全屏的uv和位置信息获取 核心是片元着色:首先要获取最接近当前深度信息的附近的深度GetClosestFragment,原理是通过周围的四个像素获取深度值得到最接近当前深度的,加上这个深度值。 用这个值来对速度rt“_CameraMotionVectorsTexture”采样,这样得到的是一个基于摄像机移动后的速度变量。 有了这个速度变量motionVector,用当前的uv减他就是前一帧的uv了。 然后如果需要过滤可以通过GetFilteredHistory来过滤,他可以用HistoryBilinear来线性过滤前后值或者用HistoryBicubic5Tap来通过五张历史图片来得到过滤,这个方法来源于smaa。 亮度为关键因素然后会让历史颜色乘PerceptualWeight,PerceptualWeight主要是获取亮度信息,通过YCOCG图片的x通道或者通过Luminance提取亮度都可以。 然后通过Fetch4获取当前颜色以及周边四到八个颜色信息。然后通过FilterCentralColor来获取均值,相当于模糊了一次。 然后执行GetNeighbourhoodCorners获取周围最大亮度和最小亮度以及他们的平均亮度,有两种方式获取,一种是直接看最大最小的MinMaxNeighbourhood 另一种是通过求方差来获取VarianceNeighbourhood。 闪烁问题获取的最大最小亮度来裁剪历史颜色信息GetClippedHistory。这里的目的是减少前后帧混合时的闪烁,鬼影等问题。 然后通过SharpenColor来获取线性颜色信息。filteredColor = SharpenColor(samples, filteredColor, sharpenStrength); 再通过GetBlendFactor来计算混合的系数,通过历史亮度以及周边最大最小的亮度得到混合系数。 半透明计算如果要计算半透明,会用混合系数GetBlendFactor来获取历史颜色和当前颜色的alpha混合。然后颜色上也要跟alpha关联的变化 然后考虑是否需要tonemap,因为历史颜色混合会导致之前的颜色信息有所丢失,所以最后做一次tonemap会让颜色信息恢复。 最后再把当前颜色以及速度rt当作历史颜色和速度rt,让下次执行时可以获取历史颜色。 抖动颜色处理第二个pass就是做一些抖动颜色处理 缓存最后的PoolSource这里主要就是通过hash做值来保存渲染后的rt。 另外这里有一篇说ue的TAA,跟unity的做法相似,有部分不同。TAA原理及OpenGL实现 - 知乎 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/16 15:42:21- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |