纹理知识--摘录总结
作者:互联网
高度贴图
高度贴图(也称为视差贴图)是与法线贴图类似的概念,但是这种技术更复杂,因此性能成本也更高。高度贴图往往与法线贴图结合使用,通常情况下,当纹理贴图负责渲染表面的大型凸起时,高度贴图用于为表面提供额外的定义。
高度贴图应为灰度图像,其中以白色区域表示纹理的高区域,以黑色表示低区域。以下是典型的反照率贴图和要匹配的高度贴图。
上图从左到右为: 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