美文网首页
Godot Shader特效:用Shader实现循环滚动背景

Godot Shader特效:用Shader实现循环滚动背景

作者: 吃烧烤的老王 | 来源:发表于2019-07-25 10:50 被阅读0次

    循环滚动背景是游戏中常用的效果,实现方式有很多,比较传统的方式是用2个Sprite同步运动来实现;Godot还提供了一个ParallaxBackground节点也可以实现这个效果;实际上用Shader也可以很简单地实现这个效果,并且还可以简化场景节点结构以及表现和逻辑的结耦合。

    效果图
    循环滚动背景2d
    实现方式

    首先要对用作背景的图片启用repeat模式

    启用repeat模式
    代码如下
    shader_type canvas_item;
    render_mode unshaded;
    uniform float speed_x = 0.0;
    uniform float speed_y = 0.0;
    
    void vertex(){
        UV += TIME * vec2(speed_x,speed_y);
    }
    

    补充一下在3D 中的实现,原理一致,这次不用设置那个repeat模式了


    循环滚动背景3d
    代码如下
    shader_type spatial;
    uniform sampler2D tex;
    uniform float uv_speed_x = 0.5;
    uniform float uv_speed_y = 0.0;
    
    void vertex(){
        UV += TIME * vec2(uv_speed_x,uv_speed_y);
    }
    void fragment(){
        vec4 color = texture(tex,UV);
        ALBEDO = color.rgb;
        ALPHA =  color.a;
    }
    

    相关文章

      网友评论

          本文标题:Godot Shader特效:用Shader实现循环滚动背景

          本文链接:https://www.haomeiwen.com/subject/urucrctx.html