Unity Shader学习案例一: 流光效果
Unity Shader Lab新手宝典简单Shader案例一:流光效果 + 相关基础知识说明
Shader "Samples/Light Flow"//shader名称
{Properties//开放到材质面板的属性{_Tex("Texture",2D) = "white"{}_Color("Color",Color) = (0,1,1,1)//关键词枚举,0为X方向,1为Y方向[KeywordEnum(X,Y)] _DIRECTION("Flow Direction",float) = 0_Speed("Flow Speed",float) = 1}SubShader//下面是shader的主要内容{Tags{"RenderType" = "Transparent" "Queue" = "Transparent"}//标签,通过键值对的形式声明,没有数量限制。//RenderType(渲染类型)标签:将Shader划分为不同类别,用于后期进行Shader替换,或者产生摄像机的深度纹理//所有可使用的渲染类型:Opaque\Transparent\TransparentCutout\Background\Oberlay\TreeQpaque\TreeTransparentCutout\TreeBillboard\Grass\GrassBillboard//Queue(队列)标签:确定物体的渲染顺序//Unity预先定义的五种渲染队列:Background\Geometry\AlphaTest\Transparent\OverlayBlend One One//混合模式,线性减淡Cull Off//渲染状态,Cull Back\Front\Off,设置多边形的剔除方式,有背面剔除、正面剔除、不剔除,默认为Back,可以放到Pass内。Pass{CGPROGRAM//接下来是CG语言//编译指令#pragma vertex vert//定义顶点着色器的名称,通常使用vert#pragma fragment frag//定义片段着色器名称,通常使用frag//定义枚举关键词#pragma shader_feature _DIRECTION_X _DIRECTION_Y#include"unityCG.cginc"//导入包含文件struct v2f{float2 texcoord : TEXCOORD0;float4 vertex : SV_POSITION;};sampler2D _Tex;float4 _Tex_ST;fixed4 _Color;float _Speed;v2f vert (appdata_base v){v2f o;o.texcoord = TRANSFORM_TEX(v.texcoord,_Tex);o.vertex = UnityObjectToClipPos(v.vertex);return o;}float4 frag(v2f i) : SV_Target{float2 texcoord;//判断流动方向#if _DIRECTION_Xtexcoord = float2(i.texcoord.x + _Time.x * _Speed, i.texcoord.y);#elif _DIRECTION_Ytexcoord = float2(i.texcoord.x, i.texcoord.y + _Time.x * _Speed);#endifreturn tex2D(_Tex,texcoord) * _Color;}ENDCG} }
}
可以设置的渲染类型
类型名称 | 描述 |
---|---|
Opaque | 用于普通Shader,例如:不透明、自发光、反射、地形Shader |
Transparent | 用于半透明Shader,例如:透明、粒子 |
TransparentCutout | 用于透明测试Shader,例如:植物叶子 |
BackGround | 用于Skybox Shader |
Overlay | 用于GUI纹理、Halo、Flare Shader |
TreeOpaque | 用于地形系统中的树干 |
TreeTransparentCutout | 用于地形系统中的树叶 |
TreeBillboard | 用于地形系统中的Billboard树 |
Grass | 用于地形系统中的草 |
GrassBillboard | 用于地形系统中的Billboard草 |
Unity预定义的五种渲染队列
队列名称 | 描述 | 队列号 |
---|---|---|
Background | 最先执行渲染,一般用来渲染天空盒(Skybox)或者背景 | 1000 |
Geometry | 非透明的集合体通常使用这个队列,当没有声明渲染队列的时候,Unity默认使用这个队列 | 2000 |
AlphaTest | Alpha测试的几何体会使用这个队列,之所以从Geometry队列单独拆分出来,是因为当所有实体都绘制完之后再绘制Alpha测试会更高效 | 2450 |
Transparent | 在这个队列的几何体按由远及近的顺序进行绘制,所有进行Alpha混合的几何体都应该使用这个队列,例如玻璃材质、粒子特效等 | 3000 |
Overlay | 用来叠加渲染的效果,例如镜头光晕等,放在最后渲染 | 4000 |
除了使用这些Unity预定义的渲染队列外,也可以自己指定一个队列,例如:
Tags{"Queue" = "Geometry + 1"}
这就是表示队列号为2000+1的队列号,在所有非透明几何体绘制完后再进行绘制。
Unity Shader学习案例一: 流光效果相关推荐
- Unity Shader学习:Dissolve消融效果
Unity Shader学习:Dissolve消融效果 消融效果在游戏里非常常用,这里简单的实现下,代码里用到了if分支在shader里可能会费一点,如果想直接用puppet_master大佬版本的话 ...
- Unity shader学习之屏幕后期处理效果之高斯模糊
高斯模糊,见 百度百科. 也使用卷积来实现,每个卷积元素的公式为: 其中б是标准方差,一般取值为1. x和y分别对应当前位置到卷积中心的整数距离. 由于需要对高斯核中的权重进行归一化,即使所有权重相加 ...
- 【Unity Shader学习】边缘泛光效果
Shader "Sbin/Rim" {Properties{_Scale("Scale",Range(1,8)) = 1}SubShader{// 通过标签对透 ...
- Unity Shader学习:油画效果
Unity Shader学习:油画效果 油画效果在学习浅墨大神的文章时看到的比较有趣,但是原文中也没详细的算法介绍如何实现,这里就先直接拿来用吧,UI和屏幕后处理都可以用,算法也看的不是很明白,好像是 ...
- Unity Shader 学习笔记(33) 全局光照(GI)、反射探针、线性空间和伽马空间、高动态范围(HDR)
Unity Shader 学习笔记(33) 全局光照(GI).反射探针.线性空间和伽马空间.高动态范围(HDR) 参考书籍:<Unity Shader 入门精要> [<Real-Ti ...
- Unity Shader学习:动态模糊(shutter angle方式)
Unity Shader学习:动态模糊 动态模糊一般有帧混合和motion vector两种,这里主要介绍motion vector的方法. Keijiro源码:https://github.com/ ...
- Unity Shader学习:水墨效果
Unity Shader学习:水墨效果 偶然在网上看到9级铁甲蛹大神的水墨风格后处理觉得挺有意思,参照着实现一下,还是涉及到之前油画效果的算法,叫什么滤波暂时不清楚,应该用来处理手绘效果挺多的. 水墨 ...
- 《Unity Shader入门精要》学习笔记第5章 开始Unity Shader学习之旅
本文章用于帮助自己学习,因此只记录一些个人认为比较重要或者还不够熟悉的内容. 原作者:http://blog.csdn.net/candycat1992/article/ 第五章 开始Unity Sh ...
- Unity Shader 学习笔记(3)URP渲染管线带阴影PBR-Shader模板(ASE优化版本)
此 Shader 已经不是最新版本,最新版本见本专栏的第四篇文章: Unity Shader 学习笔记(4) 材质面板截图: 功能实现(URP渲染管线下): PBR材质.投射和接收阴影. 代码展示: ...
最新文章
- Python 基础常用数据结构
- Android CameraSurfaceView在SurfaceView上实现拍照,视频录像
- python中字典的增删改查及其他常用操作
- Java防止Xss注入json_浅谈 React 中的 XSS 攻击
- Yaas上传附件的技术实现
- JS中popup.js
- eslint 无法格式化ts_vscode保存代码,自动按照eslint规范格式化代码设置
- 信息学奥赛一本通(1092:求出e的值)
- NGINX1.19安装手册
- Python并发编程系列之多进程(multiprocessing)
- Android-利用LinearGradient实现文字一闪一闪
- PyCharm中英文版本切换
- 笔记本的结构深入分析
- C语言学习笔记第十天
- edge如何导入html文件收藏夹,Edge浏览器如何导入导出收藏夹(目录位置)
- slam之视觉+IMU
- 【180928】WPF扫雷游戏源码
- 如何搜到专业数据和行业报告
- 手把手教你办理深圳入户办理,这些流程你都学会了吗?
- JFET压控电阻的线性补偿