Godot Shader 中 mix 函数的用法

mix 函数是 Godot Shader 中非常常用的插值函数,用于在两个值之间进行线性插值。

基本语法

复制代码
mix(a, b, t)

参数

  • a:起始值(可以是标量、向量或颜色)
  • b:结束值(类型必须与 a 相同)
  • t:混合因子(取值范围通常为 0.0 到 1.0)

返回值

  • 返回 a 和 b 的线性插值结果:a * (1.0 - t) + b * t

使用示例

复制代码
// 颜色混合
vec3 color1 = vec3(1.0, 0.0, 0.0); // 红色
vec3 color2 = vec3(0.0, 0.0, 1.0); // 蓝色
vec3 result = mix(color1, color2, 0.5); // 得到紫色 (0.5, 0.0, 0.5)

// 数值插值
float a = 0.0;
float b = 10.0;
float value = mix(a, b, 0.3); // 得到 3.0

// 基于纹理的混合
vec4 tex1 = texture(texture1, UV);
vec4 tex2 = texture(texture2, UV);
vec4 final_color = mix(tex1, tex2, 0.7);   // 70% tex2 + 30% tex1

实际应用

复制代码
// 渐变效果
shader_type canvas_item;

void fragment() {
    vec4 color1 = vec4(1.0, 0.0, 0.0, 1.0); // 红色
    vec4 color2 = vec4(0.0, 0.0, 1.0, 1.0); // 蓝色
    
    // 使用 UV 的 x 坐标作为混合因子
    COLOR = mix(color1, color2, UV.x);
}

这个简单的示例会创建一个从左到右从红色渐变到蓝色的效果。

相关推荐
爱吃小胖橘10 小时前
Unity资源加载模块全解析
开发语言·unity·c#·游戏引擎
千年奇葩1 天前
Unity性能优化之:利用CUDA加速Unity实现大规模并行计算。从环境搭建到实战案例
c++·人工智能·unity·游戏引擎·cuda
AA陈超1 天前
虚幻引擎5 GAS开发俯视角RPG游戏 P06-25 属性信息数据资产
c++·游戏·ue5·游戏引擎·虚幻
爱吃小胖橘2 天前
高效对象池设计:提升Unity性能的关键
开发语言·unity·c#·游戏引擎
沉默的记录者2 天前
unity 2021反向遮罩的毛边
unity·游戏引擎
沧海归城2 天前
Unity_Canvas_Canvas Scaler画布缩放器。
unity·游戏引擎
一只一只2 天前
Unity 3D笔记(进阶部分)——《B站阿发你好》
笔记·3d·unity·游戏引擎
AA陈超3 天前
虚幻引擎5 GAS开发俯视角RPG游戏 P06-19 打开属性菜单
c++·游戏·ue5·游戏引擎·虚幻
向宇it3 天前
【推荐100个unity插件】unity易于使用模块化设计的天空、体积云和天气系统——Enviro 3
游戏·3d·unity·c#·游戏引擎
怣疯knight4 天前
unity实现2D人物从上面踩踏敌人,敌人减血的简易方法(类似马里奥的攻击手段)
unity·游戏引擎