==overview==

随着硬件的发展,我们可以看到GPU的计算能力远远的把CPU抛在后面,所以把更多的CPU端的计算放在GPU端,可以说是一个行业一直努力的方向。
渲染端cpu上面,一直以来,剔除和提交drawcall都是cpu做的,这部分一方面cpu可怜的计算力只能做的很粗糙,一方面消耗颇高,导致国内游戏行业谈性能必谈drawcall数量。
这部分离GPU很近,所以当然要先下手了。
其实早在PS3时代,强劲的spu,一定程度上我们可以理解为是一个更通用的GPGPU,就承担了这个任务,更激进的剔除和替代cpu进行drawcall提交,都让性能在cpu有质的飞跃,gpu也同时受益。

从dx11开始,都支持渲染的对象的部分参数由GPU来生成,可以说GPGPU来做这个事情的条件就也成熟了。
整体上在性能上的收获是非常大的。
从15年的siggraph开始,ubi和EA都相继做了不少的分享:

  • siggraph15, < GPU-Driven Rendering Pipelines> @ ubisoft
  • gdc16, < Optimizing the Graphics Pipeline With Compute> @ EA
  • gdc18, TerrainRenderingFarCry5 @ ubisoft

总的看来,GPU driven pipeline是有两个部分:

  • 剔除–不只是offload了cpu的工作,进一步在gpu上做更aggressive的cull
  • 提交–目标是一个drawcall结束战斗,根据实际情况进行折中了

==剔除==
这部分是通过gpgpu来先对要渲染的object进行剔除,这里ubi和ea都分成两个level来做,cluster和triangle

=cluster level cull=

把mesh分成固定的一些cluster,比如6400 vertices就分成100个cluster,每个cluster 64vertices,然后进行bound和orientation的cull。

=triangle level cull=
这里的backface,small area triangle都是老生常谈。
depth buffer这个,可以
- 在pc上使用cpu software rasterizer
- depth prepass, 然后downsample
- 使用上一帧的depth buffer做一个reprojection
使用其中的1个或几个组合。

==提交==
这里普遍的遇到项目老代码的问题,如果是dx12或者基于virtual texture的项目会简单些。
简单讲,就是要绑定的资源如果非常不同,还是难以硬放在一起来渲染。
这里< assassin’s creed:unity >就是没法改的彻底,所以还是依据material来batch,那么可以说gpu driven的就相当不彻底。
而redlynx,pipeline是有比较重的virtual texture,farcry5的地形有virtual texture,那么资源就不需要改变绑定,那么就可以一个drawcall搞定一切,达到一个更彻底的gpu driven的程度。
dx12对此有更好的支持,可以更彻底的gpu driven了。

==效率对比==

  • 刺客信条,应该说几个paper里面受益最少的,但也非常的可观

    • cpu 比前一座,10x的obj,但是cpu却快了25%
    • gpu也少渲染了20%到80%的triangle
      farcry5
  • gpu把quadtree traverse到lod map以及各种cull,0.1ms搞定。。。比cpu真是绝对优势

