前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用UE4/UE5的ddx/ddy做描边

用UE4/UE5的ddx/ddy做描边

作者头像
quabqi
发布2022-09-28 20:46:13
1.2K0
发布2022-09-28 20:46:13
举报
文章被收录于专栏:Dissecting UnrealDissecting Unreal

无论是用法线图/深度图或其他的图做后处理描边,本质都是求当前像素和上下左右像素的差值,差值较大的像素就是边缘。正好虚幻材质里有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复用这个结果是免费的。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-09-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档