UnityShader入门精要-unity shader基础

Unity中的shader

assets-create-shader创建,共有四个模板可供选择:

standard surface shader 包含标准光照模型的表面着色器模板

unlit shader 不包含光照但包含雾效的基本顶点片元着色器

imageeffect shader实现屏幕后处理效果的基本模板

computeshader 旨在利用GPU并行性进行一些与常规渲染流水线无关的计算

Unity Shader 的结构

Properties属性

在properties中的定义会显示在材质面板中,便于在面板中调整

Properties{
Name("name",PropertyType)=DefaultValue;
}

Subshader

每个shader文件至少要有一个subshader语句块,依次扫描可用的,如果都不可用就使用Fallback语义指定的。subshader下有Tags标签语句块与RenderSetup状态语句块,可以设置显卡的各种状态与搭起shader和引擎间桥梁。完整的渲染流程在Pass语句块中定义,pass过多会造成渲染性能的下降。

UsePass:可以使用该命令服用其他unity shader中的pass

GrabPass:该pass负责抓取屏幕并将结果存储在一张纹理中

UnityShader的形式

表面着色器:

unity自创的一种着色器代码类型,给unity提供一个表面着色器后在背后会被转换成对应的顶点片元着色器,unity帮助处理了许多光照细节。表面着色器被定义在subshader语句块中的 CGPROGRAM和ENDCG之间,其代码用CG/HLSL编写嵌入其中。

顶点、片元着色器、

unity shader形式的选择:各种多个光源-表面着色器,光照数目少--顶点片元,自定义渲染效果-顶点片元。

属性、内置文件(常用结构体、帮助函数)、语义

见p108-111,后续会详细说明。

你可能感兴趣的:(Unity,shader入门精要,unity,游戏引擎,c#,图形渲染)