Untiy Shader实现纹理贴图滚动

滚动纹理,可以实现一些如瀑布,河流,熔岩流等效果,本质上就是UV坐标的偏移,在Unity中新建一个Shader,然后修改成下面代码的样子,新建一个材质,选择此shader,赋予一张贴图,然后将材质应用于一个mesh上,运行即可看到效果

Shader "Custom/UVOffset" {
 Properties {
  _MainTint("Diffuse Tine",Color) = (1,1,1,1)
  _MainTex("Base (RGB)",2D) = "white"{}
  _ScrollXSpeed("X Scroll Speed",Range(0,10)) = 0
  _ScrollYSpeed("Y Scroll Speed",Range(0,10)) = 2
 }
 SubShader {
  Tags { "RenderType"="Opaque" }
  LOD 200

  CGPROGRAM
  // Physically based Standard lighting model, and enable shadows on all light types
  #pragma surface surf Standard fullforwardshadows

  // Use shader model 3.0 target, to get nicer looking lighting
  #pragma target 3.0

  // 定义 Properties 中的属性
  fixed4 _MainTint;
  fixed _ScrollXSpeed;
  fixed _ScrollYSpeed;
  sampler2D _MainTex;

  struct Input {
   float2 uv_MainTex;
  };

  void surf (Input IN, inout SurfaceOutputStandard o) {
   fixed2 scrolledUV = IN.uv_MainTex;
   fixed xScrollValue = _ScrollXSpeed * _Time;
   fixed yScrollValue = _ScrollYSpeed * _Time;
   scrolledUV += fixed2(xScrollValue,yScrollValue);

   // 对贴图进行采样输出
   half4 c = tex2D(_MainTex,scrolledUV);
   o.Albedo = c.rgb * _MainTint;
   o.Alpha = c.a;
  }
  ENDCG
 }
 FallBack "Diffuse"
}

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

(0)

