Unity中Shader学习笔记

1、Shader 中 Properties 属性:

Numbers and Sliders

name ("display name", 2D) = "defaulttexture" {}
name ("display name", Cube) = "defaulttexture" {}
name ("display name", 3D) = "defaulttexture" {}

Colors and Vectors

name ("display name", Color) = (number,number,number,number)

name ("display name", Vector) = (number,number,number,number)

Textures

name ("display name", 2D) = "defaulttexture" {}
name ("display name", Cube) = "defaulttexture" {}

name ("display name", 3D) = "defaulttexture" {}

2、Shader 中 #include 外部引用:

HLSLSupport.cginc ==>辅助宏和跨平台着色编译的定义。

UnityShaderVariables.cginc ==>常用的全局变量。

UnityCG.cginc ==>常用的辅助函数。

AutoLight.cginc ==>照明和阴影功能,例如,表面着色器在内部使用这个文件。

Lighting.cginc ==>标准的表面着色照明模型;当你在写表面着色器时自动包含。

TerrainEngine.cginc ==>地形和植被阴影的辅助功能。

3、Shader 中 #Pragma 编辑:

扫描二维码关注公众号,回复: 1528143 查看本文章

#pragma vertex name - 编译函数名作为顶点着色器。
#pragma fragment name
- 编译函数名作为片段着色器。
#pragma geometry name
编译函数名为DX10几何着色器。有了这个选项,就会自动打开“目标4.0”
#pragma hull name
编译函数名为DX11外壳着色器。有了这个选项,就会自动打开目标5.0

#pragma domain name - 编译函数名为DX11域着色器。有了这个选项,就会自动打开目标5.0

//其他的编辑指令

#pragma target name - 哪个着色器目标要编译。有关详细信息,请参见着色器编译目标页面。
#pragma only_renderers space separated names 只对给定的渲染器编译着色器。默认的着色器是为所有渲染器编译的。请参阅下面的渲染器以获得详细信息。
#pragma exclude_renderers space separated names - 不要为给定的渲染器编译着色器。默认的着色器是为所有渲染器编译的。请参阅下面的渲染器以获得详细信息。
#pragma multi_compile … - 用于处理多个着色器变体。
#pragma enable_d3d11_debug_symbols - 为DirectX 11编译的着色器生成调试信息,这将允许您通过Visual Studio 2012(或更高)的图形调试器调试着色器。
#pragma hardware_tier_variants renderer name - 为每个可运行选定的渲染器的硬件层生成多个着色器硬件变体。请参阅下面的渲染器以获得详细信息。


猜你喜欢

转载自blog.csdn.net/qq_34444468/article/details/80595857