其他分享
首页 > 其他分享> > 纹理知识--摘录总结

纹理知识--摘录总结

作者:互联网

高度贴图

高度贴图(也称为视差贴图)是与法线贴图类似的概念,但是这种技术更复杂,因此性能成本也更高。高度贴图往往与法线贴图结合使用,通常情况下,当纹理贴图负责渲染表面的大型凸起时,高度贴图用于为表面提供额外的定义。

高度贴图应为灰度图像,其中以白色区域表示纹理的高区域,以黑色表示低区域。以下是典型的反照率贴图和要匹配的高度贴图。

 

 

 

 上图从左到右为: 1.分配了反照率贴图但未分配法线贴图和高度贴图的岩石墙壁材质。 2.分配了法线贴图。表面上的光照经过修改,但岩石不会相互遮挡。 3.分配了法线贴图和高度贴图的最终效果。岩石看起来从表面突出,较近的岩石似乎遮挡了它们后面的岩石。

高度贴图 Import/Export 按钮

Import Raw 和 Export Raw 按钮允许您将地形的高度贴图设置或保存为 RAW 灰度格式的图像文件。可在第三方地形编辑工具(如 Bryce)中创建 RAW 格式文件,然后可在 Photoshop 中打开、编辑和保存这些文件。因此可在 Unity 之外以复杂的方式生成和编辑地形。

 纹理混合

方法之一:

高度混合,即每张图附加一张高度图,每一个像素,高度大的地方显示,高度小的地方不显示,高度相差不多的地方,可以使用欧冠平滑过渡的方式。这种混合方式常用于地形。下面具体介绍一下:

使用两张纹理:

 

 两张高度图:

 

 使用一下方法,对两张图进行处理:

float heightblend(float input1, float height1, float input2, float height2)
{
    float height_start = max(height1, height2) - _HeightblendFactor;
    float level1 = max(height1 - height_start, 0);
    float level2 = max(height2 - height_start, 0);
    return ((input1 * level1) + (input2 * level2)) / (level1 + level2);
}
Properties
{
    _Texture1("Texture 1", 2D) = "white" {}
    _Height1("Heightmap 1", 2D) = "white" {}
    _Texture2("Texture 2", 2D) = "white" {}
    _Height2("Heightmap 2", 2D) = "white" {}
    _HeightblendFactor("Heightmap Blending Factor", Float) = 0.05
}
 
// .....
 
void surf(Input IN, inout SurfaceOutput o)
{
    float2 uv = IN.uv_Texture1;
 
    float3 v1 = tex2D(_Texture1, uv).rgb;
    float h1 = tex2D(_Height1, uv).r;
 
    float3 v2 = tex2D(_Texture2, uv).rgb;
    float h2 = tex2D(_Height2, uv).r;
 
    o.Albedo = heightblend (v1, h1, v2, h2);
}

下面的图片展示了_HeightblendFactor不同的效果。这些参数从极低的0.01(左侧)到最大值1.0(右侧)运行。

 

如上图显示,_HeightblendFactor越大,两张图融合平滑过渡的地方会越多。

 来自:unity shader中常用的几种texture纹理blend混合方式_bommy游戏的博客-CSDN博客_unity 混合材质

 

标签:贴图,法线,uv,--,float,高度,纹理,摘录
来源: https://www.cnblogs.com/zzx56/p/15856124.html