服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - Unity Shader实现动态过场切换图片效果

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

2022-11-28 11:22仙魁XAN C#

这篇文章主要为大家详细介绍了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

四、效果预览

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

五、实现步骤

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

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

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

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

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

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

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

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

5、运行场景,效果如上

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

六、关键代码

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

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

原文链接:https://blog.csdn.net/u014361280/article/details/105360253

延伸 · 阅读

精彩推荐
  • C#Unity C#执行bat脚本的操作

    Unity C#执行bat脚本的操作

    这篇文章主要介绍了Unity C#执行bat脚本的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    林新发10332022-11-10
  • C#WinForm实现自定义右下角提示效果的方法

    WinForm实现自定义右下角提示效果的方法

    这篇文章主要介绍了WinForm实现自定义右下角提示效果的方法,涉及WinForm自定义提示效果的实现方法,具有一定参考借鉴价值,需要的朋友可以参考下...

    我心依旧11422021-10-21
  • C#C#中WinForm控件的拖动和缩放的实现代码

    C#中WinForm控件的拖动和缩放的实现代码

    本篇文章主要介绍了C#中WinForm控件的拖动和缩放的实现代码,C# WinForm控件的拖动和缩放是个很有用的功能,有兴趣的可以了解一下。...

    十日十乞00110372021-12-22
  • C#自定义WPF窗体形状的实战记录

    自定义WPF窗体形状的实战记录

    WPF是制作界面的一大利器,下面这篇文章主要给大家介绍了关于自定义WPF窗体形状的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作...

    nopapp4282022-02-28
  • C#C#通过第三方组件生成二维码(QR Code)和条形码(Bar Code)

    C#通过第三方组件生成二维码(QR Code)和条形码(Bar Code)

    用C#如何生成二维码,我们可以通过现有的第三方dll直接来实现,下面列出几种不同的生成方法...

    C#教程网8352021-12-13
  • C#C#处理Access中事务的方法

    C#处理Access中事务的方法

    这篇文章主要介绍了C#处理Access中事务的方法,涉及C#中事物的实现及使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下...

    baggio709558611762021-10-29
  • C#c# 通过WinAPI播放PCM声音

    c# 通过WinAPI播放PCM声音

    这篇文章主要介绍了c# 通过WinAPI播放PCM声音的方法,帮助大家更好的理解和使用c#编程语言,感兴趣的朋友可以了解下...

    天方11522022-10-21
  • C#C#基于cookie实现的购物车功能

    C#基于cookie实现的购物车功能

    这篇文章主要介绍了C#基于cookie实现的购物车功能,结合完整实例形式分析了C#基于cookie创建购物车的具体步骤与相关技巧,需要的朋友可以参考下...

    加菲猫的狗10052021-11-08