Unity Shader入门精要读书笔记(二)UnityShader概述
第三章《UnityShader概述》的读书笔记:
1.Unity Shader模板提供了几种选择:
标准光照模型(新添加的基于物理的渲染方法)
不含光照的基本的顶点、片元着色器
屏幕后处理效果
ComputeShader较为复杂,不做介绍

2.Shader lab是一层抽象,开发者通过这一层抽象来写Shader,免去和很多文件打交道;
3.Shader lab定义了一个材质需要的所有东西,而不仅仅是着色器代码;
4.Shader lab就是我们直接写的那个Shader文件;
5.Properties是材质和UnityShader之间的桥梁,例子:
_2D(“2D”, 2D)=””{}
_Cube(“Cube”, Cube)=”white”{}
_3D(“3D”, 3D)=”black”{}
这些花括号里面的内容在随后的版本中被弃用了;
6.Properties语义块使得属性暴露在材质面板中;在subshader中也可以声明并使用Properties中没有声明的属性;
7.Unityshader必须要有一个subshader语义块,Unity将会找到适合当前机器使用的第一个subshader语义块来执行(这一点很重要);subshader可以有多个,一个subshader可以有多个pass;
8.Subshader通常包括tags块,rendersetup块,pass块(必须),每一个pass定义一个完整的渲染流程;
9.常见的渲染状态设置:

10.在subshader上写渲染状态,会应用到所有的pass中,如果只想影响一个pass,那么就写入到这个pass中;
11.Tags是键值对,是subshader和渲染引擎之间的沟通桥梁;

12.Pass也有Tags,不过和上面的应用在SubShader上的标签是不太一样的;
13.使用UsePass命令时注意名称全大写,即UsePass “MyShader/MYPASSNAME”;
14.Pass的标签规定我们如何渲染此物体;
15.Pass的标签有:

