[Unity] Shader - CG语言 和 HLSL语言

本文详细介绍了CG和HLSL这两种着色器语言的基本概念、内置数据类型、支持的数据结构及特定关键字等内容,并解释了它们在图形渲染中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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  归一化

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

 

转载于:https://www.cnblogs.com/yangyxd/p/5351213.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值