渲染管线入门

article/2025/7/23 17:51:56

渲染管线中一些技术名词大部分是英文直译,光看中文很容易被误导。所以我们必须在了解一个技术的具体作用之后,才能了解它到底是什么。这篇博客我主要翻译自Minh Tri Do Dinh的GPUs - Graphics Processing Units一文。也就是一些论坛里推荐给新手阅读的图形处理器架构(GPU_Architecture)与图形管线(Graphics_Pipeline)。在此之上我还添加一些注解,方便大家阅读。

基础名词

  • 3D物体:任何物体,其几何形状都是由三角形组成的。三角形,或者任何图形,都由顶点组成。
    这里写图片描述

  • 顶点:具有空间坐标和其他信息(如颜色和纹理坐标)的点

  • 纹理:映射到3D物体表面的图像,这会造成该物体由某种材料组成的幻觉。物体的顶点存储着纹理坐标(2维向量),用于指定纹理如何映射到任何给定表面。
    这里写图片描述

  • 齐次坐标:3D空间中的点通常需要3个坐标来指定位置。如果继续用3个坐标表示,有时会遇到问题。例如:顶点平移时的操作是加一个向量,顶点旋转时的操作是乘以3x3矩阵)。所以我们通过扩展三维向量来绕开这个问题。我们添加另一个坐标(w坐标,从而得到所谓的齐次坐标[注1]。这样一来,顶点的所有变换都可以通过将其四维坐标与特定的4x4矩阵相乘来进行,使得计算更容易。齐次坐标的另一个用途是明确区分向量和点。

渲染管线

渲染管线(Graphics pipeline/rendering pipeline),其实贴切的翻译应该是渲染流水线。渲染流水线就是将数据从3D场景转换成2D图像,最终在屏幕上显示出来的总过程。它分为几个阶段:应用阶段、几何阶段和光栅阶段。
  应用阶段:主要是CPU与内存打交道,例如碰撞检测,计算好的数据(顶点坐标、法向量、纹理坐标、纹理)就会通过数据总线传给图形硬件 。
这里写图片描述

几何阶段(Geometry Stage)

这个阶段也被称为“变换和光照”阶段。为了从3D场景转换到2D,场景中的所有物体都需要转换到几个空间。每个空间都有自己的坐标系。这些转换是通过一个空间的顶点转换到另一个空间的顶点来实现的。
  光照(lighting),是这个阶段的另一个主要部分。是使用物体表面的法向量来计算的。通过摄像机的位置和光源的位置,可以计算出给定顶点的光照属性。
这里写图片描述

对于坐标系变换,我们从物体坐标系开始,每个物体都有自己的坐标系,这有利于几何变换,如平移,旋转和缩放。
  之后,我们进入到世界坐标系,场景中的所有物体都具有统一的坐标系。
  下一步是转换到视图空间,即摄像机坐标系。想象一下:先在世界空间中放一个虚拟摄像机,然后进行坐标变换,使得摄像机位于视图空间的原点,镜头对准z轴的方向。现在我们定义一个所谓的视体(view frustrum),它用来决定了我们能够通过虚拟的3D摄像机所能看到的场景,我们只需要把这些内容渲染出来就行。
这里写图片描述

之后,所有的顶点将被转换剪切空间,并通过图元装配,组装成图元(primitive,三角形或线)。当物体在视体的外,说明我们不需要渲染这个物体,所以就简单丢弃它。当一个物体有部分在视体内,我们需要进行剪切,同时生成新的顶点。新顶点具有适当的的纹理坐标和颜色坐标。
  接着我们执行透视分割操作,其实就是实现了一个投影变换,把”近大远小“的效果实现出来。把一个视体转换为归一化的立方体。这个立方体的坐标范围:x和y在-1和1之间,z在0和1之间。同时视体内的物体也一同进行缩放。这样一来得到的立方体,便于裁剪操作,也便于将来投影到平面(立方体只需要“扁平化”)。
这里写图片描述

最后,我们转换到屏幕空间。执行的操作:根据窗口大小将x和y坐标缩放到合适的坐标,这样就得到2D图片了。(请注意,顶点的z坐标会保留,用于以后的深度操作)
  请注意,除了剪裁之外纹理坐标也需要进行转换。还要注意除去不可见的表面[注2]。如出去立方体的背面,就是所谓的背面剔除。

光栅阶段(Rasterization Stage)

光栅这个名词不太好理解,新手可以想象成”透过一把梳子看世界“,类似于将连续的数据转化成离散的数据。这里光栅阶段是指矢量图形转化成像素点的过程。
  GPU需要遍历2D图像并进行转换将数据转化为大量“像素候选”,即所谓的片段(Fragment,片段可以理解为像素的原型,但绝对不是指一大片像素)。片段是包含位置,颜色,深度,纹理坐标等属性的数据结构。片段可能会最终成为图像上的像素。片段是通过检查原始图元和和屏幕像素是否相交来生成的。如果一个片段与一个基元相交,但不与它的任何顶点相交,那么它的属性必须通过顶点之间的属性插值来计算得出。
这里写图片描述

最后还有一些步骤来得到最终的像素。最终像素颜色的计算:结合纹理和颜色、光照等其他属性,或片段与另一个半透明片段的结合(所谓的α混合),亦或是可选的雾化效果(另一个图形效果)。[注3]


注1:齐次坐标和四元数长得很像,但却是不同的概念,适用领域也不一样。

注2:可见性检查的一些具体操作:

  • 剪刀测试(检查矩形面罩的可见度)
  • 模板测试(类似于剪刀测试,仅针对缓冲区中的任意像素模板)
  • 深度测试(比较片段的z坐标,丢弃更远的片段)
  • Alpha测试(检查半透明碎片的可见度)

注3:在我们获得最终结果之前,可以应用像抗锯齿这样的附加程序:将一些像素写入内存供以后显示。

reference

  • GPUs - Graphics Processing Units
  • 知乎:如何理解 OpenGL 中着色器、渲染管线、光栅化等概念?
  • OpenGL技术之View Volume, Viewport, Screen的关系
  • 维基百科-齐次坐标
  • 坐标系统

http://chatgpt.dhexx.cn/article/BLwWTiVx.shtml

相关文章

【OpenGL ES】渲染管线

1 前言 渲染管线是指图形渲染流程,涉及到的概念非常多,主要包含图元、片段、光栅化、空间、变换、裁剪、着色器、片段测试、混合等。渲染管线主体流程如下: 为方便读者理解渲染管线,本文将先介绍顶点数据、图元与片段、空间与变换…

渲染管线----通俗易懂向面试官介绍

本文通过简短的语言解释渲染管线,无论是第一次了解渲染管线,还是回顾,都有帮助。 一、完整渲染流程 在介绍渲染管线之前,先全局视角了解一下整个渲染引擎。 整个渲染分为五个阶段,如图 工具阶段、资产调节阶段、应用程…

学习笔记(一)渲染管线

目录 前言 一些疑问 一、什么是渲染管线? 二、为啥这玩意是个流水线? 1.CPU与GPU 2.CPU和GPU数据交互 3.CPU和GPU并行工作 Step1.应用程序阶段(The Application Stage) 一、把数据加载到显存中。 二、设置渲染状态。 三…

计算机图形学笔记(一)渲染管线概述

计算机图形学笔记(一)渲染管线概述 写在前面:因为之前有学习过图形学,博文是对过去知识的拾遗和对学习过程中的总结记录,所以在内容组织上可能不符合逻辑,某些比较熟悉的内容不会体现或简述;在整…

渲染基础-渲染管线(Render-pipeline)

一开始学习计算机图形学的小伙伴们肯定对于渲染管线有一点迷茫,至少当初我就有点迷茫,为了能对后来对计算机图形学感兴趣的萌新小伙伴起到一些帮助,在这里简单讲解一下渲染管线(Render-pipeline)。 该文章还有很多不足…

如何使用SPSS确定建立的回归模型能用于预测分析?

当需要研究一组随机变量与另一组变量的关系时,通常会运用回归分析。通过回归分析构建数学模型,探究两种或两种以上变量之间是否存在关系,若存在关系还可进一步预测未来的数据。 当自变量有多个而因变量只有一个时,则可构建spss多…

如何使用SPSS判断数据的正态分布

当我们应用统计方法对数据进行分析时,会发现许多计量资料的分析方法,例如常用的T检验、方差分析、相关分析以及线性回归等等,都要求数据服从正态分布或者近似正态分布,但这一前提条件往往被使用者所忽略。因此为了保证数据满足上述…

如何使用SPSS进行判别分析

今天将为大家讲解使用spss进行判别分析的相关步骤。 1.Discriminant Analysis判别分析主对话框 如图 1-1 所示 图 1-1 Discriminant Analysis 主对话框 (1)选择分类变量及其范围 在主对话框中左面的矩形框中选择表明已知的观测量所属类…

IBM SPSS Statistics定义变量使用介绍

IBM SPSS Statistics是一款强大的数据分析软件,它可以帮助我们解决很多复杂的统计学问题,使用SPSS的第一步就是要学会如何定义变量,下面让我们走进今天的SPSS入门教程。 一、进入变量视图 在定义变量之前,我们需要进入IBM SPSS …

SPSS使用过程中出现的问题整理 包括因子分析 感谢各位大佬们

spss使用方法整理 包括因子分析 一、遇到问题:spss导入excel数据显示:对于当前服务器语言环境而言,文本值过长二、SPSS数据分析-从EXCEL导入三、因子分析在SPSS中的操作过程及结果解读 一、遇到问题:spss导入excel数据显示:对于当前服务器语言环境而言,文…

通过SPSS使用命令语法实现快速删除变量的步骤

当我们面对一个庞大的数据集的时候,我们想要对该数据集进行一些操作,可能会觉得比较繁琐。为了快速精准的实现数据过滤操作, SPSS是自带了语法功能,通过语法即可快速实现复杂操作。今天小编将通过快速删除变量的操作,让…

SPSS入门教程—相关性分析使用方法

IBM SPSS Statistics为用户提供了三种相关性分析的方法,分别是双变量分析、偏相关分析和距离分析,三种相关分析方法各针对不同的数据情况,接下来我们将为大家介绍如何使用SPSS相关性分析中的距离分析。 一、数据简述 距离分析和其他两类相关…

使用IBM SPSS Statistics的新手应该如何入门

一、什么是IBM SPSS Statistics? IBM SPSS Statistics 是一款强大的统计软件平台,它所提供的数据分析功能,可以帮助企业、个人对各类数据进行切实可行的洞察分析,从而获取有效信息。 二、为什么要进行SPSS数据分析? …

【SPSS】包含多元线性回归、聚类分析、判别分析、主成分、相关系数、非参数秩检验的spss使用方法,含有相关例题,可以解决“数学建模”中数据建模的大部分问题

记录《多元统计分析》关于spss软件的使用,本篇教程不涉及具体模型的推导,通过例题来带领大家入门spss软件,学习软件基本的使用,解决常见数模问题。 本篇所有数据都可以在百度网盘上下载: 链接:https://pan.…

关于SPSS软件的使用

最近由于调研的需要,需要使用spss软件:Statistical Product and Service Solutions,“统计产品与服务解决方案”软件 1.首先是定义变量: 选择左下角“变量视图”,我们调查问卷的每一道题都可以作为一个变量&#xff0c…

spss登录本地计算机,SPSS基本使用

1.定义变量 名称不能用$,后面加.,保留字会歧义,不区分大小写 标签是对变量的补充说明 测量 : 名义:代表不同的类别,不能比较大小。如 性别 度量:可以比较大小 如距离、长度 有序:分类变量(大小之间有等级顺序)如:满意,很满意,不满意。。。。 2.SPSS导入数据库文件时,…

spss安装使用

1.下载spss24 百度云链接如下: 64位安装包:https://pan.baidu.com/s/19_nW1eJh5HN8Q_PAEUzfTg 提取码:l5fc 32位安装包:https://pan.baidu.com/s/14wga9CrNnysTImOaO6JW-Q 提取码:ayl5 安装教程下载&#xff…

SPSS使用命令语法之复制与粘贴讲解

在繁杂的数据中,我们常常束手无策,很难精准地完成数据统计和数据分析,但是IBM SPSS Statistics可以很好地协助我们完成这些工作。 IBM SPSS Statistics 作为一个强大的统计软件平台,不仅可以通过用户友好型界面,分析目…

spss使用教程

描述性统计结果 步骤从上到下 分析描述统计描述 制作矩阵散点图 4. 图形 5. 旧对话框 6. 散点图/点图 7. 矩阵散点图 求相关系数和p值

minecraft编程java_Minecraft编程基础课程(一)

《minecraft》(《我的世界》)是一款风靡全球的高自由度沙盒游戏,整个游戏没有剧情,玩家在游戏中自由建设和破坏,透过像积木一样来对元素进行组合与拼凑,轻而易举的就能制作出小木屋、城堡甚至城市,玩家可以通过自己创造…