Shader HLSL片段说明
在编写顶点着色器或者片段着色器时,需要用到CG或者HLSL语言,这里翻译unity官网的信息。
编译指令
#pragma vertex name - 编译函数名成vertex shader
#pragma fragment name - 编译函数名成fragment shader
#pragma geometry name - 编译函数名为DX10 的几何 shader。使用这个将自动打开 #pragma target 4.0。
#pragma hull name -编译函数名为DX11的外壳着色器,使用这个选项将自动打开 #pragma target 5.0。
#pragma domain name-编译函数名为DX11的域着色器,使用这个选项将自动打开#pragma target 5.0。
其它编译指令:
#pragma target name - 将shader编译成某个具体平台的文件。
#pragma only_renderers space separated names - 编译的shader只针对给定的渲染器起效果。默认情况下shader对所有渲染器均有效果。
#pragma exclude_renderers space separated names -编译的shader对给定的渲染器无效。
#pragma multi_compile … - 用于处理多个着色器变量。
#pragma enable_d3d11_debug_symbols - 为编译成为DX11的shader生成调试信息,这个将允许你通过vs2012或更高的图形调试器调试shader。
#pragma hardware_tier_variants renderer name - 将每个shader 都针对多个硬件平台做编译,并且生成对应的shader文件。每个硬件层都可以运行选中的渲染器。
每一个代码片段必须包含至少一个 vertex program 和一个 fragment program。因此 #pragma vertex 和#pragma fragment 指令是必须的。
从unity 5.0开始,以下指令已经没有任何用处了: #pragma glsl
, #pragma glsl_no_auto_normalization
,#pragma profileoption
, #pragma fragmentoption
渲染平台
unity支持好几个渲染的API(比如Direct3D 11 和OpenGL),默认情况下,所有的shader程序将被编译为支持所有的渲染器。你可以通过指令 #pragma only_renderers 和 #pragma exclude_renderers 显示指定渲染器。当你使用shader语言中的某些只针对某个平台有效的特性时,这样就比较有用了。支持的渲染器名字如下:
- d3d11 - Direct3D 11/12
- glcore - OpenGL 3.x/4.x
- gles - OpenGL ES 2.0
- gles3 - OpenGL ES 3.x
- metal - iOS/Mac Metal
- vulkan - Vulkan
- d3d11_9x - Direct3D 11 9.x feature level, as commonly used on WSA platforms
- xboxone - Xbox One
- ps4 - PlayStation 4
- psp2 - PlayStation Vita
- n3ds - Nintendo 3DS
- wiiu - Nintendo Wii U
最新文章
- IOS和Android图标尺寸
- discuz被别人评论一段代码,然后页面就变样了
- nios II--实验2——led软件部分
- 20145209&;20145309信息安全系统设计基础实验报告 (4)
- Magicodes.WeiChat——媒体资源选择组件之media-choice(开源)
- Installing Oracle and ArcSDE on separate servers
- 自动回复消息-微信公众平台开发4(asp.net)
- Arduino中的数据类型范围
- MyBatis的动态SQL操作--插入
- 有return的情况下try catch finally的执行顺序(最有说服力的总结)
- One手动玩转
- oracle数据库事务相关【weber出品必属精品】
- ubuntu 配置JDK环境变量
- js和jQuery写简单下拉菜单
- 谨慎修改Python的类属性
- ArcGIS中实现指定面积蜂窝(正六边形)方法
- 【一天一道LeetCode】#89. Gray Code
- vxlan和vlan数据报文
- less中使用calc
- 51Nod 1287 加农炮 (线段树)
热门文章
- 10分钟 Castle.Windsor 适配 Asp.Net Core 3.0
- Improving RGB-D SLAM in dynamic environments: A motion removal approach
- MySQL--->;数据库的简介和安装
- Iconfont的代码使用
- JavaScript 实用方法
- Linux内核之 内核同步
- Enumerable 下又有新的扩展方法啦,快来一起一睹为快吧
- 虚拟机解释器与bytecode对接
- PYTHON-错误-函数有返回值未接收导致替换不成功
- LeetCode 到底怎么刷?GitHub 上多位大厂程序员亲测的高效刷题方式