Unity ShaderLab: 2D/3D Wave Flag Shader(飘动旗帜)的实现
来源:互联网 发布:惠普游戏本 知乎 编辑:程序博客网 时间:2024/05/01 22:49
个人实现的第一个在实际项目中使用的shader。
- 2D Wave Flag Shader
效果图:
Shader "Custom/WaveFlag2D"{Properties{ _Color ("Main Color", Color) = (1,1,1,1) _MainTex ("Texture", 2D) = "white" { } _WaveX ("Wave x", Range(0, 1)) = 0.1 _WaveZ ("Wave z", Range(0, 1)) = 0.1 _WindSpeed("Wind Speed", Range(50,200)) = 100}SubShader{ Pass { CULL Off CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" #include "AutoLight.cginc" float4 _Color; sampler2D _MainTex; fixed _WaveX; fixed _WaveZ; float _WindSpeed; struct a2v { float4 vertex : POSITION; float4 texcoord : TEXCOORD0; }; struct v2f { float4 pos : POSITION; float2 uv: TEXCOORD0; }; v2f vert (a2v v) { v2f o; float angle= _Time * _WindSpeed; if(v.vertex.x < 5) { v.vertex.z = v.vertex.z + sin(v.vertex.x + angle) * _WaveX ; v.vertex.x = v.vertex.x + sin(v.vertex.z + angle) * _WaveZ; } v.vertex.z -= (v.vertex.x) * 0.4; o.pos = mul( UNITY_MATRIX_MVP, v.vertex ); o.uv = v.texcoord; return o; } float4 frag (v2f i) : COLOR { half4 color = saturate(tex2D(_MainTex, i.uv)) * 0.8; return color; } ENDCG }}Fallback "VertexLit"}
- 3D Wave Flag Shader
效果图:
Shader "Custom/WaveFlag3D"{Properties{ _Color ("Main Color", Color) = (1,1,1,1) _MainTex ("Texture", 2D) = "white" { } _WaveY ("Wave y", Range(0, 1)) = 0.1 _WindSpeed("Wind Speed", Range(50,200)) = 100}SubShader{ Pass { CULL Off CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" #include "AutoLight.cginc" float4 _Color; sampler2D _MainTex; fixed _WaveY; float _WindSpeed; struct a2v { float4 vertex : POSITION; float4 texcoord : TEXCOORD0; }; struct v2f { float4 pos : POSITION; float2 uv: TEXCOORD0; }; v2f vert (a2v v) { v2f o; float angle= _Time * _WindSpeed; if(v.vertex.z < 5) v.vertex.y = v.vertex.y + sin(v.vertex.z + v.vertex.x + angle) * _WaveY; v.vertex.x = v.vertex.x + v.vertex.z * 0.4; o.pos = mul( UNITY_MATRIX_MVP, v.vertex ); o.uv = v.texcoord; return o; } float4 frag (v2f i) : COLOR { half4 color = saturate(tex2D(_MainTex, i.uv.xy)); return color; } ENDCG }}Fallback "VertexLit"}
2 0
- Unity ShaderLab: 2D/3D Wave Flag Shader(飘动旗帜)的实现
- unity shader 旗帜飘动
- untiy 3d ShaderLab_第 2 章Unity中Shader(着色器)的形态_1_Unity通过ShaderLab 来组织Shader
- Android实现飘动的旗帜效果实例
- 【Unity&Shader】字体&2D图片变白的Shader
- untiy 3d ShaderLab第 1 章Shader(着色器)的概念和在 3D 游戏中的作用
- 【Unity】用Shader编程实现3D红心
- Unity中使用Shader实现3D打印机效果
- nehe第十一课飘动的旗帜waving texture实现原理
- oepngl飘动的旗帜(正弦)
- OpenGL -- 飘动的旗帜 (java)
- OpenGL -- 飘动的旗帜 (java)
- unity shader—飘动的红旗
- 【Qt OpenGL教程】11:旗帜效果(飘动的纹理)
- 【Unity Shader】2D动态云彩
- Unity Shader(ShaderLab)着色器简介
- unity shader:初探shaderlab
- Unity CG 写一个超酷的 ray-marching(shader纯代码写3D)
- nyoj234 吃土豆 01背包
- NYOJ251 AMAZING AUCTION
- HBase在java代码中的使用
- 垃圾回收
- Lowest Common Ancestor of a Binary Search Tree
- Unity ShaderLab: 2D/3D Wave Flag Shader(飘动旗帜)的实现
- C#文件IO流详解
- 基于matlab的简单的寻找波峰波谷处理方法
- Android 反编译使用 图解(详解)
- X
- Android StudioDay03-3(键盘导航)
- 欢迎使用CSDN-markdown编辑器
- TabLayout的使用和踩过的坑
- 自己写的一个模板栈的头文件