用UE4/UE5的ddx/ddy做描边
UE4 UE5 描边
2023-06-13 09:13:29 时间
无论是用法线图/深度图或其他的图做后处理描边,本质都是求当前像素和上下左右像素的差值,差值较大的像素就是边缘。正好虚幻材质里有ddx/ddy这两个节点,可以直接算相邻像素的差值,而且有硬件的Buff加持,所以比自己手动偏移UV再采样贴图要省很多开销,除此外连连看也比传统描边做法简单很多,下面是具体做法。
ddx/ddy 文档上的说明如下:
虚幻引擎工具类材质表达式 | 虚幻引擎5.0文档 (unrealengine.com)
ddx是右减左的差值,ddy是下减上的差值。所以对于上面这张虚幻logo图,左边缘和上边缘是差值为正数的像素,右边缘和下边缘是差值为负数的像素,纯色的区域差值为0,因此分别取绝对值后加一起,不为0的像素就是边缘。
ddx/ddy为什么速度快呢?内部硬件怎么实现的我也不清楚,查各种资料看到是说因为ps通过SIMD指令一次算完一个quad里的所有像素,其实就是2x2的格子,因为quad内的所有像素都在同一个寄存器内,另外又因为GPU为了计算mips一定会计算ddx/ddy,所以顺便把这个信息暴露出来给shader用,无论怎样ddx/ddy内部都会做一次,所以shader复用这个结果是免费的。
相关文章
- UE4导入高度图
- UE4的右键菜单点一下消失闪烁解决方案
- 【ue4】【蓝图】概念篇
- 【ue4】【蓝图】流程篇
- 【ue4】【架构】游戏框架
- 【ue4】【使用】插件开发
- 【ue4】【使用】行为树
- 【ue4】【使用】光照系统_阴影
- UE4 Actor生命周期 SpawnActor DestroyActor剖析「建议收藏」
- UE4 GamePlay架构学习篇
- ue4材质节点介绍_C4D节点材质
- UE4地编基础-材质蓝图篇[通俗易懂]
- UE4投影矩阵[通俗易懂]
- UE4/5 usf、ush UniformBuffer的黏合过程
- UE4环境下连接MySQL数据库的实现(ue4连接mysql)
- UE4使用Redis轻松实现数据共享通讯(ue4 与redis通讯)