CG 跟 HLSL几乎是一摸一样的。

(HLSL官方参考,包含语法格式,函数库,关键字,在这个地方:

http://msdn.microsoft.com/en-us/library/bb509638(v=VS.85).aspx, 如果链接失效,用“
Reference for HLSL”搜索。)

Shader本身是一个单纯的单元,就是对输入(顶点或像素或物体)进行能做的算术运算,然后把结果送出的一个固件。

1、内置元类型

float: 32 bit浮点类型
half:  16 bit浮点
int:   32 bit 整形
fixd:  12 bit定点
bool:  布尔值
sampler*: 纹理对象的句柄
string:  不是每个都支持

上述类型很多都被cg提供内置的向量数据类型(build-in vector data types),如

float1、float4,
bool2, bool3,
float1x1
float2x3

类型转换跟C是一样的,用强制转化。
类型定义的时候可以在常量后跟后缀,如2.0f,1.0h,3x。目前值有f,h,x(fixed)三种。

2、支持类型

数组
float a[10];
float4 b[10];
int length = a.length; //获取长度,上面两个返回都是10

float b[2][3] = { { }, { } };
int length1 = b.length; // length1 = 2;
int length2 = b[0].length; // length = 3;

结构
以struct开始,紧跟名字,内容用{};包住。不要忘记最后的分号。
结构中可以带function,是C++中的用法。
结构不支持继承。

3、特定关键字

in , out , inout,
uniform (被修饰的变量从外部传入), const ,

4、输入语义关键字

Vertex Shader的输入:

POSITION, NORMAL, BINORMAL, BLENDINDICES, BLENDWEIGHT, TANGENT, PSIZE, TEXCOORD0 ~ TEXCOORD7

如:in float4 modelPos: POSITION

Vertex Shader的输出, 也就是Pixel Shader的输入

POSITION, PSIZE, FOG,COLOR0 ~ COLOR1, TEXCOORD1 ~ TEXCOORD7

Pixel Shader的输出:

COLOR

5、入口函数

通过观察程序的输入输出语义绑定,就可以区分入口函数对应到顶点程序还是片段程序。

6、内置函数库

reflect  求发射向量
refract  求折射向量
mul      矩阵相乘
normalize  归一化

五大类: 数学函数、几何函数、纹理映射函数、调试函数

[Unity] Shader - CG语言 和 HLSL语言的更多相关文章

  1. [Unity] Shader - CG语言 流程控制语句

    CG语言中: 不支持 switch 语句(可以写,但不能很好的执行.) 循环语句中, 循环次数不能大于 1024 ,否则会报错. If...ELSE 条件判断语句: if (true) { } els ...

  2. Unity shader(CG) 写一个 散色、折射、反射、菲涅尔、gamma、简单后期屏幕特效

    http://www.lai18.com/content/506918.html 1.自生要求是很重要的,当然不是什么强迫工作之类的,而是自己有限的能力上不断的扩展兴趣上的内容. 2.用生活的眼光去发 ...

  3. Unity Shader入门精要学习笔记 - 第3章 Unity Shader 基础

    来源作者:candycat   http://blog.csdn.net/candycat1992/article/ 概述 总体来说,在Unity中我们需要配合使用材质和Unity Shader才能达 ...

  4. Unity Shader (一)ShaderLab 语法

    一.什么是Shader Shader(着色器):是可以在GPU上运行的一段程序,通过Shader可以进行一些渲染相关的设置. 二.什么是ShaderLab 目前面向GPU的编程有三种高级图像语言:HL ...

  5. 第二章 Unity Shader基础

    [TOC] 1. Unity Shader 的基础: ShaderLab 学习和编写着色器的过程一直是一个学习曲线很陡峭的过程,通常情况下为了自定义渲染效果往往要和很多文件和设置打交道,这些设置很容易 ...

  6. unity中使用的着色器语言

    在unity中,着色器编程使用了一列列的HLSL语言变种(也叫作Cg,但是大部分实际上两者都是一样的). 目前,为了在不同平台下保持最好的跨平台性, 取样贴图时,最好使用DX9风格 的HLSL. 着色 ...

  7. Unity Shader入门精要读书笔记(一)序章

    本系列的博文是笔者读<Unity Shader入门精要>的读书笔记,这本书的章节框架是: 第一章:着手准备. 第二章:GPU流水线. 第三章:Shader基本语法. 第四章:Shader数 ...

  8. Unity Shader基础

    Unity Shader基础 先上代码,代码一般是这样的. void Initialization(){ //先从硬盘加载代码再加载到GPU中 string vertexShaderCode = Lo ...

  9. (译)Cg Programming/Unity(Cg编程/Unity)

    最近在学习Unity3d中的shader编程,能找到的中文资料比较少,于是,尝试翻译一下wiki Books上的资料,以方便其他跟我一样的入门学习者.由于是第一次翻译技术资料,经验不足,难免出错,请路 ...

随机推荐

  1. nodejs缓冲模块buffer相关资料

    buffer模块的详细使用教程 浅析nodejs的buffer类 深入浅出NodeJS--Buffer Node Buffer/Stream 内存策略分析

  2. java弱引用之WeakHashMap相关资料

    本人博客中有一篇文章对java中的引用有详细的介绍[http://www.cnblogs.com/javaee6/p/4763190.html],java中WeakHashMap这个类就是java弱引 ...

  3. C# random helper class

      项目中经常需要模拟些假数据,来做测试.这个随机生成数据的helper类就应用而生: using System; using System.Text; using System.Windows.Me ...

  4. 开放api接口签名验证

    不要急,源代码分享在最底部,先问大家一个问题,你在写开放的API接口时是如何保证数据的安全性的?先来看看有哪些安全性问题在开放的api接口中,我们通过http Post或者Get方式请求服务器的时候, ...

  5. 配置安装ecplise跑项目

    jdk配置:http://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html系统变量→新建 JAVA_HOME 变量 .变量值填写jdk的安 ...

  6. NOIP2009最优贸易[spfa变形|tarjan 缩点 DP]

    题目描述 C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市.任意两个 城市之间最多只有一条道路直接相连.这 m 条道路中有一部分为单向通行的道路,一部分 为双向通行的道路 ...

  7. BroadcastReceiver详解

    详解 2014-08-20 19:42 13492人阅读 评论(8) 收藏 举报 分类: 5.andriod开发(148) 版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+] ...

  8. fMRI: spatial smoothing

    Source: Brain voyager support Theoretical Background Spatial smoothing means that data points are av ...

  9. B树、B-树、B+树、B*树

    B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right) 2.所有结点存储一个关键字 3.非叶子节点的左指针指向小于其关键字的字数,右指针指向大于其关键字的字数: 如: B树的 ...

  10. c语言函数

    听着函数这两个字多多少少都会觉得有点复杂吧.因为一想到函数大多数人都会想到f(x),但其实c语言里面的函数不是那样的,老师教了一个很好的理解方法函数就是个机器人,而这个机器人是你自己做出来的.所有不用 ...