近期打算好好学习shader,期望能做出大海波浪等绚丽的效果。
官方文档的翻译,算是我的附带产出,增强对shader的了解,也是为后人参考学习提供捷径。
---------------------------------------------------------------------------------------
在unity中所有的渲染都是通过shaders来完成的 。什么是shaders ,就是小段脚本,它让你弄清楚图形硬件是如何设置来进行渲染的。
下面有四篇:
一、材质和shader的关系
二、内建的标准shader
三、写你自己需要的shader
四、其他内建shader
---------------------------------------------------------
一、Materials and shaders
在unity中,材质和着色器有很密切的关系。
着色器包含的代码定义了有哪些属性和资源可以使用。材质则可以让你来设置这些属性和分配这些资源。
你可以为每个材质指定用哪个shader,操作很简单,在监事面板中,shader下拉框中指定就可以了。
内建shaders
有一组内建shader随着unity 编辑器已经安装好了。大约80多种shaders可以使用。主要有以下几种分类:
1、Normal:为那些不透明物体使用
2、Transparent:部分透明的物体,贴图的Alpha通道定义了透明度。
3、TransparentCutOut: 有完全透明和完全不透明区域的物体,比如篱笆。
4、Self-illuminate: 有光源发射部分的物体,比如灯笼
5、Reflective: 不透明物体反射环境高光
除了以上主要游戏物体的着色器外,还有一些特殊目的的分类:
FX: 灯光和水的效果
GUI: 图形用户接口显示
Nature: 树和地形
Particles:粒子系统效果
Render Fx: 天空盒着色器
TOON: 卡通风格渲染
他们之中有一些特殊的版本,专门为移动设备使用。
shaders的技术细节
unity有一个很大的着色器系统,它让你能够改变虚拟世界图形的外贸,它的工作原理如下:
着色器基本上定义了一个公式用来计算底纹在虚拟世界中如何显示。
每个shader都是一系列属性(通常有贴图)shaders通过材质来实现其功能,材质直接付给单独的游戏对象。每个材质,要指定一个shader,然后定义那些shader使用的属性(通常是贴图和颜色这些,属性都是可以变化的)