zoukankan      html  css  js  c++  java
  • 渲染管道

    渲染管道

    1、吞吐量(throughput)度量总体每秒可产生的数据量。潜伏期(latency)度量单个数据需要花多少时间才能走完整个管道。

    2、渲染管道概观

      1)数字内容创作(digital content creation,DCC):mesh和材质数据是由DCC应用程序创建。

      2)资产调节管道(asset conditioning pipeline,ACP):导出处理、链接多个种类的资产,生成内聚的整体。

      3)应用程序阶段(CPU)

      4)几何阶段(GPU)

      5)光栅化阶段(GPU)

    3、裁剪(clipping)阶段把三角形在平截头体以外的部分切掉。其原理是先判定哪些顶点在平截头体之外,而相交点会被裁剪后形成新的三角图元。

    4、合并阶段不能编程,但高度可配置。若片段通过了所有测试,其颜色就会与帧缓冲原来的颜色进行混合。

    5、几何着色器的输入为单个n顶点几何图元,其输出为0或多个图元,这些图元的种类可与输入的有所不同。

    6、着色器的输出是将要写至帧缓冲的颜色。

    7、在着色器编程中,访问内存只有2个方法:寄存器和纹理贴图。在调用着色器程序之前,GPU会从显存自动复制顶点或片段属性数据至适当的输入寄存器;当程序执行完成,GPU会把输出寄存器的内存写入显存,使数据能给予下个管道阶段。

    8、在3)应用程序阶段,应用应该仅把可见的物体提交GPU,以免浪费宝贵的资源渲染总是看不见的物体。

    9、把可见表中完全被其他物体遮挡的物体移除,称为遮挡剔除(occlusion culling)。常见的做法有入口系统,反入口系统。

    10、GPU管道内的所有可配置参数称为硬件状态(hardware state)或渲染状态(render state)。这些状态设置完全由每个子网格对应的材质扬描述。如果在提交图元之间,我们忘记设置某方面的渲染状态,那么上一图元的设置便会“泄漏”至下一图元。叫做渲染状态泄漏(render state leak)

    11、深度预渲染(z prepass),关闭像素着色器并仅更新深度缓冲,GPU便会使用特设的双倍速度的渲染模式。在此渲染步骤中,不透明物体可按从前至后的顺序渲染,使尝试缓冲的写入次数变得最少。

    12、渲染半透明几何物体时,我们必须接受频繁切换状态的成本。

    13、对于大量物体的场景,全使用平截头体剔除每个这些物体,通常难以置信地耗费时间资源。通常精心设计场景图(scene graph)数据结构,可以迅速丢弃大量完全不接近摄像机下截头体的世界部分。如四叉树、八叉树、BSP树(binary space partitioning, BSP)

    14、对于有室外平坦地形的游戏,四叉树非常合适。对于内容密集场景,反入口系统非常合适。

  • 相关阅读:
    什么是Python???
    python中闭包详解
    python类中的__init__和__new__方法
    python中不需要函数重载的原因
    装饰器详解
    IDEA中导入非maven项目(从eclipse中迁移过来的)
    CLion、cmake、mingw、openCV安装
    跨域问题的一些思考
    maven中jar包手动导入
    对于序列化的理解
  • 原文地址:https://www.cnblogs.com/tekkaman/p/3633524.html
Copyright © 2011-2022 走看看