着色器编译目标等级

无论编写 表面着色器还是其他常规着色器程序时,HLSL资源可以别编译为不同的“着色器模型”。更高的着色器编译器目标允许使用更多现代GPU功能,但是可能造成在老的GPU或者平台上不能正常工作。

编译器目标通过指令 #pragma target 来指定,比如:

#pragma target 3.5

默认的编译器目标

默认情况下,unity将着色器编译为支持最低目标级别(2.5);在DirectX着色器2.0和3.0之间。其他一些编译指令使着色器自动被编译成更高的目标:

  • 使用几何着色器来设置编译器目标到4.0(#pragma geometry)
  • 使用镶嵌着色器来设置编译器目标到4.6((#pragma hull or #pragma domain)

支持的#pragma目标名字

下面是支持的着色器模型支持列表,附带了一个简略的能力描述:

#pragma target 2.0
  • 在unity所有支持的平台上都能够工作。DX9着色器 model2.0.
  • 有限的算法&贴图指令数量;8个插入器;没有顶点贴图取样;没有片段着色器衍生物;没有清晰细节贴图采样
#pragma target 2.5 (default)
  • 几乎和3.0一模一样,除却插入器还是只有8个,并且没有清晰细节贴图采样。
  • 在Windows Phone上编译成DX11特性级别9.3
#pragma target 3.0
  • DX9着色器 model3.0:派生指令,贴图细节采样,10插入器,更多的计算&贴图指令。
  • 不支持DX11特性在级别9.x 的GPU上。
  • 可能在一些OpenGL ES2.0设备上不会被完全支持,取决于驱动扩展和被使用的特性。
#pragma target 3.5 (or es3.0)
  • OpenGL ES3.0级别能力(DX10 SM4.0在D3D平台,只是没有几何着色器)。
  • 不支持 DX11 9.x(WinPhone),OpenGL ES 2.0。
  • 支持 DX11+, OpenGL 3.2+ ,OpenGL ES3+, Metal ,Vulkan, PS4/XB控制台。
  • 原生的整数操作,贴图数组等等。
#pragma target 4.0
  • DX11 shader model 4.0.
  • 不支持DX11 9.x (WinPhone), OpenGL ES 2.0/3.0/3.1, Metal。
  • 支持 DX11+, OpenGL 3.2+, OpenGL ES 3.1+AEP, Vulkan, PS4/XB1 控制台。
  • 拥有几何着色器,并且3.0有的它都有。
#pragma target 4.5 (or es3.1)
  • OpenGL ES 3.1级别能力 (DX11 SM5.0 on D3D platforms, 没有镶嵌着色器).
  • 不支持DX11 before SM5.0, OpenGL before 4.3 (i.e. Mac), OpenGL ES 2.0/3.0.
  • 支持DX11+ SM5.0, OpenGL 4.3+, OpenGL ES 3.1, Metal, Vulkan, PS4/XB1控制台。
  • 拥有计算着色器,随机读写贴图,原子学等,没有几何或者镶嵌着色器。
#pragma target 4.6 (or gl4.1)
  • OpenGL 4.1 级别能力(DX11 SM5.0 on D3D platforms,没有计算着色器).
  • 这基本上是Macs支持的最高的OpenGL级别了。
  • 不支持DX11 before SM5.0, OpenGL before 4.1, OpenGL ES 2.0/3.0/3.1, Metal.
  • 支持 DX11+ SM5.0, OpenGL 4.1+, OpenGL ES 3.1+AEP, PS4/XB1 等控制台。
#pragma target 5.0
  • DX11 shader model 5.0.
  • 不支持 DX11 before SM5.0, OpenGL before 4.3 (i.e. Mac), OpenGL ES 2.0/3.0/3.1, Metal.
  • 支持 DX11+ SM5.0, OpenGL 4.3+, OpenGL ES 3.1+AEP, Vulkan, PS4/XB1控制台。

注意所有的类似OpenGL的平台(包含移动平台)都被当做“shader model 3.0”来对待。WP8/WinRT平台(DX11特性 level 9.x)都被当做“shader model 2.5”来对待。

转自:https://www.cnblogs.com/leiGameDesigner/p/8459289.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值