UnityShader
ALiang_2685787271
这个作者很懒,什么都没留下…
展开
-
2020-12-18
关于三向贴图对于一些地形网格来说,有时候会因为地形的起伏导致网格分布不均匀,这就会导致贴图被拉伸。三向贴图技术就是为了解决这个问题。三向贴图不再采用传统的uv作为采样坐标,而是用世界坐标作为新的采样坐标。这个方法需要的额外操作是:对于朝向不同的面需要用不同的平面坐标系作为uv。例如:当面朝向x轴时,用yz坐标系作为uv。这一点用法线朝向即可解决。但是当遇到斜坡,即法线的各个分量都有值时,就需要进行一定的加权运算来得到最终的混合结果。这个加权混合就是重点。因为有三个分量,所以不能用传统的线性插值,而是原创 2020-12-18 18:01:17 · 140 阅读 · 1 评论 -
NormalBlend
NormalBlend 的几种方法法线作为向量,在需要混合两张法线贴图的时候不能简单相加,而是要将其转化为角度进行运算。目前有几种通用的方法,大部分是近似计算了角度并将它们相加。实际上,切线空间的z轴是顶点法线方向,所以xy和z的比值可以近似表示这个向量相对于z轴的偏移量,也就是“角度”。而PD方法就是直接将两个法线向量的这个比值相加再normalize。float3 n1 = tex2D(texBase, uv).xyz*2 - 1;float3 n2 = tex2D(texDetail,原创 2020-12-16 18:15:29 · 223 阅读 · 0 评论 -
程序化生成星空图
目录程序化生成星点图主要思路是伪随机生成,随机因子是晶格化后的晶格坐标。生成星点后再添加一些动态效果。随机生成参考了这篇文章。对扩大了某个倍数的三角函数取小数部分,可以得到混乱的效果。float random(float x, float factor){ return abs(frac(sin(x) * factor)); }为每个晶格生成一个星点首先要划分晶格,直接将uv扩大就可以。扩大的倍数直接决定了晶格的数量。这里要原创 2020-12-07 18:08:31 · 479 阅读 · 0 评论 -
UnityShader后处理景深效果
UnityShader 后处理景深效果主要原理是高斯核卷积,并根据深度图采样结果来判断模糊度。高斯核能反映距离对模糊采样率造成的影响。本例使用的高斯核是5x5尺寸。可以使用双pass的方法把这个高斯核简化成两个一维的高斯核。在模糊卷积中,把高斯核拆分成两个一维高斯核,在两个pass中分别进行xy方向的卷积。假设先进行了x方向的卷积, 那么y方向用以卷积的参数实际上是x方向上卷积过的。也就是说它也受到了对角线(或者说斜方向)上的影响。在边缘检测卷积上,xy方向上都使用的是方阵卷积核,并且需要求得的结原创 2020-09-24 14:48:16 · 714 阅读 · 0 评论