美文网首页GLSL
OpenGL ES渲染管线

OpenGL ES渲染管线

作者: lsj980Ya | 来源:发表于2020-11-14 16:57 被阅读0次

    OpenGL ES渲染管线中我们目前经常用到的有两个Vertex ShadersFragment Shaders,另外有两个Geometry ShadersCompute Shaders是后来加的、可选的、我们了解就好。其中顶点着色器主要用来处理顶点变换光照,片元着色器主要用来给像素赋值颜色。渲染管线的详细流程如下图:

    图片来自书籍 GLSL Essentials

    Geometry stages (per-vertex operations)

    这个阶段块主要关注顶点数据从初始状态(模型坐标系统)到最终状态(视口坐标系统)的转换
    Vertex Data:这是整个过程的输入数据。在这里,我们向管道提供几何图形的所有矢量数据:顶点、法线、索引、切线、二项式、纹理坐标,等等
    Textures: 当着色器出现时,这个新的顶点阶段输入是可能的。除了使我们的渲染更加多彩,纹理可以作为顶点和几何着色器的输入,例如,根据存储在纹理中的值置换顶点(位移映射技术)
    Vertex shader: 这个系统负责将顶点从其本地坐标系统(local coordinate system)转换到剪辑空间(clip space),通过应用适当的转换矩阵(模型、视图和投影)。
    Clipping:一旦元素的顶点进入所谓的裁剪空间(clip space),裁剪和丢弃这里的外部三角形要比在其他空间中更容易,计算成本也更低
    Perspective division:这个操作将我们的可视化体(一个截断的金字塔,通常称为截锥体)转换成一个规则的、规格化的立方体。
    Viewport transform:剪切体的近平面(规格化立方体)被转换并缩放到视口坐标。这意味着坐标将被映射到我们的视口(通常是我们的屏幕或 我们的窗口)。
    Data is passed to the rasterizer:这个步骤将顶点数据(图元的顶点)转换为离散表示(framebuffer)以进一步处理的阶段

    Fragment stages (per-fragment operations)

    Fragment shader:这是为片元应用纹理、颜色和灯光计算的阶段
    Post fragment processing:这是进行混合、深度测试、裁剪测试、alpha测试等的阶段。在这个阶段,片段被合并、测试和丢弃,最终通过的片段被写入framebuffer。

    附:关于 GLSL Essentials 这本书是英文的,建议大家购买正版,支持正版人人有责

    [链接: https://pan.baidu.com/s/1pNmY17MUwsGbXooS18biyg 密码: bg0m

    相关文章

      网友评论

        本文标题:OpenGL ES渲染管线

        本文链接:https://www.haomeiwen.com/subject/bhkwbktx.html