为什么今天要使用软件渲染而不是硬件渲染?


13

相对于CPU或软件渲染,我认为是?

就像您将使用OpenGL或Direct X一样,当前所有渲染通常都不会基于GPU吗?

有人可以在这里给我一些信息,找不到任何合适的答案吗?

Answers:


7

您已经清楚地知道什么是GPU渲染...让我回答您似乎要问的问题。

传统上,硬件渲染带有非常复杂的污名。这在很大程度上归因于应用程序编程接口(API)的设计,而这些应用程序并未很好地掩盖复杂性。也就是说,学习曲线很陡。部分原因是由于了解到,编写这些API的3D应用程序要比编写2D应用程序复杂得多。关于接口的复杂性,我指的是OpenGL和DirectX之类的接口。关于3D与2D,我指的是构建3D场景所涉及的数学和几何,以及未经训练的头脑可以解决2D问题的简单性。

但是,近年来,不仅学习材料变得更加可用,而且包装了这些接口的底层复杂性的许多库也变得可用,并降低了进入门槛。由于可视化,流畅的用户界面和低功耗设备的性能越来越重要,所有这些都反馈到人们越来越感兴趣的周期中。

因此,软件渲染和2D渲染对于那些刚接触图形和/或想要创建产品的人来说,是不错的切入点和重点领域。至少在2D方面仍然适用;技术已在很大程度上弥补了将2D渲染引入GPU的空白。


20

这里有一些非常好的答案,因此仅作补充。

功能是软件渲染背后的主要推动力。答案之一中提到了这一点,但是我要提出相反的观点:软件渲染实际上比硬件渲染更有能力,而不是更少。

尽管使用OpenGL的人可以对许多硬件中可能不存在的功能进行软件仿真,但是使用硬件通常会受限于硬件本身的功能。这意味着,如果您尝试使用Feature X但硬件不支持它,则将发生以下两种情况之一:您将退回到软件仿真(典型的OpenGL方案),或者不了解完全使用它(典型的D3D场景)。

使用软件渲染,您可以自己编写代码。您可以操纵事物并完全控制发生在像素级别的事件。举一个过去爆炸的例子,Quake早在1996年就在软件中实现了像素着色器,当时3D卡(当时不被称为“ GPU”)几乎不能光栅化数十个纹理三角形。

当前的GPU也是这种情况,但是图形流水线的重要部分仍然以固定功能公开(甚至根本不公开)。

软件渲染可以更好地扩展。直到最近,我们才看到多GPU设置变得切实可行,但是软件可以跨许多服务器中的许多CPU内核进行扩展。您可以拥有专用于此的整个服务器场,而专业渲染场仍将使用软件渲染。

软件可以公开不同的渲染范例。当前的硬件非常关注于三角形/顶点/片段/栅格化范例。这是选择一件事并对其进行优化直到它发出怜悯之声的情况。对于例如光线追踪,GPU仍然是一个糟糕的选择,光线追踪通常在软件中实现。

当然,当直接进行苹果之间的比较时,只要我们在比较GPU更强大的领域,GPU就会在一周的任何一天击败软件。但这并不是说它们在每个领域都更加强大。尽管如此,就本SE网站而言,使用硬件通常是可行的方法,但请注意,有一些用例也可以使用软件。


8
+1代表“软件渲染实际上比硬件渲染更有能力,而不是更少。”
concept3d 2014年

10

就像您猜测的那样,使用图形处理单元(也称为视频卡)来渲染图像是硬件或GPU渲染。相反的是使用CPU的软件渲染

当没有(合适的)GPU可用时,软件渲染通常用作备用。但是,由于GPU数量级较快,因此软件渲染几乎永远不会有用,因为CPU通常将无法实时渲染图像。如果需要高精度,或者需要非常复杂的公式来渲染图像,则软件渲染很有用。由于CPU比GPU具有更高的通用性,因此具有更多的功能。但是,这种论点正变得越来越无效,因为当今的GPU可以处理越来越复杂的任务,并且不再局限于表示数字的32位浮点数。


2

我认为这是一个非常好的问题。

我能想象的是:

  • VRAM比一般RAM存储器受到更多限制。在GPU渲染的情况下-每个纹理都是一个问题。您可以在RAM中平均存储大约4到8倍于VRAM的数据。当然,此方案假设没有系统负责从RAM / VRAM中释放/推送未使用/所需的纹理。

  • 在多线程方面,使用软件渲染要容易得多-无需共享上下文

  • 如果要进行2D图形处理-通常大多数框架都进行脏矩形评估的实现-解决许多性能问题的方法。

尽管如此,使用OGL / D3D进行渲染仍可提供更多性能和可能性。着色器可以完成令人惊奇的事情,而使用软件渲染几乎是不可能的。

但是诸如使用颜色键的blitting之类的技术却具有自己的感觉,就好像您是计算机图形世界的起源一样。

我认为了解软件渲染至少是件好事。这确实是一个非常令人兴奋的世界,更不用说这是我们今天所看到的一切的根源。


1
您不需要硬件加速即可运行着色器。OS X 10.9附带了功能完整的GL4软件实现。对于软件渲染而言,该性能令人难以置信。它不是到这个地步,你可以切实发挥尖端的游戏(是公平的,也不是GPU的苹果船舶他们的产品),但它远远比使用类似Direct3D的参考光栅比较实用。实际上,您可以使用工作软件来运送它。
Andon M. Coleman'4

@ AndonM.Coleman并非每个人都使用Apple,而且我不知道在Linux和Windows上支持着色器的软件渲染器。
luke1985 2014年

1
那不是我的意思。在OpenGL的实现中,功能齐全的着色器完全在CPU上运行。苹果公司是开发商的事实在很大程度上无关紧要。您的答案给人的印象是,您认为必须拥有GPU才能在OpenGL中运行现代着色器。
Andon M. Coleman

@ AndonM.Coleman这几乎是正确的,因为在80%的情况下,您必须这样做。
luke1985

2
着色器可以通过软件渲染轻松实现,即使Tomb Raider 1和Quake 1都具有像素着色器也是如此。恰恰相反,CPU可以提供比当前GPU的有限顶点/片段流水线更多的控制权。
lama12345 '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.