cocos creator3.8 箭头的uv 流动shader

CCEffect %{

techniques:

  • passes:

  • vert: sprite-vs:vert

frag: sprite-fs:frag

depthStencilState:

depthTest: false

depthWrite: false

blendState:

targets:

  • blend: true

blendSrc: src_alpha

blendDst: one_minus_src_alpha

blendDstAlpha: one_minus_src_alpha

rasterizerState:

cullMode: none

properties:

mainTexture: { value: white }

tiling: { value: 1.0, 1.0 }

flowSpeed: { value: 5.0 }

}%

CCProgram sprite-vs %{

precision highp float;

#include <builtin/uniforms/cc-global>

#if USE_LOCAL

#include <builtin/uniforms/cc-local>

#endif

in vec3 a_position;

in vec2 a_texCoord;

in vec4 a_color;

out vec4 v_color;

out vec2 uv0;

vec4 vert() {

vec4 pos = vec4(a_position, 1);

#if USE_LOCAL

pos = cc_matWorld * pos;

#endif

pos = cc_matViewProj * pos;

uv0 = a_texCoord;

v_color = a_color;

return pos;

}

}%

CCProgram sprite-fs %{

precision highp float;

#include <builtin/uniforms/cc-global>

#include <builtin/internal/embedded-alpha>

in vec4 v_color;

in vec2 uv0;

uniform sampler2D mainTexture;

uniform Properties {

vec2 tiling;

float flowSpeed;

};

vec4 frag() {

// 计算流动的UV坐标

float t = cc_time.x; // 引擎内置时间(秒)

vec2 uv = vec2(uv0.x * tiling.x, fract(uv0.y * tiling.y + t * flowSpeed)); // y轴方向反向流动,随高度重复

// 采样纹理

vec4 texColor = texture(mainTexture, uv);

// 直接返回纹理颜色乘以顶点颜色

vec4 o = v_color * texColor;

return o;

}

}%

将箭头图片拖到场景中,修改图片的材质,该一下箭头图片node节点的高度 ,同时修改一下材质上 tile 的y值,直接运行,类似如图

相关推荐
点心的游戏开发世界3 天前
UnityShaderGraph滚动UV笔记
笔记·uv
长江后浪博客5 天前
陶瓷盘UV喷墨印刷中的Z轴高度测量与防碰撞技术方案
数码相机·uv·陶瓷盘uv打印·uv喷墨印刷·z轴测高·喷头防碰撞·激光位移传感器
大衛說8 天前
02 · 环境搭建:uv 包管理与现代 IDE
ide·uv
咋吃都不胖lyh12 天前
使用 uv 根据 requirements.txt 创建并应用虚拟环境
uv
欧叶冲冲冲14 天前
uv Python 环境管理笔记
笔记·python·uv
hqzing14 天前
几个主流的环境管理器(rustup、uv、nvm、fnm)已经在鸿蒙 PC 上可用
uv
vortex515 天前
从Conda到UV:Python项目依赖管理的现代演进
python·conda·uv
zoujiahui_201818 天前
Python 包与环境管理工具 uv
开发语言·python·uv
eagle_Annie18 天前
Python/torch/深度学习——Miniforge+uv环境安装
python·深度学习·uv
天天进步201519 天前
Pixelle-Video 源码解析 #4:快速启动流程:uv、Streamlit、ffmpeg 分别负责什么?
ffmpeg·uv