什么是HLSL?
高阶着色器语言(High Level Shader Language,简称HLSL),就是用来编写shader的一种语言
类似的语言还有:
-
CG
它是由NVIDIA公司所开发的,基于C语言同时被OpenGL和Direct3D所支持的开发语言,其语法和HLSL类似。在《GPU编程与CG语言之阳春白雪》中虽然曾认为CG会越来越受欢迎,但遗憾的是,NVIDIA还是抛弃了CG,目前CG的最终版本是3.1。虽然在一些简单的shader编写上还是可以使用,但是在新的硬件环境下还是可能不支持,且对一些新功能的支持较差。 -
GLSL
GLSL是基于OpenGL的接口,其语法体系自成一家。但是它不支持DirectX,就不得不放弃仅支持DirectX的Xbox等平台。 -
HLSL
HLSL是由微软开发的,在Windows平台上一家独大,多用于游戏领域。语法类似CG语言,在Unity中CG和HLSL等价。
常用函数分类
基本数学运算
函数名 | 用法 |
---|---|
max(a,b) | 返回较大的 |
min(a,b) | 返回较小的 |
mul(a,b) | 两向量相乘,常用于矩阵运算 |
abs(a) | 返回a的绝对值 |
round(x) | 返回与x最近的整数 |
sqrt(x) | 返回x的平方根 |
rsqrt(x) | 返回x的平方根的倒数 |
degrees(x) | 将弧度转化为角度 |
redians(x) | 将角度转化为弧度 |
noise(x) | 噪声函数,在每个像素点上输出0/1可形成噪波图 |
可以直接可视化数学函数工具推荐:https://graphtoy.com/
幂指对函数
函数名 | 用法 |
---|---|
pow(x,y) | x的y次幂(x、y都可以是自变量或具体数)→ x y x^{y} xy |
exp(x) | 返回以e为底的指数函数 → e x e^{x} ex |
exp2(value x) | 返回以2为底,x为指数的幂 → 2 x 2^{x} |