ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

纹理知识--摘录总结

2022-05-11 17:35:32  阅读:197  来源: 互联网

标签:贴图 法线 uv -- float 高度 纹理 摘录


高度贴图

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

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

 

 

 

 上图从左到右为: 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有