GPU驱动的渲染pipeline相关推荐

  1. android 系统gpu 调试_【资讯】高通公布首批可OTA更新GPU驱动手机:谷歌Pixel 4/三星S10在列...

    文章转载自:iT之家 原文链接: https://www.ithome.com/0/479/483.htm (IT之家3月25日消息) 谷歌今天宣布了一系列面向游戏开发者的新工具:Google Pla ...

  2. 小米10性能再进化!小米带来国内安卓系统GPU驱动首次更新——初阶GPU及其驱动升级认识

    去年12月,高通宣布率先开放 GPU 驱动更新,骁龙865.骁龙765等系列将在后期获得公开的 GPU 驱动更新,首批支持的机型有小米10/10Pro和 Redmi K30 Pro等.基于此点,前些时 ...

  3. GPU、GPU驱动、OpenGL、游戏引擎之间的关系

    游戏引擎使用OpenGL渲染,OpenGL调用显卡驱动告诉GPU干活,GPU经过各种计算把最终的图像渲染出来. 游戏引擎:用于制作游戏或其它实时交互交互图形程序的软件,大多数游戏引擎都包含了渲染.UI ...

  4. GPU图形图像渲染原理

    目录 引言 GPU 历史 GPU 图形渲染流水线 GPU 存储系统 GPU 流处理器 CPU-GPU 异构系统 GPU 资源管理模型 CPU-GPU 工作流 屏幕图像显示原理 引言 原文链接 http ...

  5. ubuntu 14.04 双显卡安装NVIDIA GPU驱动+CUDA+编译配置caffe

    ******************************** 安装ubuntu************************* 1.在bios里设置使用集成显卡 2.安装ubuntu 14.04 ...

  6. CentOS7安装cuda及GPU驱动--基于runfile文件

    首先要说明的是驱动和cuda是两回事,驱动是介于cuda软件库和硬件之间的程序,在通常安装的cuda Toolkit中是存在驱动的,所以我们通常在安装的时候可以不单独下载驱动,但是软件包中的驱动版本较 ...

  7. 手把手教你在 Ubuntu16.04 安装 GPU 驱动 + CUDA9.0 + cuDNN7

    点击上方"AI有道",选择"星标"公众号 重磅干货,第一时间送达 如果你的电脑安装了 Ubuntu16.04,而且电脑自带一块 NVIDIA GeForce 的 ...

  8. [译]基于GPU的体渲染高级技术之raycasting算法

    [译]基于GPU的体渲染高级技术之raycasting算法 PS:我决定翻译一下<Advanced Illumination Techniques for GPU-Based Volume Ra ...

  9. windows 检查cuda安装_Windows云主机GPU驱动-CUDA安装使用

    IE安全相关配置 如果打开浏览器无法正常下载,则需要设置Internet Explorer增强的安全配置.设置如下:打开"服务器管理器"; 点击"本地服务器": ...

最新文章

  1. html5+ mui框架 微信授权登录后跳回app无任何回调事件
  2. [异常处理]class kafka.common.UnknownTopicOrPartitionException (kafka.server.ReplicaFetcherThread)
  3. 皮一皮:工作再忙,也记得陪陪孩子...
  4. python扫描目录下文件_Python扫描目录读取文件,不考虑子目录
  5. 为什么vs数据库中文显示问号_在vs2008中注册页面中的中文字符写入数据库的后中文会变成问号...
  6. [IoC容器Unity]第三回:依赖注入
  7. forkjoin_应用ForkJoin –从最佳到快速
  8. 同时使用传入和传出连接时,相互TLS身份验证存在Java问题
  9. (14)System Verilog范围随机函数
  10. [原]最大流, 最小分割分析
  11. c语言常用的100个程序,100个经典C语言程序,大家可以进来看看。
  12. linux+ARM学习路线
  13. linux定时器改变hz,linux定时器HZ和Jiffies
  14. Spring Boot (Vue3+ElementPlus+Axios+MyBatisPlus +Spring Boot 前后端分离)
  15. 毫米波雷达技术及应用大解析
  16. 13 标准模板库STL【C++】
  17. C语言:Fibonacci数列的递归解法和非递归解法
  18. 论文中引用github项目
  19. 多语言适配之阿拉伯语
  20. 芒果iOS开发面试题答案

热门文章

  1. Jetson开发实战记录(一):Jetson家族的基本介绍
  2. 目标检测算法——YOLOv5/YOLOv7改进之结合Swin Transformer V2(涨点神器)
  3. 【vue】中英文切换(多语言国际化)
  4. 复杂链表的复制(Java)
  5. 无人车系统(十一):轨迹跟踪模型预测控制(MPC)原理与python实现【40行代码】
  6. 关于vcard通讯录格式解析
  7. java case4 加油站卡片抽象类写法
  8. 【git】设置代理 用户名 密码
  9. android 行 64,android缺陷分析:内核空指针
  10. 基于VB的Catia的二次开发:(1)启动Catia