GameTang
圣骑士
圣骑士
  • UID4314
  • 粉丝3
  • 关注2
  • 发帖数43
  • 社区居民
阅读:1617回复:2

菜鸟日记七《热扭曲Shader》

楼主#
更多 发布于:2018-04-13 14:32

做项目的时候会需要到各种各样的特效,大部分都是特效师来做出来,实际上作为一个程序员自己也是应该可以做出来的,今天说的就是一个热扭曲效果的Shader说实话,Shader真是可以看出一个程序员的本事,会的都不是太差,很遗憾,我不会。这个也是我网络上找的,这方面也是在学习,话不多说了,直接上内容

这个Shader直接拖到需要的材质上

图片:Wave.png

图片:QQ图片20180413142633.png

把上图的法线贴图放到Shader上

然后在该对象上挂个脚本

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class SkyTest : MonoBehaviour {

        private float offetX;

        // Use this for initialization

        void Start () {

                

        }

        

        // Update is called once per frame

        void Update () {

                offetX += 0.00025f;

                transform.GetComponent<Renderer> ().material.SetFloat ("_DistortionScrollX", offetX);

        }

}

点击运行你就会发现纹理就会扭动起来,具体的扭动速度控制代码中的值即可,扭动的幅度控制Shader面板上 Distortion Power  值即可

我只是简单的拿来用,想要深入学习的同学可以通过下面的链接跳转过去,原文有着作者的丰富讲解,可以学习学习

转自李嘉的博客

好了,接着学习去了

Shader "Refractor1" {

    Properties {

        _Background ("Background", 2D) = "" {}            //背景纹理

        _BackgroundScrollX ("X Offset", float) = 0        //背景偏移

        _BackgroundScrollY ("Y Offset", float) = 0

        _BackgroundScaleX ("X Scale", float) = 1.0        //背景缩放

        _BackgroundScaleY ("Y Scale", float) = 1.0

        _Refraction ("Refraction", float) = 1.0        //折射值

        _DistortionMap ("Distortion Map", 2D) = "" {}    //扭曲

        _DistortionScrollX ("X Offset", float) = 0    

        _DistortionScrollY ("Y Offset", float) = 0    

        _DistortionScaleX ("X Scale", float) = 1.0

        _DistortionScaleY ("Y Scale", float) = 1.0

        _DistortionPower ("Distortion Power", float) = 0.08

    }

    SubShader {

        Tags {"Queue" = "Geometry" "RenderType" = "Opaque"}

        Pass {

            Cull Off

            ZTest LEqual

            ZWrite On

            AlphaTest Off

            Lighting Off

            ColorMask RGBA

            Blend Off

            CGPROGRAM

            #pragma target 2.0

            #pragma fragment frag

            #pragma vertex vert

            #include "UnityCG.cginc"

            uniform sampler2D _Background;

            uniform sampler2D _DistortionMap;

            uniform float _BackgroundScrollX;

            uniform float _BackgroundScrollY;

            uniform float _DistortionScrollX;

            uniform float _DistortionScrollY;

            uniform float _DistortionPower;

            uniform float _BackgroundScaleX;

            uniform float _BackgroundScaleY;

            uniform float _DistortionScaleX;

            uniform float _DistortionScaleY;

            uniform float _Refraction;

            struct AppData {

                float4 vertex : POSITION;

                half2 texcoord : TEXCOORD0;

            };

            struct VertexToFragment {

                float4 pos : POSITION;

                half2 uv : TEXCOORD0;

            };

            VertexToFragment vert(AppData v) {

                VertexToFragment o;

                o.pos = mul(UNITY_MATRIX_MVP,v.vertex);

                o.uv = v.texcoord.xy;

                return o;

            }

            

            fixed4 frag(VertexToFragment i) : COLOR {

                   float2 bgOffset = float2(_BackgroundScrollX,_BackgroundScrollY);

                   float2 disOffset = float2(_DistortionScrollX,_DistortionScrollY);

                   float2 disScale = float2(_DistortionScaleX,_DistortionScaleY);

                   float2 bgScale = float2(_BackgroundScaleX,_BackgroundScaleY);

                  

                   float4 disTex = tex2D(_DistortionMap, disScale * i.uv+disOffset);

                  

                   float2 offsetUV = (-_Refraction*(disTex * _DistortionPower - (_DistortionPower*0.5)));

                  

                   return tex2D(_Background, bgScale * i.uv + bgOffset + offsetUV);

            }

            ENDCG

        }

    }

}

最新喜欢:

归海一啸归海一啸

欢迎分享

GameTang
圣骑士
圣骑士
  • UID4314
  • 粉丝3
  • 关注2
  • 发帖数43
  • 社区居民
沙发#
发布于:2018-04-13 14:38
哈哈,感谢大神的支持@归海一啸
归海一啸
光明使者
光明使者
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 喜欢达人
  • 原创写手
板凳#
发布于:2018-04-13 17:13
GameTang:哈哈,感谢大神的支持@归海一啸回到原帖
非常赞!
AR学院(www.arvrschool.com),从这里感触未来!
游客

返回顶部