warning: Creating default object from empty value in /mydata/wwwroot/xilinx.eetrend.com/modules/taxonomy/taxonomy.pages.inc on line 33.

渲染管线

对渲染管线的调研

1. 渲染管线是什么

渲染管线, 英文 Rendering Pipeline,我们可以将其理解为一个流程,即我们告诉 GPU 一堆数据,最后得出来一副二维图像,这堆数据包括 "视点 / 三维物体 / 光源 / 光照模型 / 纹理" 等元素。

渲染管线可以理解为一种流水线,是对 "从得到模型数据到绘制出图像" 这一过程的称呼。渲染管线是实时渲染技术的底层工具,图像中物体的位置及形状是通过它们的几何描述 | 环境特征 | 以及该环境中虚拟摄像机的摆放位置来决定的。物体的外观受到了材质属性|灯源|贴图以及渲染模式的影响。

在图形学中,渲染管线主要分为三个大阶段:应用程序阶段 | 几何阶段 | 光栅化阶段。

2. 为什么要有渲染管线

渲染管线是在显示器上为了显示出图像而经过的一系列必要操作。主要步骤有:本地坐标 → 视图坐标 → 背面坐标 → 光照 → 裁剪 → 投影 → 视图变换 → 光栅化。

3. 对渲染管线的使用

OpenGL-渲染管线的流程(有图有真相)

学习shader之前必须知道的事情:shader(着色语言)到底发生在那个阶段?OpenGL的渲染管线有哪些阶段?这对开发人员来说很重要,也许你刚刚接触,或者你在使用已有的产品,很优秀的游戏引擎,或者渲染引擎,你觉得知道这个没有太大意义,但知道了这些,总归对你没有坏处。

下图是一个非常简化框图流水线的各个阶段,并在他们之间传播的数据。虽然极其简单,它是足够的着色器编程,提出了一些重要的概念。固定管线中存在很多阶段,并存在很多细节,这里只是粗略的介绍。

(1)顶点变换:

在这里,一个顶点的属性,如在空间的位置,以及它的颜色,法线,纹理坐标,其中包括一组。这个阶段的输入的各个顶点的属性。由固定的功能所执行的操作,主要完成一下工作:
1. 顶点位置变换
2. 计算顶点观照
3. 纹理坐标变换

(2)图元装配:

这个阶段的输入的变换后的顶点,以及连通性信息。这后者的一块数据告诉顶点如何连接,以形成一种原始的绘制数据,这个阶段还负责对视锥裁剪操作,背面剔除。光栅扫描确定的片段,和原始的像素位置。

OpenGL渲染管线

绝大数OpenGL实现都有相似的操作顺序,一系列相关的处理阶段称为OpenGL渲染管线。图1-2显示了这些顺序,虽然并没有严格规定OpenGL必须采用这样的实现,但它提供了一个可靠的指南,可以预测OpenGL将以什么样的顺序来执行这些操作。

如果读者刚开始涉足三维图形编程,可能会对接下来的内容感到吃力。读者现在可以跳过这一部分内容,但在读完这本书的每一章时,都应该重温一下图1-2。

OpenGL渲染管线

OpenGL渲染管线

软件光栅器实现(一、管线概述)

一个半月的时间实现了一个软件光栅器,这个是导入茶壶obj文件后的效果,主要难点在于:

1、Cohen-SutherLand CVV裁剪(两周工作量)
2、法线贴图(一周)
3、OBJ,MTL文件解析和加载(三天)

软件光栅器实现(一、管线概述)

该系列博文主要介绍软光栅的实现思路,设计到的诸如裁剪、切空间计算和光照模型等公示不是本文重点,此类信息可以查阅相关文献。本节先对软件光栅器定义进行介绍,并介绍光栅器的实现过程,这对程序的实现是算是一个宏观的概括和总结。转载请注明出处。

什么是软件光栅器?它和硬件光栅器有何区别?

译:渲染管线概述

什么是渲染管线?

渲染管线也称为渲染流水线,是显示芯片内部处理图形信号相互独立的的并行处理单元。

一个流水线是一序列可以并行和按照固定顺序进行的阶段。每个阶段都从它的前一阶段接收输入,然后把输出发给随后的阶段。

