《Unity Shader 入门精要》 笔记(二)Unity shader概述
前言代码太多之后就不在文章里给出来了,我会以链接的方式给出书上代码的复现代码,我会在代码里添加一些注释,让大师更好理解,有需要查看源码可以参考我给出的链接,如果可以的话,可以给我的github加个star,thank you!Unity Shader -> 控制衬着的抽象层
Unity Shader
Shader Lab
[*]属性 (property) -> 声明这些属性是为了在材质面板中能够便利地调整各种材质属性
[*]SubShader -> 概况着色器代码写在这里,一个SubShader对应一个显卡平台,当Unity需要加载这个Unity Shader时,Unity选择第一个能够在方针平台上运行的SubShader。如果都不撑持的话,Unity就会使用Fallback指定的Unity Shader。SubShader中定义了流程Pass以及衬着状态设置和标签。每个Pass定义了一次完整的衬着流程。
注:概况着色器是Unity本身缔造的一种着色器代码类型,是Unity对顶点/片元着色器的更高一层的抽象。Unity 为我们措置了这些片元的光照细节。但在背后,Unity还是会把它转化成一个包含多Pass的顶点/片元着色器。衬着状态设置 -> 全局生效
衬着状态设置
全局标签
全局标签
Pass -> 顶点/片元着色器代码写在这里
[*]名字:在shader中通过名字访谒其他shader的pass(UsePass)
[*]标签:与SubShader中定义的全局标签分歧
[*]状态:与SubShader一样,但是局部生效
写在pass中的标签类型
如安在Unity中使用shader -> 一个简单的shader脚本
1.为gameObject添加两个Component:Mesh Filter->用来绑定mesh;Mesh Renderer->用来为mesh绑定Material,设置暗影;
2.为一个Mesh Renderer添加Material->用来快速调整shader效果
3.为一个Material添加一个shader脚本->在shader里编写各种衬着设置、效果,以及定义表露在Material中供用户快速调整的属性
Unity内置变量和函数
CG/HLSL 语义
[*]语义可以让Shader知道从哪里读取数据, 并把数据输出到哪里
[*]系统数值语义(system-value semantics),这类语义是以sv开头的
[*]常用语义
注:即便语义的名称一样,如果呈现的位置分歧,含义也分歧。
Debug -> 建议使用RenderDoc
页:
[1]