Unity图形学之ShaderLab入门基础
文章来源: 学习通http://www.bdgxy.com/
普学网http://www.boxinghulanban.cn/
智学网http://www.jaxp.net/
表格制作excel教程http://www.tpyjn.cn/
学习通http://www.tsgmyy.cn/
这篇只是一个总结,方便我写shader的时候查找API;
1.格式
Shader "Custom/MyShader" //命名+右键创建shader路径
{ //属性必须在代码里声明才能使用Properties{ //属性,会出现在inspector面板_MainTex("Main Tex",2D) = "white"{} //名称("面板显示名称",数据类型) = 初始化}//针对不同显卡可以有不同subshader,对应不同品质的渲染SubShader{ Tags{"LightMode"="ForwardBase"} //tags,定义渲染的设置ZWrite Off //RenderSetup,渲染设置Pass{ //通道pass,一个subshader可以有多个passName = "MyPass" //pass可以命名,在其他subshader引用UsePass大写CGPROGRAM //开始CG代码-和ENDCG成对#pragma vertex vert //定义渲染函数,顶点#pragma fragment frag //片元#pragma surface surf Lambert //表面#include "Lighting.cginc" //包含方法库
sample2D _MainTex; //声明变量float4 _MainTex_ST;struct a2v //自定义结构体{float4 vertex : POSITION; //变量类型 变量名:语义说明(语言规定)float3 normal: NORMAL;}v2f vert (appdata v) //函数体{ v2f o;return o;}ENDCG}
}
SubShader{...}
FallBack "Diffuse" //以上subshader显卡都不支持,默认返回漫反射
}
uniform修饰词;
Name = "MyPass"
——UsePass "Unlit/Outline/MYPASS"//必须大写
——GrapPass//抓取屏幕结果存储在一张纹理中
2.属性
属性对应的变量类型,声明变量使用;属性中类型和变量中类型不一定一致;
3.语义
SV_开头表示System-Value——系统定义的语义变量;
4.Tags
1)SubShader可用
Queue——渲染队列
RenderType——渲染类型
(1)”Opaque”:绝大部分不透明的物体都使用这个;
(2)”Transparent”:绝大部分透明的物体、包括粒子特效都使用这个;
(3)”Background”:天空盒都使用这个;
(4)”Overlay”:GUI、镜头光晕都使用这个;
(5)还有其他可参考Rendering with Replaced Shaders;用户也可以定义任意自己的RenderType字符串;
(6)”TransparentCutout“:透明测试使用;
IgnoreProjector = “True”——忽略投影器影响,AlphaTest和AlphaBlend使用;
ForceNoShadowCasting = “True”——表示不接受阴影;
2)Pass可用
"LightMode"="ForwardBase"
5.RenderSetup
1)Cull剔除
Cull Front/Back/Off
2)深度测试和写入
ZWrite Off
ZTest Off
3)Blend——透明混合设置
BlendOp
Blend效果
6.方法
UnityCG.cginc常用结构体
书写建议:
1.移动平台的shader尽可能使用精度低的变量:fixed-half-float
2.错误:片元中大量计算导致寄存器不足——提高shaderTarget等级
3.尽量不要使用分支语句
4.不要除以0
Life is too short for so much sorrow.
到此这篇关于Unity图形学之ShaderLab入门基础的文章就介绍到这了,更多相关Unity ShaderLab内容请搜索菜鸟教程https://www.piaodoo.com/以前的文章或继续浏览下面的相关文章希望大家以后多多支持菜鸟教程https://www.piaodoo.com/!
Unity图形学之ShaderLab入门基础相关推荐
- Unity 3D开发--Shader入门基础
Shader "Unlit/xxShader" {Properties{//基础属性 并可以显示在属性板上_MainTex ("Texture", 2D) = ...
- Games101计算机图形学入门基础之一:向量变换、矩阵变换、视图变换、欧拉角与四元数
Games101计算机图形学入门基础之一:向量变换.矩阵变换.齐次坐标.欧拉角与四元数 目录 Games101计算机图形学入门基础之一:向量变换.矩阵变换.齐次坐标.欧拉角与四元数 前言 向量 向量加 ...
- Games101计算机图形学入门基础之二:光栅化
Games101计算机图形学入门基础之二:光栅化 引言 三角形的离散化 采样 走样 走样带来的瑕疵 反走样 先模糊再采样 傅里叶变换 低通滤波 卷积 多重采样抗锯齿(超采样) 深度缓存 可见性与遮挡( ...
- 【教程汇总+持续更新】Unity游戏开发从入门到入坟
新的一年,本该在年前整理的年终总结被拖到了年后开工.去年大量时间投入在Catlike教程的翻译上,截止目前位置,教程的进度已经完全追平原作者. 去年还有一部分是断断续续的更新SLG实战教程,但遗憾的是 ...
- Unity游戏动画 从入门到住院:动画状态机
好了,现在我们已经成功的导入了动画.接下来要玩的东西就很装13啦.因为大部分动画师是用不到这家伙的,需要掌握这个技能的,至少也是动画组长级别了.嗯...一个组只有你一个动画的,闭嘴!给你个同情的眼神. ...
- Unity游戏动画 从入门到住院 4:动画状态机
Unity游戏动画 从入门到住院:动画状态机 发布者: wuye | 发布时间: 2016-9-7 15:02| 评论数: 3 文/拉撒路 上次我们讲过Unity游戏动画从入门到住院,今天我们来讲一下 ...
- Python培训入门基础知识学什么?
Python培训基础知识主要是针对一些零基础的同学安排的,虽说Python是相对比较简单的一门编程语言,但是没有基础的同学还是要进行系统的学习,那么Python培训入门基础知识学什么呢?来看看下面小编 ...
- JSON入门基础知识
2019独角兽企业重金招聘Python工程师标准>>> JSON入门基础 1.JSON定义 JSON:JavaScript 对象表示法(JavaScript Object Notat ...
- JSP WEB开发入门基础到高手进阶教程002
JSP WEB开发入门基础到高手进阶教程 -------开发入门 JSP与微软的Active Server Pages 兼容,但它是使用类似HTML的卷标以及Java程序代码段而不是VBScript. ...
最新文章
- Serializer序列化使用
- 在centos7升级nodejs
- 听说你在学习算法?清华教授为你准备了一份独家秘籍!
- 2018 java蓝桥杯校赛题目
- Python中int(input(请输入一个数))报错:ValueError: invalid literal for int() with base 10: '2.7'
- 几款Java开发者必备常用的工具,准点下班不在话下
- 【codevs1063NOIP04PJ】合并果子,贪心の钻石
- mysql union all 别名_mysql union 与 union all 语法及用法
- [Python] L1-002. 打印沙漏-PAT团体程序设计天梯赛GPLT
- 第一回合:.net与 C#基本概念
- linux python测试程序,linux下测试python程序执行时间
- NetworkComms.Net github下载地址
- C3: 基金名称末尾 A 和 C 的区别
- 计算机一级考试可以带滴眼液,长期看电脑的人适宜滴眼药水缓解眼干吗?有害吗?...
- Win10系统截图新工具的快捷键
- 【Unity Shader 消融效果_案例分享】
- 抖音荣誉等级与粉丝等级的消费对照表
- 小封装SOT23车规加密认证芯片ALPU-CV
- 【Python】如何判断丑数
- SQL Server 2005 连接到服务器失败解决方案