Shader中着色器的编译目标级别

news/2025/3/14 13:22:46/

1. # pragma target  x.0

2. # pragma require  xxx

支持的“#pragma target”名称

以下是支持的着色器模型列表,其中包含大致增加的功能集(在某些情况下对于平台/GPU 的要求更高):

#pragma target 2.0

适用于 Unity 支持的所有平台。DX9 着色器模型 2.0。 有限数量的算术和纹理指令;8 个插值器;没有顶点纹理采样;片元着色器中没有衍生指令;没有显式的 LOD 纹理采样。

#pragma target 2.5(默认值)
  • 几乎与 3.0 目标相同(见下文),例外之处是仍然只有 8 个插值器,并且没有显式的 LOD 纹理采样。
  • 在 Windows Phone 上编译为 DX11 功能级别 9.3。
#pragma target 3.0
  • DX9 着色器模型 3.0:衍生指令,纹理 LOD 采样,10 个插值器,允许更多的数学/纹理指令。
  • 在 DX11 功能级别 9.x GPU(例如大多数 Windows Phone 设备)上不支持。
  • 某些 OpenGL ES 2.0 设备可能无法完全支持,具体取决于存在的驱动程序扩展和使用的功能。
#pragma target 3.5(或 es3.0)
  • OpenGL ES 3.0 功能(D3D 平台上的 DX10 SM4.0,只是没有几何着色器)。
  • 在 DX11 9.x (WinPhone) 和 OpenGL ES 2.0 上不支持。
  • 在 DX11+、OpenGL 3.2+、OpenGL ES 3+、Metal、Vulkan 和 PS4/XB1 游戏主机上支持。
  • 着色器、纹理数组等中的本机整数运算。
#pragma target 4.0
  • DX11 着色器模型 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 游戏主机上支持。
  • 具有几何着色器以及 es3.0 目标所具有的一切功能。
#pragma target 4.5(或 es3.1)
  • OpenGL ES 3.1 功能(D3D 平台上的 DX11 SM5.0,只是没有曲面细分着色器)。
  • 在早于 SM5.0 的 DX11、早于 4.3 的 OpenGL(即 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(或 gl4.1)
  • OpenGL 4.1 功能(D3D 平台上的 DX11 SM5.0,只是没有计算着色器)。这基本上是 Mac 支持的最高 OpenGL 级别。
  • 在早于 SM5.0 的 DX11、早于 4.1 的 OpenGL、OpenGL ES 2.0/3.0/3.1 和 Metal 上不支持。
  • 在 DX11+ SM5.0、OpenGL 4.1+、OpenGL ES 3.1+AEP、Vulkan、Metal(不含几何体)和 PS4/XB1 游戏主机上支持。
#pragma target 5.0
  • DX11 着色器模型 5.0。
  • 在早于 SM5.0 的 DX11、早于 4.3 的 OpenGL(即 Mac)、OpenGL ES 2.0/3.0/3.1 和 Metal 上不支持。
  • 在 DX11+ SM5.0、OpenGL 4.3+、OpenGL ES 3.1+AEP、Vulkan、Metal(不含几何体)和 PS4/XB1 游戏主机上支持。

请注意,所有 OpenGL 类平台(包括移动平台)都被视为“支持着色器模型 3.0”。WP8/WinRT 平台(DX11 功能级别 9.x)被视为仅支持着色器模型 2.5。

Shader "Unlit/ShaderTarget"
{CGINCLUDE#include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;};struct v2f{float4 vertex : SV_POSITION;};v2f vert (appdata v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex);return o;}fixed4 frag (v2f i) : SV_Target{#if(SHADER_TARGET<30)   //如果着色器的目标编译级别小于3.0时return fixed4(1,0,0,1);#elsereturn fixed4(0,1,0,1);#endif}ENDCG//高配SubShader{Tags { "RenderType"="Opaque" }LOD 400Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#pragma target 3.0   //表示支持的硬件特性越多ENDCG}}//低配SubShader{Tags { "RenderType"="Opaque" }LOD 200Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#pragma target 2.0ENDCG}}
}


http://www.ppmy.cn/news/1579049.html

相关文章

IvorySQL 4.4 发布

IvorySQL 4.4 已于 2025 年 3 月 10 日正式发布。新版本全面支持 PostgreSQL 17.4&#xff0c;新增多项新功能&#xff0c;并修复了已知问题。 增强功能 PostgreSQL 17.3 增强功能 加强 PQescapeString 及相关函数对无效编码输入字符串的防护。恢复在连接请求中出现的数据库…

蓝桥杯备考:图论初解

1&#xff1a;图的定义 我们学了线性表和树的结构&#xff0c;那什么是图呢&#xff1f; 线性表是一个串一个是一对一的结构 树是一对多的&#xff0c;每个结点可以有多个孩子&#xff0c;但只能有一个父亲 而我们今天学的图&#xff01;就是多对多的结构了 V表示的是图的顶点集…

机器学习中常用的避免过拟合的方法有哪些

在机器学习和深度学习中&#xff0c;避免过拟合是提高模型泛化能力的关键。以下是一些常用的避免过拟合的方法&#xff1a; 1. ​增加数据量 ​原理&#xff1a;更多的数据可以帮助模型学习到数据的本质规律&#xff0c;而不是噪声。​方法&#xff1a; 收集更多的真实数据。使…

ClickHouse 通过 ​*ARRAY JOIN* 结合 ​Map 类型的内置函数取数值

在 ClickHouse 中&#xff0c;可以通过 ​ARRAY JOIN 结合 ​Map 类型的内置函数&#xff0c;将 Map 字段的键值对展开为多行数据。以下是具体操作方法和示例&#xff1a; 一、使用 mapKeys 和 mapValues 展开 Map 1. 核心语法 SELECT id, key, value FROM your_table ARRAY …

【21】单片机编程核心技巧:if语句逻辑与真假判断

【21】单片机编程核心技巧&#xff1a;if语句逻辑与真假判断 七律 条件分野 if语句判真假&#xff0c;括号条件定乾坤。 非零为真零为假&#xff0c;大括号内藏玄门。 省略虽简风险在&#xff0c;代码规范护本根。 单片逻辑由心控&#xff0c;条件分支自成文。 注释&#xf…

【Node.js入门笔记5---fs文件信息与元数据】

Node.js入门笔记5 Node.js---fs 文件信息与元数据一、文件信息与元数据1.fs.stat() / fs.statSync()&#xff1a;获取文件或目录的详细信息&#xff08;大小、类型、修改时间等&#xff09;。异步同步 2.fs.access()&#xff1a;检查文件是否存在或是否有访问权限。3.fs.symlin…

2024 年第四届高校大数据挑战赛-赛题 A:岩石的自动鉴定

问题1&#xff1a;沉积岩薄片识别模型设计问题分析核心任务&#xff1a;基于“南京大学沉积岩教学薄片照片数据集”&#xff0c;构建多类别分类模型&#xff0c;区分火山碎屑岩、砂岩、泥页岩等9类沉积岩。特征提取需求&#xff1a; 颜色特征&#xff1a;矿物成分差异导致偏光下…

【一个月备战蓝桥算法】递归与递推

字典序 在刷题和计算机科学领域&#xff0c;字典序&#xff08;Lexicographical order&#xff09;也称为词典序、字典顺序、字母序&#xff0c;是一种对序列元素进行排序的方式&#xff0c;它模仿了字典中单词的排序规则。下面从不同的数据类型来详细解释字典序&#xff1a; …