相关推荐

  • Unity UGUI实现卡片椭圆方向滚动

    本文实例为大家分享了UGUI实现卡片椭圆方向滚动的具体代码,供大家参考,具体内容如下 搭建简单的场景 运行效果 卡片移动动画通过插件DoTween实现 控制脚本: using UnityEngine; using System.Collections; using UnityEngine.UI; using DG.Tweening; public class CardMove : MonoBehaviour { GameObject[] sprites; int halfSize; Vector

  • Untiy Shader实现纹理贴图滚动

    滚动纹理,可以实现一些如瀑布,河流,熔岩流等效果,本质上就是UV坐标的偏移,在Unity中新建一个Shader,然后修改成下面代码的样子,新建一个材质,选择此shader,赋予一张贴图,然后将材质应用于一个mesh上,运行即可看到效果 Shader "Custom/UVOffset" { Properties { _MainTint("Diffuse Tine",Color) = (1,1,1,1) _MainTex("Base (RGB)",2

  • JavaScript实现长图滚动效果

    本文实例为大家分享了JavaScript之长图滚动的具体代码,供大家参考,具体内容如下 长图的滚动会涉及定时器: 我们先来回顾下定时器: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>定时器回顾</title> </head> <body> <button id="

  • Opengl ES之纹理贴图使用示例

    目录 正文 纹理坐标 纹理环绕 纹理过滤 纹理单元 Opengl中纹理的使用 纹理坐标映射关系 正文 纹理可以理解为一个二维数组,它可以存储大量的数据,这些数据可以发送到着色器上.一般情况下我们所说的纹理是表示一副2D图,此时纹理存储的数据就是这个图的像素数据. 所谓的纹理贴图,就是使用Opengl将这个纹理数据渲染出来,这个过程有点像装修工人给墙体贴瓷砖,而瓷砖好比作纹理. 纹理坐标 如果为了将一副纹理图贴到Opengl绘制的一个矩形上,那么就需要解决一个问题,如何知道矩形的具体某个点对应纹理

  • Unity Shader实现纹理遮罩效果

    纹理遮罩用处很多,简单来讲就是允许我们可以保护模型中的某些区域不受某些因素的影响.例如我们有时希望模型表面某些区域的反光强烈一些,而某些区域弱一些.为了得到更加细腻的结果,我们需要用一张遮罩纹理来控制该光照.还有一些情况就是某些模型需要多张纹理混合时,此时使用遮罩纹理可以控制如何混合这些纹理. 具体流程为:通过采样得到遮罩纹理的纹素值,然后使用其中某个或者几个通道的值来与某种表面属性进行相乘.当该通道的值为0时,此时该表面属性不受遮罩纹理的影响. shader代码如下: Shader "Cust

  • Android仿微博加载长图滚动查看效果

    本文实例为大家分享了Android加载长图片的具体代码,供大家参考,具体内容如下 解决步骤 1.将图片缩放到与控件等宽 2.判断缩放后的图片高度,如果高度大于控件高度较多(这里设置的是1.5倍),认定为长图,可滑动查看图片                      |-如果高度小于控件高度的1.5倍,以控件高度为基准,重新缩放图片 package org.wandcf_ces.fairproject.widgets; import android.annotation.TargetApi; im

  • OpenGL ES纹理详解

    使用前面学过的技术已经可以利用OpenGL ES构建立体图形,并通过顶点着色器和片元着色器对其进行各种变化呢和光照等效果使得三维效果更加真实,实际上我看看到很多的3D游戏漂亮多了,那是因为有各种各样的漂亮的图像带给人很多视觉盛宴,这篇文章在前面的基础上,增加物体的表面贴图,使得物体更加好看. 纹理概念 纹理用来表示图像照片或者说一系列的数据,使用纹理可以使物体用用更多的细节.OpenGL ES 2.0 中有两种贴图:二维纹理和立方体纹理. 每个二维纹理都由许多小的纹理元素组成,类似与片元和像素,

  • JavaMe开发自适应滚动显示

    [问题描述] 我们常看到一些滚动显示的实例,比如UC浏览器中,显示网页的内容.当内容比较多时,采用滚动分页显示是合理的.在Canvas中绘图中,多余的内容被截断了.如何实现滚动分页显示呢? [原理] JavaMe中有一个坐标变换的功能.当触发相应的按键事件时,我们就让其显示相应的页,并且使滚动条滚动到相应的位置. [代码清单] ShowHelp.java package com.token.view; import javax.microedition.lcdui.Font; import ja

  • iOS中无限循环滚动简单处理实现原理分析

    说下原理: 1./*初始化/ + (instancetype)loopScrollViewWithFrame:(CGRect)frame; 将背景collectinview视图初始化设置 代理和数据源 . 布局 2.在激活initwithFrame后触发 layoutSubviews //默认滚动到要显示的第一张图片 if (self.imageCollectionView.contentOffset.x == 0) { NSIndexPath *indexPath = [NSIndexPath

  • unity实现贴图矩阵运算(旋转平移缩放)

    我们在shader中对贴图处理时,有时候会有一些比较复杂的运算,比方说三角函数,开方等,一般情况下,如果可以在越上层做运算,性能会越高.C# > Vertex > fragment 因此,考虑到贴图的旋转用到的三角函数,可以使用在C#中传入旋转矩阵得到,然后使用uv直接乘以矩阵就可以了. 封装了vmatrix4x4,分享一下: using UnityEngine; namespace D11.Skin { public class VMatrix { public float[,] m; pu

  • JavaScript滚动轮播图制作原理详解

    本文实例为大家分享了JavaScript滚动轮播图制作原理,供大家参考,具体内容如下 滚动轮播图 滚动轮播图布局关键:是所有图片并排在一起,所以unit的宽要足够宽.克隆第一张图片追加到最后一张右按钮拉动策略:先拉动,再瞬移左按钮拉动策略:先瞬移,再拉动与呼吸轮播图一样,需要做防流氓策略 复制代码:将我代码中的图片更换为你的图片,注意图片路径,还需要引入js库,我引入的是jquery-1.12.3.min.js的版本,引入的时候注意路径 举例: <!DOCTYPE html> <html

随机推荐