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学习案例一: 流光效果相关推荐

  1. Unity Shader学习:Dissolve消融效果

    Unity Shader学习:Dissolve消融效果 消融效果在游戏里非常常用,这里简单的实现下,代码里用到了if分支在shader里可能会费一点,如果想直接用puppet_master大佬版本的话 ...

  2. Unity shader学习之屏幕后期处理效果之高斯模糊

    高斯模糊,见 百度百科. 也使用卷积来实现,每个卷积元素的公式为: 其中б是标准方差,一般取值为1. x和y分别对应当前位置到卷积中心的整数距离. 由于需要对高斯核中的权重进行归一化,即使所有权重相加 ...

  3. 【Unity Shader学习】边缘泛光效果

    Shader "Sbin/Rim" {Properties{_Scale("Scale",Range(1,8)) = 1}SubShader{// 通过标签对透 ...

  4. Unity Shader学习:油画效果

    Unity Shader学习:油画效果 油画效果在学习浅墨大神的文章时看到的比较有趣,但是原文中也没详细的算法介绍如何实现,这里就先直接拿来用吧,UI和屏幕后处理都可以用,算法也看的不是很明白,好像是 ...

  5. Unity Shader 学习笔记(33) 全局光照(GI)、反射探针、线性空间和伽马空间、高动态范围(HDR)

    Unity Shader 学习笔记(33) 全局光照(GI).反射探针.线性空间和伽马空间.高动态范围(HDR) 参考书籍:<Unity Shader 入门精要> [<Real-Ti ...

  6. Unity Shader学习:动态模糊(shutter angle方式)

    Unity Shader学习:动态模糊 动态模糊一般有帧混合和motion vector两种,这里主要介绍motion vector的方法. Keijiro源码:https://github.com/ ...

  7. Unity Shader学习:水墨效果

    Unity Shader学习:水墨效果 偶然在网上看到9级铁甲蛹大神的水墨风格后处理觉得挺有意思,参照着实现一下,还是涉及到之前油画效果的算法,叫什么滤波暂时不清楚,应该用来处理手绘效果挺多的. 水墨 ...

  8. 《Unity Shader入门精要》学习笔记第5章 开始Unity Shader学习之旅

    本文章用于帮助自己学习,因此只记录一些个人认为比较重要或者还不够熟悉的内容. 原作者:http://blog.csdn.net/candycat1992/article/ 第五章 开始Unity Sh ...

  9. Unity Shader 学习笔记(3)URP渲染管线带阴影PBR-Shader模板(ASE优化版本)

    此 Shader 已经不是最新版本,最新版本见本专栏的第四篇文章: Unity Shader 学习笔记(4) 材质面板截图: 功能实现(URP渲染管线下): PBR材质.投射和接收阴影. 代码展示: ...

最新文章

  1. Python 基础常用数据结构
  2. Android CameraSurfaceView在SurfaceView上实现拍照,视频录像
  3. python中字典的增删改查及其他常用操作
  4. Java防止Xss注入json_浅谈 React 中的 XSS 攻击
  5. Yaas上传附件的技术实现
  6. JS中popup.js
  7. eslint 无法格式化ts_vscode保存代码,自动按照eslint规范格式化代码设置
  8. 信息学奥赛一本通(1092:求出e的值)
  9. NGINX1.19安装手册
  10. Python并发编程系列之多进程(multiprocessing)
  11. Android-利用LinearGradient实现文字一闪一闪
  12. PyCharm中英文版本切换
  13. 笔记本的结构深入分析
  14. C语言学习笔记第十天
  15. edge如何导入html文件收藏夹,Edge浏览器如何导入导出收藏夹(目录位置)
  16. slam之视觉+IMU
  17. 【180928】WPF扫雷游戏源码
  18. 如何搜到专业数据和行业报告
  19. 手把手教你办理深圳入户办理,这些流程你都学会了吗?
  20. JFET压控电阻的线性补偿

热门文章

  1. java之多线程抢火车票
  2. 初探12306售票算法
  3. 重构 Python 代码系列之一
  4. iOS 升级到iOS13 无法获取WiFi名称(SSID)的问题
  5. 财会论文变量 | 股价崩盘风险
  6. setInterval的启动与停止,以及node-schedule的简单使用
  7. 解决中文乱码问题大全
  8. java byte 查找_在 stream流 和 byte[] 中查找(搜索)指定字符串
  9. java中File详解
  10. 解决commander选项取值问题