Unity Shader实现动态过场切换图片效果

 更新时间:2021年07月27日 11:43:51   作者:仙魁XAN  
这篇文章主要为大家详细介绍了Unity Shader实现动态过场切换图片效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Unity Shader实现动态过场切换图片的具体代码,供大家参考,具体内容如下

一、简单介绍

Shader Language的发展方向是设计出在便携性方面可以和C++、Java等相比的高级语言,“赋予程序员灵活而方便的编程方式”,并“尽可能的控制渲染过程”同时“利用图形硬件的并行性,提高算法效率”。

本文介绍,如何使用 shader ,动态过场形式切换图片的一点简单效果。

二、实现原理

1、通过时间叠加判断,当 值小于 主图 uv 的时候,进行切换图的渲染

// 过场切换的位置
float curPos = _Time.y*_Speed;
 
if(curPos < i.uv.x){
 col = tex2D(_CutTex,i.uv);
}

三、注意事项

1、 当小于 x,渲染_CutTex(开始都是小于 x的,开始渲染_CutTex), 随着时间变化,切换为 _MainTex

四、效果预览

五、实现步骤

1、打开Unity,新建一个工程

2、导入素材,和新建shader,并对应新建材质

3、编写好shader,把材质对应赋值

4、场景中添加一个 Quad ,并把材质赋给Quad,用来显示

5、运行场景,效果如上

六、关键代码

Shader "Unlit/CutEffect"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
  _CutTex("Cut Tex",2D)="white"{}
 
  // 切换速度
  _Speed("speed",Range(-1,1))=0.2
 
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 100
 
        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
        
 
            #include "UnityCG.cginc"
 
            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };
 
            struct v2f
            {
                float2 uv : TEXCOORD0;
    
                float4 vertex : SV_POSITION;
            };
 
            sampler2D _MainTex;
            float4 _MainTex_ST;
   sampler2D _CutTex;
   float _Speed;
 
            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = v.uv;
  
                return o;
            }
 
            fixed4 frag (v2f i) : SV_Target
            {
                // sample the texture
                fixed4 col = tex2D(_MainTex,i.uv);
                
 
    // 过场切换的位置
    float curPos = _Time.y*_Speed;
    // 当小于 x,渲染_CutTex(开始都是小于 x的,开始渲染_CutTex), 
    // 随着事件变化,切换为 _MainTex
    if(curPos < i.uv.x){
     col = tex2D(_CutTex,i.uv);
    }
    
 
                return col;
            }
            ENDCG
        }
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C#多线程学习之(五)使用定时器进行多线程的自动管理

    C#多线程学习之(五)使用定时器进行多线程的自动管理

    这篇文章主要介绍了C#多线程学习之使用定时器进行多线程的自动管理,实例分析了C#使用timer定时器类实现针对多线程的自动管理功能,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • Unity5.6大规模地形资源创建方法

    Unity5.6大规模地形资源创建方法

    这篇文章主要为大家详细介绍了Unity5.6大规模地形资源创建方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • 详解c# 中的DateTime

    详解c# 中的DateTime

    这篇文章主要介绍了c# 中的DateTime的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • C#反射(Reflection)详解

    C#反射(Reflection)详解

    本文详细讲解了C#中的反射(Reflection),文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • C#实现控制Windows系统关机、重启和注销的方法

    C#实现控制Windows系统关机、重启和注销的方法

    这篇文章主要介绍了C#实现控制Windows系统关机、重启和注销的方法,涉及C#调用windows系统命令实现控制开机、关机等操作的技巧,非常简单实用,需要的朋友可以参考下
    2015-04-04
  • C# 对Outlook2010进行二次开发的图文教程

    C# 对Outlook2010进行二次开发的图文教程

    下面小编就为大家分享一篇C# 对Outlook2010进行二次开发的图文教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • C#远程获取图片文件流的方法

    C#远程获取图片文件流的方法

    这篇文章主要介绍了C#远程获取图片文件流的方法,涉及C#针对图片及文件流操作的相关技巧,需要的朋友可以参考下
    2016-02-02
  • C#判断一个字符串是否是数字或者含有某个数字的方法

    C#判断一个字符串是否是数字或者含有某个数字的方法

    这篇文章主要介绍了C#判断一个字符串是否是数字或者含有某个数字的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-06-06
  • C#获取进程和对进程的操作

    C#获取进程和对进程的操作

    下面是一个例子:获取进程列表、创建“违禁”进程名单、查找并终止进程,注意先要在项目里添加System.Management的引用
    2013-04-04
  • C#读取Excel到DataTable的方法示例

    C#读取Excel到DataTable的方法示例

    这篇文章主要介绍了C#读取Excel到DataTable的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-04-04

最新评论