重庆网站编辑职业学校,孟村做网站价格,html网页设计实验心得,如何找百度做网站有关Unity的dx与dy的概念
引用的文章
1link 2link 3link 4link
有关概念
我们知道在光栅化的时刻#xff0c;GPUs会在同一时刻并行运行很多Fragment Shader#xff0c;但是并不是一个pixel一个pixel去执行的#xff0c;而是将其组织在2x2的一组pixels分块中#xff0c;…有关Unity的dx与dy的概念
引用的文章
1link 2link 3link 4link
有关概念
我们知道在光栅化的时刻GPUs会在同一时刻并行运行很多Fragment Shader但是并不是一个pixel一个pixel去执行的而是将其组织在2x2的一组pixels分块中去并行执行。而偏导数就正好是计算的这一块像素中的变化率。从上图可以看出来ddx 就是右边的像素块的值减去左边像素块的值而ddy就是下面像素块的值减去上面像素块的值。其中的xy代表的是屏幕坐标。 注意偏导数ddx/y可以计算我们FragmentShader中任意的变量。向量矩阵等等。
最终得出结论2x2块中4个像素的ddx共享一个值4个像素的ddy共享一个值。ddx只与p(x,y)、p(x1,y)有关ddy只与p(x,y)、p(x,y1)有关。无论ddx与ddy都与p(x1,y1)无关。
相关应用
1.Mipmap:(对UV求偏导的应用 ddx和ddy代表了相邻两个像素在设备坐标系当中的距离据此可以判断应该使用哪一层的贴图LOD如果贴图支持LOD也就是MIPS。这个距离越大表示三角形离开摄像机越远需要使用更小分辨率的贴图反之表示离开摄像机近需要使用更高分辨率的贴图。也就是说在开启贴图LOD功能的情况下这两个值会被GPGPU的贴图单元自动参照从而决定实际访问的MIPS层级2.Flat Shader(对顶点做偏导的应用) 通过对顶点的偏导数就可以实现简单的顶点作色效果。而且不用顶点传入法线也能求出模型的法线原理如下VertexShader将顶点的Pos传入到FragmentShader中在FragShader中我们如果调用ddx(Pos),和ddy(Pos)这个代表求出相邻的2个像素块之间坐标的差值即下面图中的红色和绿色2个矢量而这2个矢量都在这个三角形的平面上那么执行 normalize( cross(ddx(pos),ddy(pos)) ) 就求出的面的法线但是这里要注意在HlSL上面或者Unity上面要写成normalize( cross(ddy(pos),ddx(pos)) ),不然法线是反向的。这个是由于左右手坐标系引起的。3. 贴图勾边锐化(对贴图颜色求偏导的例子)
void surf (Input IN, inout SurfaceOutput o) {half4 c tex2D(_MainTex, IN.uv_MainTex);//c ddx(c)*2 ddy(c)*2; //这行代码开启和关闭的效果o.Albedo c.rgb;o.Alpha c.a;
}
左边是直接显示图片右边是在图片上面加上x和y的偏导数。