标签:
Cg程序片段写CGPROGRAM和ENDCG之间
开始时的片段可以作为#pragma语句编译指令
Pass { // ... the usual pass state setup ... CGPROGRAM // compilation directives for this snippet, e.g.: #pragma vertex vert #pragma fragment frag // the Cg/HLSL code itself ENDCG // ... the rest of pass setup ... }http://i.cnblogs.com/EditPosts.aspx?opt=1
#pragma vertex name ---------------- 编译以name为名字的函数的顶点着色器
#pragma fragment name ------------ 编译以name为名字的函数的片段着色器
#pragma geometry name ------------ 编译DX10几何着色器着色器
#pragma hull name ----------------- 编译DX11船体材质
#pragma domain name ------------- 编译DX11域材质
其他编译指令
#pragma target name -------------- 编译目标着色器
#pragma only_renderers space separated names ------------- 编译给出的着色器 默认情况下着色器编译所有渲染器
#pragma exclude_renderers space separated names ----------- 给出的着色器不编译 默认情况下着色器编译所有渲染器
#pragma multi_compile names -------------------------------- 用于多个材质
每个片段都必须包含至少一个顶点程序和一个片段程序。因此# pragma顶点和# pragma片段指令是必需的。
在默认情况下,unity将着色器编译为大约相等于2.0材质模型#pragma target 2.0 (default) ----着色模型2.0 Direct3D 9 -------有限的算术和材质说明 , 没有顶点纹理采样 , 在片段着色器没有衍生品
#pragma target 3.0 --------------编译着色模型3.0
#pragma target 4.0 -------------- 编译DX10着色模型4.0 这个目标目前仅支持DirectX 11和 XboxOne / PS4平台
#pragma target 5.0 -------------- 编译DX10着色模型5.0 这个目标目前仅支持DirectX 11和 XboxOne / PS4平台
所有OpenGL-like平台(包括手机)被视为“着色模型3.0”的能力。WP8 / WinRT平台(DX11特性级别9. x)被视为只有着色模型2.0的能力。
Unity 支持多种渲染api(例如Direct3D 9和OpenGL),默认情况下所有着色器程序编译成所有支持的渲染器。 你可以指出需要编译的着色器 通过 #pragma only_renderers or #pragma exclude_renderers 指令
这主要是有用的在这种情况下,你是显式地使用一些材质语言特性在一些平台上,你知道不可能的在一些平台上
例如,这条线只会编译材质为d3d 9模式:
Unity cg vertex and fragment shaders(一)
标签:
原文地址:http://www.cnblogs.com/OrangeZhang/p/5007772.html