当前位置: 首页 > news >正文

【Unity Shader学习笔记】(二)图形显示系统

一、图形显示系统的基本流程

  • 帧缓存:是显卡内存中的一块特定区域,专门用来存储即将要显示在屏幕上的一整帧图像的所有像素数据。渲染管线的最终目的就是把计算好的颜色值写入这个内存区域。每个像素的颜色信息(如RGBA值)都按顺序存放在这里。为了保证画面流畅,通常至少会有两个帧缓存:
    • 前台缓存:正在被显示控制器读取并发送到显示器的帧缓存。这是当前屏幕上你正在看到的内容。

    • 后台缓存:正在被图形渲染管线绘制的下一帧图像。程序(如游戏)总是在后台缓存上进行绘制。   

  • 显示控制器:它是显卡上的一个专用硬件组件,也称为视频定时控制器。他的任务就是从画室(显存)里拿起已经完成的画(前台缓存),以精确的速度跑到画布(显示器)前,严格按照从上到下、从左到右的顺序,把画上的每一个点复制到画布上。他每秒要重复这个过程60、144甚至更高次数(取决于刷新率)。
  • 显示器:就是我们看到的物理屏幕(LCD、OLED等),接收显示控制器发来的信号,并根据信号指令控制每个物理像素点的亮度和颜色,从而将数字图像变为可见光。

二、早期的光栅扫描显示系统

在计算机图形学的早期,显示图像是一项复杂而精密的机械过程。

  • 核心原理:电子枪像画笔一样,从屏幕左上角开始,一行一行地从左到右、从上到下地扫描整个屏幕,通过激发荧光粉来发光形成图像。

  • 关键挑战:这个过程不能中断。一旦电子枪开始扫描,就必须持续不断地为它提供数据,否则画面就会闪烁或不完整。

  • 解决方案:早期的计算机没有专门的图形处理器。沉重的负担全部压在中央处理器。CPU需要亲自计算每个像素的颜色,并在电子枪扫描到那个像素的精确时刻,将颜色数据通过内存总线发送给显示器。

  • 比喻:这就像让一位交响乐指挥家(CPU) 不仅要指挥整个乐团,还要亲自去拉第一小提琴,并在间隙跑去吹小号。效率低下,严重限制了图形能力的发展。

三、现代的光栅扫描显示系统

为了解决上述瓶颈,计算机架构发生了革命性的变化:显卡诞生了。

  • 核心进化:将所有的图形计算任务从CPU卸载到一个专用的硬件上——这就是显卡

  • 工作流程:  

    1. CPU(老板):发出高级指令,比如“在这个坐标画一个角色模型”。

    2. GPU(图形经理):接收指令,调动其庞大的专业团队(大量核心)进行并行计算,完成建模、渲染、着色等所有复杂工作,将最终图像画在帧缓存里。

    3. 显示控制器(信使):以恒定节奏从帧缓存中读取数据,转换为信号发送给显示器。

    4. 显示器(画布):最终呈现图像。            

  • 意义:这种分工解放了CPU,让它能更好地处理系统逻辑、人工智能等更擅长的任务,而GPU则专注于海量的数学运算,使得复杂、逼真的实时图形成为可能。

四、显卡的心脏:GPU

  GPU(Graphical Processing Unit)又称显示核心、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备上进行图像运算工作的微处理器。

  • 定位:它不是一颗普通的处理器,而是一个高度专业化的并行计算怪兽。它的整个架构都是为了处理与构建图像相关的海量数学计算而设计的。

五、GPU的架构哲学:人多力量大

CPU和GPU的设计理念完全不同,这造就了它们截然不同的优缺点。

特性CPUGPU
核心设计少量强大的“大脑成千上万个简单的“小学生
擅长领域复杂逻辑控制、串行任务、通用计算大规模并行计算、简单但重复的任务
比喻一位博士,能独立解决非常复杂的数学难题。一万个小学生,每人只做一道简单的加法题,但一秒内就能全部算完。
优点灵活性高,处理复杂任务能力强核多力量大,极其擅长浮点运算并行计算,图形渲染速度极快
缺点管理控制能力弱(让一万个小学生协同完成一个复杂项目非常困难),功耗相对较高不擅长处理分支判断多、逻辑复杂的任务

六、GPU的供应商

如今的GPU市场主要由三大巨头主导:

  • 英特尔:集成显卡之王。其GPU芯片通常与CPU封装在同一块芯片上,功耗低,足以满足日常办公、高清视频播放和轻度游戏的需求,是市场份额最大的图形处理器供应商。
  • 英伟达:独立显卡的领导者。以其高性能的GeForce系列游戏显卡和专业领域的Quadro系列著称。技术在业界领先,尤其是其CUDA并行计算平台和实时光线追踪技术,深刻影响了行业的发展。
  • AMD:有力的竞争者。收购了曾经的图形巨头ATI,提供Radeon系列独立显卡。其技术路线与英伟达竞争激烈,性价比突出。同时,AMD也生产将CPU和GPU高效融合的APU产品。
http://www.xdnf.cn/news/1431991.html

相关文章:

  • 从Web2到Web3:一场重塑数字未来的“静默革命”
  • mac 本地安装maven环境
  • LLM面试50问:NLP/RAG/部署/对齐/安全/多模态全覆盖
  • CentOS7.6
  • @Hadoop 介绍部署使用详细指南
  • Qt中QSettings的键值使用QDataStream进行存储
  • 【ComfyUI】SDXL Refiner 提示进一步提升生成图像的质量
  • Android的USB通信 (AOA Android开放配件协议)
  • CSS基础学习步骤
  • 蓝桥杯算法之基础知识(5)
  • GPU 优化 - tensor core 用swizzle 解决bank conflict
  • STM32HAL 快速入门(十六):UART 协议 —— 异步串行通信的底层逻辑
  • PyTorch 训练随机卡死复盘:DataLoader × OpenCV 多进程死锁,三步定位与彻底修复
  • 【lucene】advanceshallow就是遍历跳表的,可以看作是跳表的遍历器
  • vscode下leetcode插件cookie登录
  • MySQL进阶知识梳理
  • 如何用c来编写一个判断闰年平年的微程序呢
  • 静态网站生成利器 Eleventy
  • 大文件稳定上传:Spring Boot + MinIO 断点续传实践
  • leetcode算法刷题的第二十四天
  • 网络数据包是怎么在客户端和服务端之间进行传输的?
  • 【Go语言并发编程:Goroutine调度原理】
  • Flink - 基础学习(1)-三种时间语义
  • PDF翻译怎么弄?一篇文章告诉你答案
  • 线扫相机搭配显微镜:解锁微观世界的 “全景高清” 观察模式
  • go 语言map是线程不安全的如何处理
  • C#实现与西门子S7-1200_1500 PLC通信
  • 【一张图看懂Kafka消息队列架构】
  • AI 在教育领域的落地困境:个性化教学与数据隐私的平衡之道
  • 278-基于Django的协同过滤旅游推荐系统