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

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

相关文章

  • Unity实现UI渐隐渐显效果

    Unity实现UI渐隐渐显效果

    这篇文章主要为大家详细介绍了Unity实现UI渐隐渐显效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • 分享用于操作FTP的客户端C#类

    分享用于操作FTP的客户端C#类

    用.net自带的FtpWebRequest做的ftp客户端得程序,有一个功能实现起来会非常苦难,就是移动文件和文件夹的功能。所以后来又找了一个类,用socket实现的,发现比用ftpWebRequest功能要强。基本的ftp客户端得命令都实现了。
    2015-05-05
  • C#使用OpenCvSharp实现透视变换功能

    C#使用OpenCvSharp实现透视变换功能

    这篇文章主要为大家详细介绍了C#如何使用OpenCvSharp实现透视变换的功能,文中的示例代码简洁易懂,具有一定的学习价值,需要的小伙伴可以参考下
    2023-11-11
  • C# 中的委托与事件机制详解

    C# 中的委托与事件机制详解

    本文详细介绍了C#中委托和事件的概念、使用方法和应用场景,包括委托定义、匿名方法、Lambda表达式、事件机制和多播委托的详细说明,委托作为类型安全的函数指针,文章还探讨了如何通过匿名方法和Lambda表达式简化委托的使用,以及多播委托在事件处理中的应用
    2024-10-10
  • C# 9 新特性之增强的foreach详解

    C# 9 新特性之增强的foreach详解

    这篇文章主要介绍了C# 9 新特性之增强的foreach的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • c#基于NVelocity实现代码生成

    c#基于NVelocity实现代码生成

    这篇文章主要介绍了c#基于NVelocity实现代码生成的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下
    2021-01-01
  • WPF实现动画效果(四)之缓动函数

    WPF实现动画效果(四)之缓动函数

    这篇文章介绍了WPF实现动画效果之缓动函数,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • C#中如何自定义配置上周和本周起始日来查询业务数据(思路详解)

    C#中如何自定义配置上周和本周起始日来查询业务数据(思路详解)

    在C#中并没有封装的方法根据我们需要来直接获取上一周某天到某天、本周某天到某天,所以需要我们自己封装方法来实现(我们也可以按照这个思路使用其他语言来实现),感兴趣的朋友跟随小编一起看看吧
    2023-09-09
  • C#异步绑定数据实现方法

    C#异步绑定数据实现方法

    这篇文章主要介绍了C#异步绑定数据实现方法,实例分析了C#操作数据库及异步绑定的相关实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09
  • C#中使用NLog库进行日志记录的流程详解

    C#中使用NLog库进行日志记录的流程详解

    NLog 是 .NET 的日志记录框架,具有丰富的日志路由和管理能力,极大地帮助您生成和管理日志,NLog 是一个库,可以轻松地同时记录和管理多个不同区域中的数据,本文将给大家介绍在C#中使用 NLog 库进行日志记录的教程,需要的朋友可以参考下
    2024-06-06

最新评论