• Rasterizer Stage(读书笔记3 --- Real-Time rendering)


    rasterizer stage的目标:计算和设置每个像素的颜色。将屏幕空间的二维顶点和每个顶点的shading信息转换为屏幕上的像素。

    rasterizer stage可以分为几个阶段:triangle setup, triangle traversal, pixel shading, and merging

    1. Triangle Setup 这个阶段是计算三角形surface的微分及其他数据的。此阶段生成的数据用来做扫描转换(scan conversion)和对不同的shading数据进行插值。

    这个阶段是由fixed-operation hardware(固定操作硬件)完成的.

    2. Triangle Traversal

    寻找哪些采样点或者像素在三角形内部的过程叫triangle traversal 或者 scan conversion.

    每个三角形fragment的属性都是用三角形顶点之间的插值生成的,这些属性包含depth,从geometry stage来的shading data

    扫描转换:把顶点表示转换为点阵表示,即从给定的边界出发求出位于内部的各像素

    3. Pixel Shading

    所有的像素着色都是在这一步完成,输入数据是shading data的插值,输出数据是一个或者多个颜色值。

    和前两个阶段不同的是,这一阶段是在可编程GPU核上执行的。

    大量的技术被用在这一阶段,其中最重要的就是texturing

    4. Merging(混合)

    每个像素的信息被存储在color buffer中,color buffer是一个颜色数组。

    Merging stage负责将shading stage产生的fragment color混合到buffer中现有的color里面。

    Merging stage也负责解决可见性问题,一般GPU是通过Z-buffer algorithm来解决的,详情见下面一节。

    Merging stage不完全是可编程的,但是可以高度配置,可以enable各种效果

    5. Z-buffer(depth buffer) algorithm

    Z-buffer和color buffer一样大小和形状,每个像素存储着从相机到当前primitive的z轴距离

    当一个图元被选入到某个像素时,需要计算这个图元在这个像素的z值并和同一个像素上的z-buffer内容比较,如果新的z值比z-buffer中的小,那么说明图元离相机更近,所以要用图元的z值和颜色去更新这个像素的z值和颜色;如果新的z值比z-buffer中的大,说明图元距离相机更远,那么color buffer和z-buffer就不需要更新。

    6. 其他buffer

    alpha通道与color buffer有关系,它存储每个像素的透明度。 在depth test之前可以先做alpha test,先用某些特定的test来比较fragment的alpha值和参考值,如果fragment没有通过测试,就不对它做进一步处理。alpha test是用来确保完全透明的fagment不会影响z-buffer

    stencil buffer是用来记录rendered primitive的位置的离屏buffer,它通常包含8bit. Stencil buffer是一个可以生成特殊效果的强大工具。

    7. double buffering

    为了避免人眼看到正在被光栅化的图元,一般使用double buffering。在这个方法中,渲染发生在back buffer,当back buffer被渲染完成时,back buffer中的内容被置换到front buffer,也就是显示屏幕内容的buffer,这个交换发生在vertical retrace,即vblank(扫描点扫描完一帧后要从图像的右下角返回到图像的左上角,开始新的一帧扫描,即一帧最后一行到下一帧的第一行之间的时间)

  • 相关阅读:
    Codeforces 912 D. Fishes (贪心、bfs)
    Codeforces 908 D.New Year and Arbitrary Arrangement (概率&期望DP)
    HDU
    HDU
    POJ-2299 Ultra-QuickSort (树状数组)
    deque!
    HDU
    乘法逆元
    Codeforces 911D. Inversion Counting (数学、思维)
    Codeforces 909E. Coprocessor (拓扑、模拟)
  • 原文地址:https://www.cnblogs.com/lxb0478/p/6202353.html
Copyright © 2020-2023  润新知