Shader-水流效果

效果图:(贴图类似于泥石流)

代码:

 1 Shader "CookbookShaders/Chapter02/ScrollingUVs"
 2 {
 3     Properties
 4     {
 5         _MainTint("Diffuse Tint", Color) = (1,1,1,1)
 6         _MainTex("Base (RGB)", 2D) = "white" {}
 7         _ScrollXSpeed("X Scroll Speed", Range(0, 10)) = 2
 8         _ScrollYSpeed("Y Scroll Speed", Range(0, 10)) = 2
 9     }
10
11         SubShader
12     {
13         Tags{ "RenderType" = "Opaque" }
14         LOD 200
15
16         CGPROGRAM
17 #pragma surface surf Lambert
18
19     fixed4 _MainTint;
20     fixed _ScrollXSpeed;
21     fixed _ScrollYSpeed;
22     sampler2D _MainTex;
23
24     struct Input
25     {
26         float2 uv_MainTex;
27     };
28
29     void surf(Input IN, inout SurfaceOutput o)
30     {
31         //Create a seperate variable to store our uvs
32         //before we pass them to the tex2D() function
33         fixed2 scrolledUV = IN.uv_MainTex;
34
35         //Create variables that store the individual x and y
36         //components for the uv‘s scaled by time
37         fixed xScrollValue = _ScrollXSpeed * _Time;
38         fixed yScrollValue = _ScrollYSpeed * _Time;
39
40         //Apply the final uv offset
41         scrolledUV += fixed2(xScrollValue, yScrollValue);
42
43         //Apply textures and tint
44         half4 c = tex2D(_MainTex, scrolledUV);
45         o.Albedo = c.rgb * _MainTint;
46         o.Alpha = c.a;
47     }
48     ENDCG
49     }
50         FallBack "Diffuse"
51 }

注意:

内置方法 _Time

是个4维向量,跟Unity3D中的deltaTime(这是个一维的,数值)不同。

    • float4 _Time : Time (t/20, t, t*2, t*3), use to animate things inside the shaders
时间: 2024-11-08 18:15:04

Shader-水流效果的相关文章

Unity Shader 广告牌效果

广告牌效果指的是,一个二维平面的法线方向始终与视线(摄像机的观察方向)相同.广泛运用于渲染烟雾,云朵,闪光等. 它的本质在于构建旋转矩阵,此时我们可以选择三个基向量来构建此矩阵. 指向→的方向(X轴) 指向↑的方向(Y轴) 平面的法线方向(Z轴) 计算方法通常是: 1.根据当前摄像机的方向确定法线方向(广告牌效果的本质),并归一化 normal=normalize(viewDir); 2.根据得到的法线方向和初始的向上方向(在本地空间中即为float3(0,1,0))计算向右的方向,并归一化 r

Unity3D Shader落雪效果

Shader "Custom/Snow" { Properties { _MainTex ("Base (RGB)", 2D) = "white" {} _RimColor("Rim Color", Color) = (1,1,1,1) _SnowPower ("Snow Power",range(0,1)) = 0.2//边缘强度 _SnowRang("Snow Range",rang

【浅墨Unity3D Shader编程】之九 深入理解Unity5中的Standard Shader (一)&屏幕水幕特效的实现

本系列文章由@浅墨_毛星云 出品,转载请注明出处.   文章链接:http://blog.csdn.net/poem_qianmo/article/details/49556461 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 本文工程使用的Unity3D版本: 5.2.1 概要:本文主要介绍了Unity5中的标准着色器,并且也涉及到了基于物理的着色.延迟渲染等高级着色技术,而在文章后半部分,也对屏幕水幕特效的实现方法进行了讲解与分析. 依然是附上

【译】Unity3D Shader 新手教程(2/6) —— 积雪Shader

如果你是一个shader编程的新手,并且你想学到下面这些酷炫的技术,我觉得你可以看看这篇教程: 实现一个积雪效果的shader 创建一个具有凹凸纹理的shader 为每个像素修改其对应纹理值 在表面着色器中修改模型的顶点数据 引论 这是我们系列教程的第二部分,我们将在此部分实现些有用的技术.在学习完第一部分的所有背景知识后,我们将利用所学的知识实现一个简单的积雪效果的shader.效果如下: 准备工作 我们想做的其实很简单,简单介绍一下: 随着Snow Level(表示积雪的程度,该值越大,积雪

A Simple OpenGL Shader Example

A Simple OpenGL Shader Example [email protected] Abstract. OpenGL Shading Language, the high-level programming language defined to allow application writers to write programs that execute on the programmable processors defined within OpenGL. Informal

Shader基础

一.概念篇 1.基准:unity里的shader并不是一门独特的语言,而是一种代码生成方式,且可将低层次且复杂的shader编程进行简化.但同时你也还是得使用Cg/HLSL来写的. 2.原理:写一个函数,以UVs或者一些数据为入口,然后以SurfaceOutput为输出.同时在SurfaceOutput这个结构体里还有不同的 属性.这样对于这个函数来说,他的执行过程会生成vertex和pixel的Shader,并且传递一些渲染的路径. 3.结构:输出结构: 1 2 3 4 5 6 7 8 str

Unity3D shader简介

Unity3D shader简介 可以肯定的说Unity3D使得很多开发者开发游戏更容易.毫无疑问,shader(着色器)编码,仍有很长的路要走.shader是一个专门运行在GPU的程序,经常被神秘包围,它最终绘制3D模型的三角形.如果你想给游戏一个特殊的显示,学习如何编写shader是必要的.Unity3D使用shader做后期处理,对2D游戏也是必不可少的.这个系列的文章将逐步介绍shader编程,并面向几乎没有任何shader知识的开发者. 简介 下图大致表示了在Unity3D渲染流程中发

【译】Unity3D Shader 新手教程(3/6) —— 更加真实的积雪

如果你满足以下条件,我建议你阅读这篇教程: 你想知道如何在表面着色器中进行混色(blend colour) 你想实现一个更加真实的积雪效果 引论 我觉得有雪区域向无雪区域过渡的有些突兀,感觉更像白色的油漆涂在了岩石上,而不是积雪!为了使我们积雪shader的效果更加完美所以下一步需要做的是允许积雪和岩石纹理同时进行渲染,从而达到混色的效果. 我们只要对表面着色器的pixel处理方式进行一些修改就可以达到很好的积雪效果,而且这也将证明saturate函数是非常有用的. 准备工作 教程第二部分中的_

【浅墨Unity3D Shader编程】之六 暗黑城堡篇: 表面着色器(Surface Shader)的写法(一)

本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://hpw123.net/plus/view.php?aid=165 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 邮箱: [email protected] QQ交流群:330595914 更多文章尽在:http://www.hpw123.net 本文主要讲解了Unity中SurfaceShader的具体写法,以及几个常用的CG函数的用法. 在这里先说明一下,表面着色器将分为

Esfog_UnityShader教程_溶解效果Dissolve

溶解效果在游戏中是很常见的,比如在一些神话或者魔法世界中,一些NPC角色在剧情需要时候会身体会渐渐的消失掉.甚至有一些更炫的,比如用火焰喷射器把目标燃尽.这些都可以用到溶解效果.这篇文章主要是讲解一下比较基础的溶解效果如何实现,实现的方法并不唯一,本篇只是其中一种思路. 原理 既然想让角色的身体一块块渐渐消失,不妨就让角色身体上相应的部位不进行渲染(或者改成透明,我们这里选择前者).那根据什么来判断身体的哪一部分需要被溶解呢,这时候就需要一张额外的贴图或者利用角色纹理贴图的Alpha通道(本篇选