什么是渲染流水线渲染流水线的工作任务在于由一个三维场景出发、生成(或者说渲染)一张二维图像。在计算机中,需要通过一系列顶点数据、纹理等信息,把这些信息转换成图像。简单来说,将3D场景转换为2D图像的一系列流程就是渲染流水线。
渲染流水线的流程在《Real-Time Rendering, Third Edition》书中将渲染流程分为三个阶段:应用阶段 (Application Stage)、 几何阶段 (Geometry Stage)、 光栅化阶段 (Rasterizer Stage)。
应用阶段从名字可以看出,这个阶段由开发者主导,通常由CPU实现,换句话说我们具有这个阶段的绝对控制权。
在本阶段,首先,我们需要准备好场景数据,例如相机位置、场景中模型、光源、视锥体等。
视锥体视锥体 (frustum) 是指场景中摄像机的可见锥体范围。它由上、下、左、右、近、远共6个面组成。在视锥体内的景物可见,反之则不可见。为提高性能,只对其中与视锥体有交集的对象进行绘制。
其次,为了提高性能,会进行一个粗粒度剔除的工作,剔除出去的部分不会被移交给下一阶段处理。
最后,我们需要设置好每个模型 ...
ECS(Entity Component System)ECS 是一种软件架构模式,由三个元素组成:实体 (Entity)、组件 (Component) 和系统 (System)。游戏程序分为这三个主要元素,并且通过定义每个系统的责任和关系来管理游戏。
主要元素实体(Entity)
代表游戏世界中的事物。
实体本身没有特定功能,通过组件来定义其功能。
可以将实体看作一个什么都没有的 GameObject。在 Unity 中,GameObject 含有 Transform 组件,这里可以将其看作没有 Transform 的 GameObject。
组件(Component)
附加到事物的数据,包含状态信息。
重点是数据,极致的数据,没有任何方法和逻辑,只包含数据。
例如,在移动游戏角色时,位置、速度等每个状态都将成为一个组件部分,并与称为“角色”的实体相关联。
修改角色状态时,只需要修改其单独的数据组件,不会触碰角色的逻辑。
系统(System)
处理数据的系统,其中只有方法,没有任何数据。
例如,在移动角色时,速度、位置等数据都存放在组件中,通过遍历实体的组件来修改数据。
世界( ...