MeshFilter
存储一个Mesh(网格,模型的网格,模型的三角面顶点信息)
MeshRenderer
用于渲染一个物体的外观,数据来源于MeshFilter
Material
材质包含两部分,贴图和Shader
OpenGL DirectX
直接与显卡交互图形渲染库,可以理解为应用程序与显卡之间的桥梁,为应用程序提供一些渲染接口,用于渲染。
Shader
Shader可以理解为是一种渲染命令,由opengl或DX进行解析,用于控制图形的渲染。
GLSL/HLSL/CG
shader编程语言,GLSL面向OpenGL,HLSL面向DirectX,CG是Nvidia公司出的,跨平台的shader编程语言。
ShaderLab
我们在Unitiy中写Shader用的语言是ShaderLab,可以理解为Unity为了方便使用者写Shader而创造的一种新的Shader语言,最后其实都会在底层被翻译成GLSL或HLSL或CG。
Unity中的Shader分类
Shader的中文名叫做着色器
- 表面着色器,Surface Shader
- 顶点/片元着色器,Vertex/Fragment Shader
- 固定功能着色器,Fixed function Shader (在现代硬件上基本已被弃用)
表面着色器可以理解为是对顶点/片元着色器的一种封装,它帮我们处理了很多渲染上比较麻烦的事情。而顶点/片元着色器就相对更灵活一些,也就是说很多东西要自己处理,相对来说要写的代码更多一些。进一步讲,使用顶点/片元着色器能实现的效果,使用表面着色器并不一定能实现,或者说,并不一定那么方便地实现。
Unity Shader 结构
1 | Shader "iMoeGirl/MyShader" { // Shader 名字 |
Unity Shader 属性类型
1 | Shader "iMoeGirl/MyShader" { // Shader 名字 |