渲染管线

渲染管线是计算机图形学中的核心流程,它包括应用阶段、几何阶段、光栅化阶段和像素处理阶段。应用阶段处理物理模拟和动画,几何阶段进行坐标变换和裁剪,光栅化阶段通过插值填补像素,像素处理阶段则涉及颜色计算和透明度混合。顶点着色器和片元着色器是可编程部分,用于实现各种图形特效。整个流程以流水线方式工作,高效地将3D模型转化为屏幕上可见的2D图像。
摘要由CSDN通过智能技术生成

渲染管线的概念

计算机的渲染管线是实时渲染的重要过程。渲染管线是以流水线的形式,讲一个模型的顶点坐标,发现,切线,颜色等数据从CPU传递给GPU,然后通过GPU进行计算,最终将这些顶点的数据通过插值的形式显示到屏幕上,最终能从屏幕上看到该模型的样子。渲染管线通常被分为四个阶段:应用阶段,几何阶段,光栅化阶段,像素处理阶段。接下来介绍一下每个阶段的大概任务。
(1) 应用阶段:应用阶段是指在CPU段进行处理的阶段,包括物理碰撞检测、物理模拟、动画计算等任务,对于3D游戏来说,游戏中包含大量的模型,3D模型中保存着模型的顶点坐标,法线,切线,颜色等数据,这些数据一般通过向量进行存储,CPU从模型中获取这些顶点信息数据,并将这些数据传给GPU作为最开始的输入数据。然后将数据送到渲染管线中。
(2) 几何阶段:几何阶段主要执行顶点坐标变换、定点处理、坐标裁剪等操作,计算对象为顶点数据,即模型的顶点数据,在这个阶段,做的最多的操作就是顶点坐标变换,从模型空间变换到世界空间,然后再从世界空间变换至相机空间。这样在相机坐标系下就能方便地进行裁剪,裁剪的作用是判断顶点是否可见。
(3) 光栅化阶段:相比屏幕上的像素点,顶点数据要少很多,这就有一个问题,无法实现从顶点数据到屏幕像素上的映射。薇乐大道这一目的,就出现了顶点插值运算,即将两个顶点之间的空缺部分通过插值的形式进行填充,以达到能实现从顶点数据到像素上的一一映射,最后将渲染的结果显示到屏幕上。
(4) 像素处理阶段:像素处理阶段包括像素颜色计算、像素变换、透明度混合等操作,处理物体渲染顺序及深度测试等。这个阶段要处理的内容比较多,可以在此阶段中利用一些算法实现非常多的屏幕特效,比如高斯模糊,景深等,此阶段是游戏渲染中应用非常广泛的阶段,但因为其对象是像素点,因此实现相关特效时比较耗费性能。

渲染管线流程

渲染管线以流水线的方式进行工作,前一部分的输出值时候一部分的输入值,例如,当顶点信息传入顶点着色器后,顶点着色器对这些顶点信息进行坐标变换,输出的值会传入片元着色器,作为输入值进一步计算,直到完成在屏幕上的显示。虽然渲染管线的整个流程比较复杂,但是大部分操作是通过计算机硬件自动计算完成的,如图元组装和光栅化阶段,不需要人们干涉。而需要编程实现的部分就是顶点着色器和片元着色器,这两个可编程着色器是渲染管线中对数据操作的贺信指出,通过对这两个着色器的计算,便可实现非常多的渲染效果和计算机图形特效。
在这里插入图片描述

渲染管线的几个阶段

(1) 顶点数据:一个模型或者图形由点线面构成的,为了让计算机绘制出这个图形,就必须告诉计算机这些数据的值,顶点数据包括顶点坐标,坐标的切线,法线,颜色等信息。对于OpenGL,这些数据一般都是向量结构体,对于游戏引擎,这些数据来自导入的模型当中,在开始渲染之前,CPU会获取这些数据,然后将其传递给GPU,作为最原始数据,做好计算准备。
(2) 顶点着色器:顶点着色器在渲染管线中的作用非常大,是渲染管线的第一个可编程着色器,处理单元是顶点数据。顶点着色器的主要功能使对坐标进行变换。将输入的局部坐标变换到世界坐标、观察坐标和裁剪坐标。除此之外当然也可以进行光照着色,但是着色效果远不如在片元着色器中进行光照着色,因为计算量小。
(3) 图元装配:图元装配是对传入的顶点数据进行重新组装,将顶点着色器的输出作为输入,这一点验证了渲染的过程是以流水线的形式进行的,图元装配会将顶点装配成指定的图形,与此同时,会进行裁剪、背面剔除等操作,以减少不必要的计算,加速渲染过程。
(4) 几何着色器:几何着色器会将图元装配阶段输出的数据作为输入的数据,几何着色器不属于可编程阶段,由硬件设备自动完成,其主要作用是对顶点数据进行重构,可以在此阶段产生新的顶点数据,来弥补之前存在的一些问题,以便为接下来要进行的操作做好充分的准备工作。
(5) 光栅化:光栅化阶段的输入数据来自几何着色器的输出数据,光栅化的意思很容易理解,到目前为止,渲染所处理的数据对象为顶点,无法通过一一对应的方式映射到屏幕上,而为了实现顶点到屏幕像素的一一映射,就出现了光栅化。换而言之,光栅化的作用就是将两个顶点直接缺少的像素点通过插值的形式进行补充,生成片元着色器可以处理的片段。此阶段人为不可以干涉,由硬件完成插值计算。在插值过程中,会将不可见的顶点进行剔除。
(6) 片元着色器:片元着色器处理的对象是像素点的颜色信息,也是最终显示在屏幕上的像素点,在这个过程中,可以处理光照和阴影计算,将处理完的值保存至缓存区中。
(7) 混合处理阶段:混合处理阶段属于屏幕后期处理范围,这意味着此阶段主要做的任务为屏幕优化操作,通过片元着色器得到的像素,有些不能被显示出来,比如透明度为0的像素点,对于这类像素点,我们需要进行测试,测试的范围包括Alpha测试,模板测试和深度测试等。不能通过测试的像素点将会被丢弃,就不会参与接下来的操作;通过测试的像素点会进入混合阶段。混合阶段主要是要处理透明物体,物体的透明度通过Alpha来表示,范围是从0.至.1,alpha=1表示完全不透明,alpha=0表示完全透明。测试混合阶段基本不需要进行编程,但是常见的渲染管线接口会开放出一些参数给开发者做调整

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值