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

Shader HLSL片段说明的更多相关文章

  1. HLSL Shader编程基础总结

    转自:https://blog.csdn.net/Blues1021/article/details/47093487 基本前提概念 Shader是一种映射到GPU硬件汇编语言上的高级语言,Shade ...

  2. Unity3D shader简介

    Unity3D shader简介 可以肯定的说Unity3D使得很多开发者开发游戏更容易.毫无疑问,shader(着色器)编码,仍有很长的路要走.shader是一个专门运行在GPU的程序,经常被神秘包 ...

  3. Qt QML 2D shader

    --------------------------------------------------- Qt quick 2d shader effect ---------------------- ...

  4. Unity3d之Shader开发介绍

    Shader是为渲染管线中的特定处理阶段提供算法的一段代码.shader是伴随着可编程渲染管线出现的,它的出现使得游戏开发者可以对渲染过程加以控制,拥有更大的创作空间,因此Shader的出现可以看作是 ...

  5. 【译】Unity3D Shader 新手教程(1/6)

    本文为翻译,附上原文链接. 转载请注明出处--polobymulberry-博客园. 刚开始接触Unity3D Shader编程时,你会发现有关shader的文档相当散,这也造成初学者对Unity3D ...

  6. A Simple OpenGL Shader Example

    A Simple OpenGL Shader Example eryar@163.com Abstract. OpenGL Shading Language, the high-level progr ...

  7. Unity3D for VR 学习(8): Unity Shader概述

    从西安到北京高铁上,一位VR老外团队的华人leader对VR技术做了画龙点睛: “3D游戏的核心部分在Render, 国内很多团队美术.程序中间缺失严重.所以3d游戏做不好. VR这块更是至关重要.” ...

  8. 【OpenGL】用OpenGL shader实现将YUV(YUV420,YV12)转RGB-(直接调用GPU实现,纯硬件方式,效率高)

    这段时间一直在搞视频格式的转换问题,终于最近将一个图片的YUV格式转RGB格式转换成功了.下面就来介绍一下: 由于我的工程是在vs2008中的,其中包含一些相关头文件和库,所以下面只是列出部分核心代码 ...

  9. Unity Shader着色器优化

    https://mp.weixin.qq.com/s?__biz=MzU5MjQ1NTEwOA==&mid=2247493518&idx=1&sn=c51b92e9300bcf ...

随机推荐

  1. 使用MPI进行分布式内存编程(2)

    MPI的英文全称为message passing interface,中文名为消息传递接口,他不是一种新的语言,而是一个可以被C,C++,Fortran程序调用的库. 预备知识 1.编译与执行 使用类 ...

  2. ECS7天实践进阶训练营Day2:基于阿里云ECS部署MediaWiki

    一.概述 MediaWiki是全球最著名的开源Wiki程序,运行于PHP+MySQL环境,MediaWiki从2002年被作为维基百科的系统软件,并由大量其他应用实例(例如萌娘百科),因此MediaW ...

  3. XCTF-WEB-高手进阶区-PHP2-笔记

    鬼才作者...特么卡了我那么长时间,这知识点我真不知道 o(╥﹏╥)o 拿Dirserach扫只能扫出来index.php和index.php/login 一度让我怀疑是有我不会的姿势去解这道题 最后 ...

  4. shell脚本的常用执行方式

    1.sh+脚本的相对路径 [jinghang@hadoop101 datas]$ sh helloworld.sh helloworld sh+脚本的绝对路径 [jinghang@hadoop101 ...

  5. spring时遇到的小问题

    最近在学习spring的时候遇到了两个小问题,在此总结一下 1.少导了所需要的包 运行测试程序,报出以下错误. 初步分析,得知是dataSource数据源没有创建成功,以为dataSource配置文件 ...

  6. C#LeetCode刷题-几何

    几何篇 # 题名 刷题 通过率 难度 587 安装栅栏   21.5% 困难 892 三维形体的表面积 C#LeetCode刷题之#892-三维形体的表面积(Surface Area of 3D Sh ...

  7. Vuex mapState的基本使用

    mapState把Store中的state映射到组件中的计算属性 Store文件 import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) ...

  8. 【高阶版】Python词典

    使用dict.fromkeys()创建词典的一个坑 创建词典有三种方法,第一是直接赋值,d = {1:2, 2:3}:第二个是,通过构造方法,d = dict([(1, 2), (2, 3)]),第三 ...

  9. 掌握提高 Web 应用的性能的方法 之 优化 PHP 和 Laravel

    Laravel 有很多东西.但是快不是其中之一.让我们学习一些优化技巧,以加快运行速度! 自从 Laravel 诞生以来,没有一个 PHP 开发人员不受她的影响.他们是喜欢 Laravel 提供的快速 ...

  10. 牛X!看完阿里P8架构师推荐的spring三剑客,成功涨薪5k

    一直以来,Spring都被Java程序员视为杀手级别的应用,是为简化Java EE应用程序的开发为目标而创建的.Spring可以做很多事情,它为企业级开发提供给了丰富的功能,但是这些功能的底层都依赖于 ...