24. DDX和DDY

您所在的位置:网站首页 ddy大于ddx 24. DDX和DDY

24. DDX和DDY

2024-07-03 21:06| 来源: 网络整理| 查看: 265

目的

DDX DDY是什么?

DDX 和DDY有什么作用?

介绍 | 偏导函数

DDX 和DDY是做查找斜率的节点,

在数学上:导数就是函数的变化率。几何意义是固定面上一点的斜率。

查找斜率需要两个数据,从一个值减去另一个值就可以计算出之间的差距。

偏导数计算

我们知道在光栅化的时刻,GPUs会在同一时刻并行运行很多Fragment Shader,但是并不是一个pixel一个pixel去执行的,而是将其组织在2x2的一组pixels分块中,去并行执行。而偏导数就正好是计算的这一块像素中的变化率。从上图可以看出来ddx 就是右边的像素块的值减去左边像素块的值,而ddy就是下面像素块的值减去上面像素块的值。其中的x,y代表的是屏幕坐标。

该值属于以红色突出显示的 2×2 块

ddx是右减左的差值

ddy是下减上的差值

注意:偏导数ddx/y可以计算我们FragmentShader中任意的变量。向量,矩阵等等。

验证

使用UV 执行节点,通过数值显示

效果

黑白边界是有0-1变化,因此使用DDX计算出一条垂直的直线。

示例:计算面的法线

面法线方向

我们使用DDX和DDY计算出全局空间中2个像素之间的坐标差值,计算出2个向量,

这俩个向量都是在这个三角形的平面上,使用Cross节点求出这个面的法线向量。

在使用转换转换功能把世界空间下的法线转换成切线空间下。

这样效果就完成,实现了不平滑的效果。

示例:描边效果

左边缘和上边缘是差值为正数的像素,右边缘和下边缘是差值为负数的像素,纯色的区域差值为0,因此分别取绝对值后加一起,不为0的像素就是边缘。

总结

DDX,DDY是偏导函数,

DDX和DDY可以重建法线出现问题。

资料

着色器导数函数简介|发条浆果 (aclockworkberry.com)

(51条消息) Unity Shader - ddx/ddy偏导函数测试,实现:锐化、高度图、Flat shading应用、高度生成法线_Jave.Lin的博客-CSDN博客_ddx ddy unity



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3