shader基于高度的权重混合

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

效果图:
在这里插入图片描述

基于高度的权重混合 , 效果描述:
(1)混合:三层混合, 例如 第一层是草,第二层是石头,第三层是沙子,三者混合显示
(2)权重: 三层的权重的和 为1, 三者是此消彼长的关系
(3)高度:高度会限制或者说是 束缚 着 效果

关于混合,再多说几句:
(1)基于权重的混合:权重 ,跟顺序没有关系 只跟权重的大小有关系(在一层一层界限不清晰的地方,特别适用!!效果极好!!!!)
(2)基于叠加的混合: 叠加 就是 一层一层的往上加。。。。 所以顺序特别重要(在雪地等效果中使用:因为一层一层界限清晰)

接下来是刷图:用顶点色的三个通道来直接影响三个层的权重 或者 用一张BlendMap的三个通道来控制

至于权重是如何计算的,在代码中会详细的贴出来:

下面是绘制的过程截图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述(2)优化: 再补一张 根据高度混合 和 斜率来 叠加的颜色
(用到两个函数: HeightLerp 和 AutoSlope)
yon

// 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",
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值