效果图:

基于高度的权重混合 , 效果描述:
(1)混合:三层混合, 例如 第一层是草,第二层是石头,第三层是沙子,三者混合显示
(2)权重: 三层的权重的和 为1, 三者是此消彼长的关系
(3)高度:高度会限制或者说是 束缚 着 效果
关于混合,再多说几句:
(1)基于权重的混合:权重 ,跟顺序没有关系 只跟权重的大小有关系(在一层一层界限不清晰的地方,特别适用!!效果极好!!!!)
(2)基于叠加的混合: 叠加 就是 一层一层的往上加。。。。 所以顺序特别重要(在雪地等效果中使用:因为一层一层界限清晰)
接下来是刷图:用顶点色的三个通道来直接影响三个层的权重 或者 用一张BlendMap的三个通道来控制
至于权重是如何计算的,在代码中会详细的贴出来:
下面是绘制的过程截图:


(2)优化: 再补一张 根据高度混合 和 斜率来 叠加的颜色
(用到两个函数: HeightLerp 和 AutoSlope)

// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
Shader "Unlit/BlendCode"
{
Properties
{
_Layer1_BaseColor ("_Layer1_BaseColor", 2D) = "white" {
}
_Layer1_HRA("_Layer1_HRA",2D) = "white"{
}
_Layer1_Normal("_Layer1_Normal",2D) = "white"{
}
_Layer2_BaseColor ("_Layer2_BaseColor", 2D) = "white" {
}
_Layer2_HRA("_Layer2_HRA",2D) = "white"{
}
_Layer2_Normal("_Layer2_Normal",2D) = "white"{
}
_Layer3_BaseColor ("_Layer3_BaseColor", 2D) = "white" {
}
_Layer3_HRA("_Layer3_HRA",2D) = "white"{
}
_Layer3_Normal("_Layer3_Normal",2D) = "white"{
}
_BlendContrast("_BlendContrast",range(0,1)) = 0.1
////
_SlopeRange("slopeRange",range(0,1)) = 0.69
_HeightContrast("_HeightContrast",

本文介绍了如何通过高度权重混合技术,以三层(草、石头、沙子)为基础,利用权重和高度约束创建逼真的场景效果。关键算法包括基于权重的混合和根据高度和斜率的叠加。通过Unity CG shader示例展示了如何在顶点色通道或BlendMap控制权重。
最低0.47元/天 解锁文章
1651





