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);
}

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

相关推荐
郝学胜-神的一滴9 小时前
Horse3D 游戏引擎研发笔记(七):Clydesdale——从流式日志到多输出订阅
c++·qt·unity·游戏引擎·图形渲染·unreal engine·opengl
江上闲人.1 天前
Wardogs战犬\战狗Beta测试启动报错UE崩溃卡顿?解决方法来了
游戏·游戏引擎·虚幻·战犬·战狗·wardogs
杨丰玮4181 天前
从零手写Java飞机躲障碍游戏|Swing绘图、鼠标跟随、计时器碰撞检测实战(五)
java·python·游戏·游戏引擎·图形渲染·动画·贴图
鼎艺创新科技2 天前
不依赖 UE/Unity:我们如何从零搭建一套国产三维 GIS 渲染引擎
人工智能·算法·unity·游戏引擎·三维电子沙盘
huihui3612 天前
校友网管理软件技术选型框架:基于功能核验与系统架构的量化评估
unity·系统架构·游戏引擎
五仁烧饼2 天前
Unity性能优化系列设置篇 - URP 移动端设置基线与分档策略
unity·游戏引擎
新手unity自用笔记2 天前
unity基于Socket的网络学习
网络·网络协议·学习·unity·c#·游戏引擎
心前阳光2 天前
Unity之XR Interaction Toolkit | IPointerDownHandler问题
unity·游戏引擎·xr
帅_shuai_3 天前
unity 静态字段内存查找工具
unity·游戏引擎
郝学胜-神的一滴3 天前
[简化版 GAMES 104] 现代游戏引擎 06:从Tick时序到邮局模型,拆解确定性世界的底层密码
开发语言·c++·游戏引擎·图形渲染·软件开发·opengl