除了 CPU(中央处理器)以外,SoC(System On a Chip:片上系统)另一个重要的组成部分是图像处理单元(Graphical Processing Unit),就是俗称的 GPU。大家或许都知道玩 3D 游戏少不了它,但具体发挥什么作用也许说不清楚,这回我们就来揭开 GPU 的神秘面纱。
GPU 专门用于快速完成一些特定类型的数学运算,特别是对于浮点、矢量和矩阵的计算,能将 3D 模型的信息转换为 2D 表示,同时添加不同的纹理和阴影效果,所以 GPU 在硬件里也是比较特殊的存在。
3D 模型是由许许多多小三角形组成的,通过 X、Y、Z 坐标定义每个三角形的顶点。实际处理中,小三角形的顶点会相互重合,如果一个复杂的模型由 500 个小三角形组成,最后需要定义的顶点数并没有 1500 个那么多。而要将一个抽象的 3D 模型展现出来,三种要素不可缺少:位移、旋转(三轴)和缩放,所有这些操作统称为转换(transformation)。为了不陷入复杂繁琐的数学运算,处理转换(transformation)最佳的方式就是运用 4x4 的矩阵。
从 3D 建模到最终显示在屏幕上,GPU 渲染场景使用的是流水线操作。早些时候流水线操作是固定不能作任何改动的,整个操作由读取三角形的顶点数据开始,接着 GPU 处理完后进入帧缓冲区(frame buffer),准备发送给显示器。GPU 也能对场景进行某些特定效果的处理,不过这些都是由工程师设计固定好的,能提供的选项很少。
除了 CPU(中央处理器)以外,SoC(System On a Chip:片上系统)另一个重要的组成部分是图像处理单元(Graphical Processing Unit),就是俗称的 GPU。大家或许都知道玩 3D 游戏少不了它,但具体发挥什么作用也许说不清楚,这回我们就来揭开 GPU 的神秘面纱。
GPU 专门用于快速完成一些特定类型的数学运算,特别是对于浮点、矢量和矩阵的计算,能将 3D 模型的信息转换为 2D 表示,同时添加不同的纹理和阴影效果,所以 GPU 在硬件里也是比较特殊的存在。
3D 模型是由许许多多小三角形组成的,通过 X、Y、Z 坐标定义每个三角形的顶点。实际处理中,小三角形的顶点会相互重合,如果一个复杂的模型由 500 个小三角形组成,最后需要定义的顶点数并没有 1500 个那么多。而要将一个抽象的 3D 模型展现出来,三种要素不可缺少:位移、旋转(三轴)和缩放,所有这些操作统称为转换(transformation)。为了不陷入复杂繁琐的数学运算,处理转换(transformation)最佳的方式就是运用 4x4 的矩阵。
从 3D 建模到最终显示在屏幕上,GPU 渲染场景使用的是流水线操作。早些时候流水线操作是固定不能作任何改动的,整个操作由读取三角形的顶点数据开始,接着 GPU 处理完后进入帧缓冲区(frame buffer),准备发送给显示器。GPU 也能对场景进行某些特定效果的处理,不过这些都是由工程师设计固定好的,能提供的选项很少。