16.Fallback留一条后路,如果上述所有的subshader都无法使用,那么就用这一个shader,有:fallback “name” 和fallback off表示关闭;
17.十分值得注意:fallback影响阴影。在渲染阴影纹理时,Unity会在每一个shader中寻找阴影投射的pass,而我们不需要专门实现一个pass,因为fallback中内置的shader常常有这样的通用的pass;
18.着色器代码可以写在SubShader语义块中(比如表面着色器),也可以写在Pass语义块中(比如顶点/片元着色器、固定函数着色器);
19.[Unity的宠儿]表面着色器是顶点、片元着色器更高一层的抽象,能够做很多事情;
20.CGPROGRAM到ENDCG之间的代码是CG/HLSL编写的,但是是经过封装的,有细微差别;
21.[聪明孩子]用顶点、片元着色器来写CG/HLSL,更复杂但是灵活性好;
22.顶点、片元着色器的代码在CGPROGRAM和ENDCG之间,只不过要写在Pass中;
23.[被遗弃的孩子]固定函数着色器基本上废弃了;
24.如果要实现自定义的渲染效果,使用顶点、片元着色器;
25.Unity里的CG和HLSL是等价的;
26.本质上,表面着色器会转换为顶点片元着色器;
Unity Shader入门精要读书笔记(二)UnityShader概述的更多相关文章
- Unity Shader入门精要读书笔记(一)序章
本系列的博文是笔者读<Unity Shader入门精要>的读书笔记,这本书的章节框架是: 第一章:着手准备. 第二章:GPU流水线. 第三章:Shader基本语法. 第四章:Shader数 ...
- Unity Shader入门精要读书笔记(三)Shader必须的数学基础
Xyz三维坐标系如下:左手坐标系 但是摄像机观察空间则是采用右手系: 右手法则判断叉乘的结果的方向: 正交矩阵(单位互相垂直的基矢量构成正交矩阵)具有逆与转置一致性: 列矩阵运算CBAv和行矩阵的运算 ...
- Unity Shader入门精要学习笔记 - 第10章 高级纹理
转载自 冯乐乐的 <Unity Shader入门精要> 立方体纹理 在图形学中,立方体纹理是环境映射的一种实现方法.环境映射可以模拟物体周围的环境,而使用了环境映射的物体可以看起来像镀了层 ...
- Unity Shader入门精要学习笔记 - 第7章 基础纹理
转自 冯乐乐的 <Unity Shader 入门精要> 纹理最初的目的就是使用一张图片来控制模型的外观.使用纹理映射技术,我们可以把一张图“黏”在模型表面,逐纹素地控制模型的颜色. 在美术 ...
- Unity Shader入门精要学习笔记 - 第4章 学习 Shader 所需的数学基础
摘录自 冯乐乐的<Unity Shader入门精要> 笛卡尔坐标系 1)二维笛卡尔坐标系 在游戏制作中,我们使用的数学绝大部分都是计算位置.距离.角度等变量.而这些计算大部分都是在笛卡尔坐 ...
- Unity Shader入门精要学习笔记 - 第17章 Unity的表面着色器探秘
转自 冯乐乐的<Unity Shader 入门精要> 2010年的Unity 3 中,Surface Shader 出现了. 表面着色器的一个例子. 我们先做如下准备工作. 1)新建一个场 ...
- Unity Shader入门精要学习笔记 - 第16章 Unity中的渲染优化技术
转自冯乐乐的 <Unity Shader 入门精要> 移动平台的特点 为了尽可能一处那些隐藏的表面,减少overdraw(即一个像素被绘制多次),PowerVR芯片(通常用于ios设备和某 ...
- Unity Shader入门精要学习笔记 - 第15章 使用噪声
转载自 冯乐乐的 <Unity Shader 入门精要> 消融效果 消融效果常见于游戏中的角色死亡.地图烧毁等效果.这这些效果中,消融往往从不同的区域开始,并向看似随机的方向扩张,最后整个 ...
- Unity Shader入门精要学习笔记 - 第14章非真实感渲染
转载自 冯乐乐的 <Unity Shader 入门精要> 尽管游戏渲染一般都是以照相写实主义作为主要目标,但也有许多游戏使用了非真实感渲染(NPR)的方法来渲染游戏画面.非真实感渲染的一个 ...
随机推荐
- 关于有时候Servlet会被执行两次的问题
用<a>标签做了下载跳转,为什么点一次,servlet会被执行两次? 写了一个最简单的文件下载 点击超链接向servlet发送一个请求,然后下载该文件.可是每次该servlet都会被访问两 ...
- sql内连接外连接自然连接
为什么我们要使用内连接和外连接呢?可以从两张或者多张表中找出,我们需要的属性. 这个比较好:http://www.cnblogs.com/youzhangjin/archive/2009/05/22/ ...
- selenium学习笔记(xpath和css定位)
简单的介绍下xpath和css的定位 理论知识就不罗列了 还是利用博客园的首页.直接附上代码: 这个是xpath #!/usr/bin/env python # -*- coding: utf_8 - ...
- java 在Excel中插入图片 POI实现
一.POI简介 Jakarta POI 是apache的子项目,目标是处理ole2对象.它提供了一组操纵Windows文档的Java API 目前比较成熟的是HSSF接口,处理MS Excel(97- ...
- 在Windows Server 2012上安装SharePoint 2010 SP1
现在很多企业的系统都开始用上了Windows 2012,最近公司需要建立一个门户系统,一开始就想到了微软的SharePoint2010,这玩意确实非常强悍,2008已经褪去,当然直接在Windows ...
- Linux命令详解-ls
Ls(list)命令是linux下最常用的命令.ls命令就是list的缩写缺省下ls用来打印出当前目录的清单如果ls指定其他目录那么就会显示指定目录里的文件及文件夹清单.通过ls 命令不仅可以查 ...
- MVC,MVP 和 MVVM 的图示,区别
作者: 阮一峰 日期: 2015年2月 1日 复杂的软件必须有清晰合理的架构,否则无法开发和维护. MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用.它本身 ...
- IOS-社会化分享
一.如何实现社交分享 在iOS中,实现“社交分享”的方法 1.自己编写各个平台的分享代码(代码量较多) 2.利用iOS自带的Social.framework 3.利用第三方的分享框架 友盟分享 ...
- 2017.2.9日总结--外网IP和内网IP
Linux自己不能通过自己的外网访问自己必须通过内网访问自己
- javaBean和mvc思想
JavaBean, 咖啡豆. JavaBean是一种开发规范,可以说是一种技术. JavaBean就是一个普通的java类.只有符合以下规定才能称之为javabean: 1)必须提供无参数的构造方法 ...