图形渲染基础-GPU驱动的渲染管线

GPU Driven ,它更进一步地将渲染过程的控制权交给GPU。在GPU Driven的模式下,GPU不仅负责绘制图形,还负责决定何时以及如何绘制这些图形。这种技术可以使图形渲染更加高效,因为它减少了CPU的负担,允许GPU更好地利用其并行处理能力。

1.常用渲染的问题

  1. 由于cpu的核心数量有限,图元剔除效率相当低下,即便传统GPU提供硬件遮挡剔除功能,由于需要将剔除的结果回传给cpu计算drawcall数量,回传的效率非常慢导致效率低下;
  2. drawcall数量太多,导致效率低下;

2.GPU Driven解决的问题

  1. 剔除--不只是offload了cpu的工作,进一步在gpu上做更aggressive的cull,配合IndirectDraw技术不用将剔除结果回传给cpu。
  2. 提交--通过IndirectDraw技术,理论上可以一个drawcall提交所有的图元,根据实际情况可以折中了处理。

3.其他技术

IndirectDraw ,它允许GPU根据某些参数自行决定绘制多少个实例,而无需CPU的参与。这种方法可以大大减少CPU和GPU之间的通信,从而提高渲染效率。

IndirectDraw 不同于其他的Draw,不需要指定Primitive Count ,Instance Count 来在Cpp中明确指定这次绘制GPU要绘制多少Primitive,多少Instance,而是通过传入一个 IndirectArgsBuffer 来决定这次绘制的PrimitiveCount和InstanceCount , 而 IndirectArgsBuffer 通常都是 ComputeShader 进行填充,IndirectArgsBuffer 则会记录PrimitiveCount和InstanceCount。

相关推荐

  1. 图形渲染基础-GPU驱动渲染管线

    2024-07-10 17:18:06       12 阅读
  2. 图形渲染基础-Unity渲染管线介绍

    2024-07-10 17:18:06       12 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 17:18:06       5 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 17:18:06       5 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 17:18:06       4 阅读
  4. Python语言-面向对象

    2024-07-10 17:18:06       5 阅读

热门阅读

  1. 数据库的基本概念

    2024-07-10 17:18:06       11 阅读
  2. 图形渲染基础-Unity渲染管线介绍

    2024-07-10 17:18:06       12 阅读
  3. spring xml实现bean对象(仅供自己参考)

    2024-07-10 17:18:06       10 阅读
  4. Tomcat异常处理【Spring源码学习】

    2024-07-10 17:18:06       14 阅读
  5. Leetcode101 判断二叉树是否对称

    2024-07-10 17:18:06       7 阅读
  6. 【深入剖析】Kylin架构全景及其组件详解

    2024-07-10 17:18:06       9 阅读
  7. poi导出值班excel

    2024-07-10 17:18:06       9 阅读