CSDN
一.CG/HLSL/GLSL
1.CG
Unity shader的入门时,不管是《入门精要》还是庄老师的课,都是从CG语言开始学习的。它是由NVIDIA公司所开发的,基于C语言同时被OpenGL和Direct3D所支持的开发语言,其语法和HLSL类似。在《GPU编程与CG语言之阳春白雪》中虽然曾认为CG会越来越受欢迎,但遗憾的是,NVIDIA还是抛弃了CG,目前CG的最终版本是3.1。虽然在一些简单的shader编写上还是可以使用,但是在新的硬件环境下还是可能不支持,且对一些新功能的支持较差。
2.GLSL
GLSL是基于OpenGL的接口,其语法体系自成一家。闫老师的Games课程,以及学校的图形学教学中,一般还是使用GLSL。但是它不支持DirectX,就不得不放弃仅支持DirectX的Xbox等平台。
3.HLSL
HLSL是由微软开发的,在Windows平台上一家独大,多用于游戏领域。语法类似CG语言,在Unity中CG和HLSL等价。
二.HLSL常用函数
1.基本数学运算
graphtoy
2.幂指对函数
3.三角函数与双曲函数
4.数据范围类
5.类型判断类
6.向量与矩阵类
7.光线运算类
8.2D纹理查找
10.3D纹理查找
11.立体纹理查找
#关于ddx和ddy
函数ddx和ddy用于求取相邻像素间某属性差值;
函数ddx和ddy输入参数通常是纹理坐标;
函数ddx和ddy返回相邻像素键的属性差值;
这里是测试的在片元着色器中利用底下的代码,可以表现世界空间法线;
float3 col=normalize(cross(ddy(i.worldPos),ddx(i.worldPos))).xyz;