【Unity】Shader

Mesh Renderer

The Mesh Renderer takes the geometry from the Mesh Filter and renders it at the position defined by the object’s Transform component.

网格渲染器从网格过滤器中获取几何图形,然后把它们渲染到这些物体transform组件中定义的位置上去。
(Mesh Filter 获取 geometry, transform 获取 position, 然后渲染)
通过Mesh Filter获取需要渲染的geometry,通过物体的Transform组件获取position

传入vertex shader中的数据从哪里来?

在Unity中由使用该材质的MeshRenderer组件提供。
在每帧调用DrawCall的时候,Mesh Render组件会把它负责渲染的模型数据发送给Unity Shader。

顶点着色器是逐顶点调用的,而片元着色器是逐片元调用的。片元着色器的输入实际上是把顶点着色器中的输出进行差值后得到的结果。

ShaderLab与Unity Shader

Unity Shader为控制渲染过程提供了一层抽象。如果没有使用Unity Shader,开发者需要与很多文件和设置打交道,才能呈现出想要的效果。
而在Unity Shader的帮助下,开发者只需要使用ShaderLab来编写Unity Shader文件就可以完成这些工作。ShaderLab是Unity提供的编写Unity Shader的一种说明性语言。

每个pass定义了一次完整的渲染流程,但是如果pass的数目过多,往往会造成渲染性能的下降。

顶点变换

1.将顶点坐标从模型空间变换到世界空间中(模型变换 model transform)

观察空间是三维空间,而屏幕空间是一个二维空间。从观察空间到屏幕空间的转换需要经过投影(projection)
在观察空间中,摄像机的前向是z轴的负方向。

2.将顶点坐标从世界空间变换到观察空间中(观察变换 view transform)

空间变换:
unity 空间变换
未完,精彩待续。(先测试一下写博客)

猜你喜欢

转载自blog.csdn.net/u013246113/article/details/94743440