Realtime Rendering 3rd笔记 2

Chapter3 The Graphics Processing Unit

历史上,硬件图形加速是从流水线的末端开始的,最初是做三角形的光栅化,之后连续更新换代的硬件从流水线末端向上发展,
甚至一些application阶段的高层次算法被交由硬件实现。
在过去的十多年里,图形硬件发展迅速,1999年出现的NVIDIA's GeForce256是第一个包含硬件顶点处理的消费型图形芯片,
NVIDIA创造了术语"graphics processing unit"(GPU)来区分GeForce256和之前的只能进行光栅化的芯片。
在之后的几年中,硬件从可配置的固定功能流水线向高度可编程发展。
vertex shader允许作用在每个顶点上的操作;
pixel shader处理单个的像素,允许在每个像素上进行复杂的shading计算;
geometry shader允许GPU动态的生成和删除几何图元(点,线,三角形)。
计算出来的值被写到多个高精度的buffer中,并可以被重用为顶点或纹理数据。
为了效率考量,一部分功能还是由可配置的固定模块完成,但趋势是可编程性和灵活性。

3.1 GPU Pipeline Overview

GPU实现了第二章说描述的geometry和rasterization概念流水线阶段。
他们被分为了几个配置性或可编程性不等的硬件阶段:
Vertex Shader -> Geometry Shader -> Clipping -> Screen Mapping -> Triangle Setup -> Triangle Traversal -> Pixel Shader -> Merger

vertex shader是完全可编程的阶段,一般用来实现“Model and view transform", "Vertex shading", "Projection"这三个功能性阶段。
geometry shader是一个可选的,完全可编程的阶段,操作图元的顶点。他可以被用来进行逐图元(per-primitive)的shading操作:destroy图元或者创建新图元。
clipping, screen mapping, triangle setup和triangle traversal阶段是固定功能的阶段用来实现同名的功能性阶段。
pixel shader是完全可编程的阶段,进行"Pixel shading"功能性阶段。
merger阶段是介于完全可编程和固定功能之间的,虽然是不可编程的,但是是高度可配置的,可以被设置以进行各种操作。当然他实现了"Merging"功能性阶段,负责修改color,z buffer,blend, stencil和其他相关的buffer等。

随着时间的推进,GPU流水线从硬编码操作向增加灵活性和控制方面进化,而可编程的shader阶段是其中最重要的步骤。下一节描述了各种可编程阶段的共同特性。

你可能感兴趣的:(编程,算法,Blend)