Real-Time Rendering[Chapter2]The Graphic Rendering Pipeline

renderging pipeline
在这里插入图片描述
Geometry Processing
在这里插入图片描述
Rasterization
在这里插入图片描述

2.5 Pixel Processing(像素处理)

    在这一步,所有的三角形或者图元中的像素点都在之前的步骤中被找到。pixel processing被分为pixel shading和merging两个阶段;该步骤是对图元中的每像素或每采样进行计算。

2.5.1 Pixel Shading(像素着色)

    使用插值shading data作为输入,所有的per-pixel shading计算在此处理。输出结果是一个或多个颜色,交给下一步处理。pixel shading运行在可编程GPU core上,而不像triangle setup和traversal阶段运行在专用硬件上。因此,编程人员提供一段程序作为pixel shader(OpenGL中称为fragment shader),这段程序可以执行任何计算。许多技术可以用在这里,其中一项最重要的是texturing(纹理,贴图)。详细在Chapter6讨论。简单地说,为一个对象贴图就是将一个或多个图片粘到这个对象上。
在这里插入图片描述

2.5.2 Merging(混合)

    每个像素的信息存储在color buffer中(RGB颜色),merging阶段负责混合fragment的颜色(由pixel shading阶段产生),该阶段也叫ROP,表示“raster operation(pipeline)”或“render output unit”。该阶段使用的GPU子单元不是完全可编程的,然而,是高度可配置的,可以使能许多效果。
    这一步也负责处理可见性(visibility),通过z-buffer(也叫depth buffer)算法。z-buffer和color buffer的大小和形状相同,该算法通过遍历每个图元的z-value并于当前z-buffer中的z-value比较,如果离camera更近,就更新z-buffer中的z-value和color为该pixel的值,否则不动。该算法的好处是可以不管图元的顺序,所以它很流行。但是它无法处理透明图元,透明图元必须在非透明的物体渲染完成之后处理。透明图元需要从后往前渲染,或者使用单独的顺序无关算法(order-independent)参考Section5.5。透明图元是z-buffer算法的劣势。
    还有其他的通道(channel)和buffer可以用来过滤和采集fragment信息,color buffer中的alpha通道用来存储每个像素的opacity(不透明性,模糊) value(Section5.5)。
    stencil buffer(模板缓冲)是一个用来记录图元位置信息的offscreen buffer(离屏缓冲),一般没个像素包含8bit,图元可以使用许多种方式渲染到stencil buffer中,缓冲区中的内容可以用于控制渲染到color buffer和z-buffer中。例如,假如有一个实心的圆绘制到stencil buffer中,这可以与一个仅允许渲染后续图元到该圆所在的color buffer中的运算符组合。所有在流水线末尾的这些函数称为raster operations(光栅操作)或blend operations(混合操作)。现在可以混合在颜色缓冲区的颜色和在三角形内部处理的像素的颜色。这可以启用透明或颜色累加颜色采样效果。之前提到,blending(混合)常常可以通过API配置而非完全可编程的。一些支持光栅化顺序视图(raster order views,也称为pixel shader ordering)的API能够enable可编程的blending能力。
    framebuffer通常含有系统中所有的buffers。
    当图元到达光栅化阶段,camera视角可见的部分显示到屏幕上。屏幕显示color buffer中的内容。为了避免人类观察者看到正在被光栅化并发送到屏幕上的图元,采用double buffering(双缓冲)机制。这意味着某个场景在back buffer(后台缓冲)中离屏渲染。一旦back buffer中渲染完成,back buffer中的内容会与front buffer中的内容交换,front buffer中的内容即为之前显示在屏幕上的内容。swapping通常发生在vertical retrace(垂直回扫)期间,这是一段安全操作的时间。具体参考 Sections 5.4.2, 23.6, and 23.7。

2.6 Through the Pipeline(回顾流水线整个步骤)

Application(应用)

    你可以移动鼠标控制你想要操作的物体;鼠标响应;旋转的物体中的相机位置和方向的控制

Geometry Processing(几何处理)

    视图变换;矩阵变换;model view到world view;材质和光照计算;投影,将对象转换到一个单位立方体中;裁剪;map到屏幕的window上;之后per-triangle和per-vertex操作被执行,结果传到rasterization阶段

Rasterization(光栅化)

    找到所有图元中的pixel并传到后续的pixel处理阶段

Pixel Processing(像素处理)

    texture(贴图);z-buffer算法;discard和stencil tests(可选);最终图像显示到屏幕上

Conclusion(总结)

    这并非是唯一可能的rendering pipeline实现方式,还可以有其他的实现方式。

Further Reading and Resources(后续阅读与资源)

    1、《 A Trip Down the Graphics Pipeline》
    关于写一个完全由自己编写渲染pipeline的程序(bout writing a software renderer from scratch)
    2、《OpenGL Programming Guide》 (“Red Book”)
    提供详细的图形pipeline和算法相关内容的书

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值