在编写顶点着色器或者片段着色器时,需要用到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

最新文章

  1. IOS和Android图标尺寸
  2. discuz被别人评论一段代码,然后页面就变样了
  3. nios II--实验2——led软件部分
  4. 20145209&20145309信息安全系统设计基础实验报告 (4)
  5. Magicodes.WeiChat——媒体资源选择组件之media-choice(开源)
  6. Installing Oracle and ArcSDE on separate servers
  7. 自动回复消息-微信公众平台开发4(asp.net)
  8. Arduino中的数据类型范围
  9. MyBatis的动态SQL操作--插入
  10. 有return的情况下try catch finally的执行顺序(最有说服力的总结)
  11. One手动玩转
  12. oracle数据库事务相关【weber出品必属精品】
  13. ubuntu 配置JDK环境变量
  14. js和jQuery写简单下拉菜单
  15. 谨慎修改Python的类属性
  16. ArcGIS中实现指定面积蜂窝(正六边形)方法
  17. 【一天一道LeetCode】#89. Gray Code
  18. vxlan和vlan数据报文
  19. less中使用calc
  20. 51Nod 1287 加农炮 (线段树)

热门文章

  1. 10分钟 Castle.Windsor 适配 Asp.Net Core 3.0
  2. Improving RGB-D SLAM in dynamic environments: A motion removal approach
  3. MySQL--->数据库的简介和安装
  4. Iconfont的代码使用
  5. JavaScript 实用方法
  6. Linux内核之 内核同步
  7. Enumerable 下又有新的扩展方法啦,快来一起一睹为快吧
  8. 虚拟机解释器与bytecode对接
  9. PYTHON-错误-函数有返回值未接收导致替换不成功
  10. LeetCode 到底怎么刷?GitHub 上多位大厂程序员亲测的高效刷题方式