Unity入门精要(笔记)

Draw Call:理解为一个命令,由CPU发起,GPU接收,命令指向一个需要被渲染的图元列表,计算数据后输出为像素

顶点着色器:每个定点都会调用一次,完成坐标的变换(将定点坐标从模型空间转换到其次裁剪空间)和逐定点的光照。

三角形设置:由得到的信息计算每个图元覆盖的像素,计算像素的颜色

三角形遍历:检查每个像素是否被一个三角网格覆盖。被覆盖则生成一个片元(片元并不是真正意义上的像素)

片元着色器(像素着色器):进行逐片元的操作,输入的是对顶点着色器输出的信息插值得到的结果(为了在片元着色器中进行纹理采样,通常在定点着色器阶段输出每个顶点对应的纹理坐标)

逐片元操作:决定片元的可见性,混合颜色信息

HLSL(DirectX):High Level Shading Language

Cg(Nvidia):C for Graphic

GLSL(OpenGL):OpenGL Shading Language

DrawCall数量影响:DrawCall之前CPU向GPU提交数据,DrawCall多时,过多的CPU提交数据造成CPU过载

Unity Shader:用ShaderLab编写,ShaderLab是Unity提供的编写UnityShader的一种说明性语言

通过Shader名称的字符串中添加'/'修改对应Shader出现在菜单中的位置

Properties:用于包含需要显示在Inspector面板中的属性的语义块

\\ Example
Properties{
  Name("display name", PropertyType) = DefaultValue
}

SubShader

  • 一个Shader中至少包含一个SubShader
  • Unity会选择第一个可以在当前平台使用的SubShader,都不行的话使用Fallback指定的UnityShader
  • SubShader中会定义一系列的Pass,RenderSetup,Tags

常见渲染状态

  • Cull:设置剔除模式,背面(Back),证明(Front),关闭(Off)
  • ZTest:设置深度测试使用函数
  • ZWrite:开启和关闭深度写入
  • Blend:开启并设置混合模式

Pass语义块

  • 通过Name "MyPassName"命名,从而实现复用
  • 复用使用UsePass "MyShader/MYPASSNAME",PassName部分要使用全大写

Fallback:如果所有的SubShader都用不了的话就使用Fallback提供备选的Shader

表面着色器(Surface Shader)

  • 需要代码量少,但是渲染代价比较大
  • 处理很多光照细节

顶点/片元着色器(Vertex/Fragment Shader)

  • 代码复杂但是灵活度高
  • 代码写在Pass语义块内,自己定义每个Pass的Shader代码

Unity Shader并非是真正的Shader

  • Unity里,Unity Shader指的只是一个ShaderLab文件
  • Unity Shader可以同时编写顶点着色器和片元着色器
  • 本质上说Unity中只存在定点/片元着色器

Unity中的笛卡尔坐标系

  • 对于模型空间和世界空间,使用的是左手系
  • 观察空间使用的是右手系

点(Point):维度空间里面的一个位置,主要为二维空间或者三维空间

矢量(vector):包含了模和方向的有向线段,小写粗体表示,通常用于相对于某个点的偏移

单位矢量:模为1的矢量,也称为归一化的矢量,将矢量转化成单位矢量的过程叫做归一化,单位矢量使用小写粗体字符上添加'^'表示

矢量的点积

  • 也称为内积
  • dot(a,b)表示两个矢量的点积,计算为矢量对应的分量分别相乘。
  • 点积的其中一个几何意义就是投影,一个矢量a点积一个矢量b,除以a模则是ba上的投影,除以b的模则是ab方向上的投影
  • 正负表示与单位矢量a方向相同或者相反
  • 一个矢量与自身进行点积,结果是矢量模的平方
  • 两个单位矢量的点积是对应的余弦值

矢量的叉积

  • 也成为矢量的外积
  • 计算的结果仍然是一个矢量
  • axb = (aybz - azby, azbx - axbz, axby - aybx),计算的角标是按照xyz连续相邻
  • 不满足交换率
  • 点积的向量的长度为a的模和b的模乘以sin夹夹角值
  • 左手系和右手系不会对计算结果产生影响,影响的知识三维空间中视觉表现

矩阵(Matrix)

  • 由mxn个标量组成的长方形数组
  • 矩阵乘法满足结合率不满足交换率

方块矩阵

  • 简称方阵,行数和列数相等的矩阵
  • 有对角元素,对角元素为行数和列数相等的元素

对角矩阵

  • 对角矩阵是除了对角元素外都为0的对角矩阵

单位矩阵

  • 将原矩阵的第i行变成了第i列,即为转置矩阵

逆矩阵

  • 矩阵可逆的前提是方块矩阵
  • 如果矩阵有逆矩阵则说矩阵可逆
  • 矩阵的行列式不为0,则矩阵可逆
  • 转置矩阵的逆矩阵是逆矩阵的转置

正交矩阵

  • 如果一个方阵和其转置矩阵的相乘为单位矩阵则为正交矩阵

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容

  • <转>我也忘了转自哪里,抱歉,感谢原作者 什么是Shader Shader(着色器)是一段能够针对3D对象进行操作...
    星易乾川阅读 5,574评论 1 16
  • Unity Shader学习-1.渲染流水线 先了解一下什么是流水线:(下面是百度百科的定义) 流水线:流水线又称...
    ZeroTryTryTry阅读 5,472评论 2 17
  • 转载注明出处:点击打开链接 Shader(着色器)是一段能够针对3D对象进行操作、并被GPU所执行的程序。Shad...
    游戏开发小Y阅读 3,321评论 0 4
  • 你好,三角形 图形渲染管线(Pipeline) 3D坐标转为2D坐标的处理过程是由OpenGL的图形渲染管线(Pi...
    IceMJ阅读 7,409评论 2 13
  • 目录结构: 第一步,明确要干嘛 第二步,怎么去画(纯理论) 第三步,怎么去画(实战) 第四步,练练手 第一步,明确...
    半纸渊阅读 8,059评论 18 57