然后u3d的文档看上去像是只说了渲染路径,而渲染管线(渲染流水线)并没有怎么说明。

Unity 3D 用户文档 —— 渲染管线概述

渲染管线概述

着色器定义了对象本身的外观(其材质属性)以及它如何对光线做出反应。由于照明计算必须内置到着色器中,并且有许多可能的光影类型,因此编写“正常工作”的高质量着色器将是一项相关任务。为了使它更容易,Unity具有表面着色器,其中所有的照明,阴影,光照贴图,前进与延期渲染事情都会自动处理。

本文档描述了Unity照明和渲染管线的特性以及Surface Shaders幕后的情况。

4个渲染路径

3D图形渲染管线

什么是渲染(Rendering)?渲染简单的理解可能可以是这样:就是将三维物体或三维场景的描述转化为一幅二维图像,生成的二维图像能很好的反应三维物体或三维场景。

渲染管线研究:渲染管线示意图

一、 3D图形渲染(Rendering)

渲染:就是将三维物体或三维场景的描述转化为一幅二维图像,生成的二维图像能很好的反应三维物体或三维场景。过程:几何变换、光栅化、着色。

顶点渲染单元(Vertex Shader):根据描述3D图形外观的三角形顶点数据确定3D图形的形状及位置关系; 作几何变换、生成3D图像的骨架。

光栅化:显示的图像是由像素组成的,我们需要将描述3D图像骨架的一系列三角形通过一定的算法转换到相应屏幕上的像素点。把一个矢量图形转换为一系列像素点的过程就称为光栅化。例如,一条数学表示的斜线段,最终被转化成阶梯状的连续像素点。

像素渲染(Pixel Shader):光照、光线追踪、纹理帖图、像素着色。 也就是对每个像素进行计算,从而确定每个像素的最终颜色。最后由ROP(光栅化引擎)完成像素的输出,1帧渲染完毕后,被送到显存帧缓冲区;然后经由D/A转换输出到显示器上。

三维图形渲染管线

三维图形渲染管线就是将三维场景转化为一幅二维图像的过程。

图像中物体所处位置及外形由其几何数据和摄像机的位置共同决定,物体外表是受到其材质属性、光源、纹理及着色模型所影响。

三维图形渲染管线

管线过程由3个大的阶段组成:
三维图形渲染管线

Application(应用程序阶段):运行在CPU上,能被开发者完全控制,该过程所做操作包括:

① 准备场景数据
a. 加载模型:Mesh、Material、Shader、Texture(硬盘 --> 内存 --> 显存)
b. 摄像机(位置、朝向、视锥体)

Cocos2dx v3.x渲染管线流程

cocos2dx v3渲染流程做了很大的升级,具体的提升和新的特性大概有以下几点:

  •   场景的遍历和渲染分离开来,在遍历节点的时候会把绘图命令放入一个队列,并不会实际调用OpenGL渲染API;
  •   视锥体几何裁剪,摄像机视野外的对象将会自动从当前帧中移除,并不会进行渲染;
  •   执行OpenGL绘图命令的将会移动到一个独立的线程,更好地利用现在移动平台的多核CPU;
  •   自动合并批次
  •   基于节点的定制化渲染

Cocos2dx v3.x渲染管线流程

GPU渲染之OpenGL的GPU管线

GPU渲染流水线,是硬件真正体现渲染概念的操作过程,也是最终将图元画到2D屏幕上的阶段。GPU管线涵盖了渲染流程的几何阶段和光栅化阶段,但对开发者而言,只有对顶点和片段着色器有可编程控制权,其他一律不可编程。如下图:

GPU渲染之OpenGL的GPU管线

简单总结GPU管线,这阶段中主要是对图元进行操作。首先,将由应用阶段加载到显存中的顶点数据(由drawCall指定后)作为输入传递给顶点着色器。接着,顶点着色器首先对图元的每个顶点设置模型视图变换及投影变换(即右乘MVP矩阵),然后将变换后的顶点按照摄像机视椎体定义(即透视投影,或正投影)进行裁剪,将不在视野内的顶点去掉并剔除某些三角面片。最后到几何阶段的屏幕映射,负责把修改过的图元的坐标转换到屏幕坐标系中(即投影到屏幕上)。

同步内容
--电子创新网--
粤ICP备12070055号