01-计算机原理|计算机图形渲染原理

[TOC]

前言

一、CPU与GPU

可视化应用程序都是由 CPU 和 GPU 协作执行的,但是CPU和GPU其设计的理念不相同,主要的工作目标也不一样

1. CPU 与 GPU 的架构

对于现代计算机系统,简单来说可以大概视作三层架构:硬件操作系统进程。 对于移动端来说, 进程就是app ,而 CPU 与 GPU 是硬件层面的重要组成部分 。

  1. CPU 与 GPU 提供了计算能力,通过操作系统被 app 调用

    • CPU(Central Processing Unit): 现代计算机的三大核心部分之一,是整个系统的运算和控制单元。CPU 内部的流水线结构使其拥有一定程度的并行计算能力。
    • GPU(Graphics Processing Unit):GPU是一种可进行绘图运算工作的专用微处理器
      • GPU 能够生成 2D/3D 的图形图像和视频,从而能够支持基于窗口的操作系统、图形用户界面、视频游戏、可视化图像应用和视频播放,是连接计算机和显示终端的纽带。
      • GPU 具有非常强的并行计算能力
  2. CPU 和 GPU 其设计目标就是不同的,它们分别针对了两种不同的应用场景

    • 设计理念不同
      • CPU 是运算核心与控制核心,需要有很强的运算通用性,兼容各种数据类型,同时也需要能处理大量不同的跳转、中断等指令,因此 CPU 的内部结构更为复杂
      • 而 GPU 则面对的是类型统一、更加单纯的运算,也不需要处理复杂的指令,但也肩负着更大的运算任务

2. GPU的历史(了解)

二、GPU图形渲染流水线

1. App图像渲染流程

图像渲染流程粗粒度地大概分为下面这些步骤: 上述图像渲染流水线中,除了第一部分 Application 阶段,后续主要都由 GPU 负责。 渲染流水线中各个部分的具体任务:

1.1 Application 应用处理阶段:得到图元

1.2 Geometry 几何处理阶段:处理图元

进入这个阶段之后,以及之后的阶段,就都主要由 GPU 负责了。此时 GPU 可以拿到上一个阶段传递下来的图元信息,GPU 会对这部分图元进行处理,之后输出新的图元。这一系列阶段包括:

1.3 Rasterization 光栅化阶段:图元转换为像素

1.4 Pixel 像素处理阶段:处理像素,得到位图

经过上述光栅化阶段,我们得到了图元所对应的像素,此时,我们需要给这些像素填充颜色和效果。所以最后这个阶段就是给像素填充正确的内容,最终显示在屏幕上。这些经过处理、蕴含大量信息的像素点集合,被称作位图(bitmap)。也就是说,Pixel 阶段最终输出的结果就是位图,过程具体包含:

2. GPU 的渲染流程:

GPU 图形渲染流水线的主要工作可以被划分为两个部分:

2.1 GPU 图形渲染流水线的具体实现可分为六个阶段,如下图所示:

* 顶点着色器(Vertex Shader) * 形状装配(Shape Assembly),又称 图元装配 * 几何着色器(Geometry Shader) * 光栅化(Rasterization) * 片段着色器(Fragment Shader) * 测试与混合(Tests and Blending)

上图就是一个三角形被渲染的过程中,GPU 所负责的渲染流水线。可以看到简单的三角形绘制就需要大量的计算,如果再有更多更复杂的顶点、颜色、纹理信息(包括 3D 纹理),那么计算量是难以想象的。这也是为什么 GPU 更适合于渲染流程

2.2 OpenGL ES工作过程

这个过程实际上就是图形编程接口的工作过程。OpenGL ES工作过程:

三、屏幕图像显示原理

1. CRT 显示器原理

介绍屏幕图像显示的原理,需要先从 CRT 显示器原理说起,如下图所示

2. 屏幕图像显示原理

CPU、GPU、显示器工作方式 下图所示为常见的 CPU、GPU、显示器工作方式: CPU 计算好显示内容提交至 GPU,GPU 渲染完成后将渲染结果存入帧缓冲区,视频控制器会按照 VSync 信号逐帧读取帧缓冲区的数据,经过数据转换后最终由显示器进行显示

四、其它GPU知识

1. GPU 存储系统

2. GPU 流处理器

下图所示为 GPU 中每个流处理器的内部结构示意图。每个流处理器集成了一个 L1 Cache。顶部是处理器核共享的寄存器堆。

3. CPU-GPU 异构系统

至此,我们大致了解了 GPU 的工作原理和内部结构,那么实际应用中 CPU 和 GPU 又是如何协同工作的呢?

4. GPU 资源管理模型

下图所示为分离式异构系统中 GPU 的资源管理模型示意图

5. CPU-GPU 工作流

下图所示为 CPU-GPU 异构系统的工作流,当 CPU 遇到图像处理的需求时,会调用 GPU 进行处理,主要流程可以分为以下四步:

相关阅读(共计14篇文章)

iOS相关专题

webApp相关专题

跨平台开发方案相关专题

阶段性总结:Native、WebApp、跨平台开发三种方案性能比较

Android、HarmonyOS页面渲染专题

小程序页面渲染专题

总结

[TOC]