开发平台:Unity 2023
开发工具:Unity ShaderGraph
一、效果展示
二、路线图
三、案例分析
核心思路:计算算式:透明值 = 实际距离 / 最大距离 (实际距离 ≤ 最大距离)
3.1 说明 | 改变 Alpha 值
在 Shader 中,RGB颜色范围表现有 (0-1)/(0-255)两种值形式。在 ShaderGraph 中为(0-1)。
3.2 说明 | 获取模型与相机距离
ShaderGraph 提供
- Postion(位置节点)标记材质应用的模型对象。
- Camera(相机节点)映射所有相机类信息(包含
Camera
、URP Camera
、Cinemachine.Camera
)
目标是计算相机与模型的世界距离。因此 Position.Space
项限定 World
(世界空间)。
Distance (距离计算节点)计算 Vector 类型值。如图传入相机 Postion 与 模型 Positon。与程序中 Vector3.Distance()
一致。
效果表现中,实际不需要一直要求模型保持一定程度的透明化表现。增加了 MaxDistance
/ MinDistance
变量限制效果表现的距离。因此引入 Clamp(值域节点),表现与程序 Math.Clamp()
一致。
3.3 说明 | 计算 alpha 值
参考 核心思路 计算算式。ShaderGraph 提供常规计算节点,如
Subtract
(减法计算节点)Divide
(除法计算节点)
同理,为控制透明度表现力,增加 MaxAlpha
/ MinAlpha
变量管理。当然增加 Color
变量管理材质颜色也是可以。
关于限制上使用 Lerp(插值节点)
Lerp 本质上具有 Clamp 的性质,仅在结果上做出线性插值的补充,但最大范围值不会超越其透明表现。仍可以使用 Clamp(值域节点)作为最终输出。