干货| 四种渲染到底是啥?终于有人讲明白了!(上)

d3e74fbd6db1cf09ebaeaa82ec937319.gif

渲染,就是将3D模型转换成2D图像,并最终呈现在屏幕上的过程。虽然这里只有一句话,但是这一句话里面包含了太多的数学、物理和计算机方面的知识,它描述了我们用计算机来虚拟化真实世界的基本逻辑。渲染过程是需要计算机进行运算且消耗时间

Rendering Wiki

https://en.wikipedia.org/wiki/Rendering_(computer_graphics)

不同的渲染分类,会用到不同的渲染引擎。比如实时渲染我们一般会用到Unity和Unreal,离线渲染我们会用到V-ray和Keyshot。但是这些技术和引擎产品都是相通的,所以Unreal的实时渲染能力也可以部署在云端,成为云渲染的体现。虽然,由于使用场景的不同,引擎本身的渲染算法都有自己的特点和优势。但是,随着硬件计算能力的发展,它们的界限也慢慢变得模糊。

常见的渲染类型有以下几种:实时渲染、离线渲染、云渲染、混合渲染。它们中间有重叠交差,也有技术区别。我们避免太多的专业性描述,尝试用浅显易懂的方式来进行解释。

实时渲染

实时渲染(Real-time Rendering)从字面的意思非常容易理解,就是我们要实时的看到渲染之后的3D物体或者场景的效果。实时,用数字怎么理解?至少24FPS:只有达到或者超过1秒钟播放24张连贯图像的速度,人眼观看时就不会形成卡顿的感觉。

一般的实时渲染场景都是带有强交互属性的,比如最常见的3D游戏《王者》《吃鸡》,或者是一些带有交互的3D应用,比如智慧城市、智慧园区的可视化项目。实时渲染的场景中,这些应用都会独立运行在我们的电脑、手机上,通过本地的硬件能力完成实时渲染的过程。因此,玩大型游戏的话,硬件性能一定要好。

c1ebe0c2735fd8456c309d73aebe7b52.gif

资料来源于网络

离线渲染

离线渲染(Offline Rendering)这个从字面意思理解,好像就是“断网”之后在做渲染,但是这种理解是不对的。离线渲染是跟实时渲染相对应的,简单说就是我们不需要实时的看到渲染效果的场景

这种场景最常见的就是我们的家装效果图。做过装修的小伙伴应该都知道,如果让设计公司出效果图一般都是要收费的(有些为了吸引客户当然也会免费),他们其实就是在做离线渲染的工作。那为什么我们不能实时的去渲染一张效果图,反而要用离线渲染的机制呢?这就要看最后的渲染效果到要多高了

16400b1007e4c3d349cf616d57aceb30.jpeg

资料来源于网络

实时渲染,虽然渲染速度快,可以实时生成渲染内容,但是渲染的效果和真实度相对来说是不可能特别高的。对于离线渲染的场景,基本都是对渲染要求非常高的,甚至是完全真实的。

比如刚才提到的家装效果图,你可能不需要立刻看到渲染图,但是如果看到的时候,发现效果不好,就可能要换其他设计公司了。另外一个最常见的就是坞影视大片、3D动画等影视场景。他们都需要达到一个非常逼真的渲染效果甚至是完全真实的场景复现,但是对实时性要求不高。所以,一般的好莱坞大片,尤其是特效非常好的那种,拍摄完成后的制作周期都非常长。比如我们耳熟能详的《阿凡达》,当时动用了40000颗CPU,104TB内存,10G网络带宽,整整离线渲染了1个多月。

f8c8c38e7bb0e0507a8eb93fca5400ed.gif

资料来源于网络

说到这大家应该会有一个疑问了,怎么可以用到40000颗CPU来进行渲染呢?什么电脑能有这么多CPU呢?其实这就是离线渲染在概念上,容易让人误解的地方:离线渲染大多数情况反而恰恰是在线

通常情况,如果我们在做家装效果图,是可以用自己的一台普通电脑去进行渲染制作的,但是自己的电脑硬件配置肯定不会特别好。因此,完成整套渲染计算的过程到最终出图是需要很长时间的,当然电脑硬件越好,时间越短。如果是专业的设计团队,虽然是需要运用离线渲染达到很高渲染效果,同时肯定也是希望出图的时间越短越好。

因此就出现了一种新的离线渲染形态:渲染农场。说到渲染农场相信很多人都不陌生,它就是在云端买了很多渲染服务器,这些服务器可以搭建成千上万颗CPU或者GPU的集群,来专门服务那些需要快速完成离线渲染的用户。

77834190abc3489b635fe70c0b3684c5.jpeg

资料来源于网络

这就是为什么《阿凡达》的渲染会用到那么多CPU的原因,当然现在基本都是采用GPU来进行渲染工作了。渲染农场其实就是搭建了渲染服务器集群,那当然就是在线。所以说,只要提到渲染农场,它是离线渲染场景中的一种渲染形式,但是实际上它恰恰是在线的。

云渲染

云渲染(Cloud Rendering),这个从字面意义理解就是在云端完成渲染的意思。但是为什么上面讲到渲染农场的时候,并没有特意强调它就是云渲染呢?

其实如果按照渲染发生的节点来说,渲染农场这种离线渲染就是属于云渲染范畴的。但是,我们通常对于云渲染的理解,一般都是在云端完成实时渲染的场景。上面我们提到的实时渲染大部分时候都是在我们自己本地的电脑或者手机上完成的,因此对于终端硬件的要求是比较高的,不然“卡顿”肯定是无法避免的。

云渲染的出现就是为了解决这个问题:让硬件性能不太好的终端也可以实时的渲染效果不错的3D内容

f6184c30ac0ed68d0c7de0304e214c94.jpeg

资料来源于网络

云渲染的基本原理是,把所有的3D渲染工作都交给云端。渲染完成后,编码成为视频实时的传送给我们的客户端,客户端就变成了一个视频播放器,对视频流进行解码和播放,这个过程中可以监听一些鼠标和键盘操作,来完成交互功能

这样大量的三维数据和美术资源不用安装到我们的手机或者电脑的客户端,而是全部在云端完成渲染,客户端只要具备看视频的性能,就可以体验具有比较好渲染效果的3D应用。对于大众来说,手机设备不用特别高配就可以体验效果很好的游戏,而且手机一般也不会发烫了目前云渲染的场景主要也是体现在游戏场景中,即云游戏。当然还包括一些对渲染质量要求比较高的3D可视化或者数字孪生项目。

ed5a6a71b7bef432cf4a2f13809f2d56.gif

资料来源于网络

说到这里,大家对于实时渲染,离线渲染和云渲染这三种不同的渲染形式,应该有基本的理解了。其实说到渲染本身,就是一个数学算法在计算机上的运算过程。它们都有各自的优劣和使用场景:

01

实时渲染

追求渲染速度,要求比较强的交互体验。所以即便在客户端硬件性能较高的情况下,也要做大量的数学算法优化,在不是特别降低渲染效果的同时,减少渲染时间,达到很好的实时性交互。

02

离线渲染

追求渲染质量,不要求实时性和交互性。追求的是极致的渲染效果,达到以假乱真的体验。因此就用最极致最优秀最贴近真实物理原理的渲染算法,来进行真实度极高的渲染过程。通过渲染农场的云端计算能力,尽量的减少渲染时间。

03

云渲染

追求相对较高的渲染质量同时,也要达到实时性要求。所以云端算力的部署和调度的能力要求会更高,让客户端配置不高的用户通过云渲染也能体会到不错的3D应用。

我们下期将继续跟大家分享关于混合渲染,欢迎大家关注~


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spark Streaming 和 Flink 都是流处理框架,但在一些方面有所不同。 1. 数据处理模型 Spark Streaming 基于批处理模型,将流数据分成一批批进行处理。而 Flink 则是基于流处理模型,可以实时处理数据流。 2. 窗口处理 Spark Streaming 的窗口处理是基于时间的,即将一段时间内的数据作为一个窗口进行处理。而 Flink 的窗口处理可以基于时间和数据量,可以更加灵活地进行窗口处理。 3. 状态管理 Spark Streaming 的状态管理是基于 RDD 的,需要将状态存储在内存中。而 Flink 的状态管理是基于内存和磁盘的,可以更加灵活地管理状态。 4. 容错性 Flink 的容错性比 Spark Streaming 更加强大,可以在节点故障时快速恢复,而 Spark Streaming 则需要重新计算整个批次的数据。 总的来说,Flink 在流处理方面更加强大和灵活,而 Spark Streaming 则更适合批处理和数据仓库等场景。 ### 回答2: Spark Streaming 和 Flink 都是流处理框架,它们都支持低延迟的流处理和高吞吐量的批处理。但是,它们在处理数据流的方式和性能上有许多不同之处。下面是它们的详细比较: 1. 处理模型 Spark Streaming 采用离散化流处理模型(DPM),将长周期的数据流划分为离散化的小批量,每个批次的数据被存储在 RDD 中进行处理,因此 Spark Streaming 具有较好的容错性和可靠性。而 Flink 采用连续流处理模型(CPM),能够在其流处理过程中进行事件时间处理和状态管理,因此 Flink 更适合处理需要精确时间戳和状态管理的应用场景。 2. 数据延迟 Spark Streaming 在处理数据流时会有一定的延迟,主要是由于对数据进行缓存和离散化处理的原因。而 Flink 的数据延迟比 Spark Streaming 更低,因为 Flink 的数据处理和计算过程是实时进行的,不需要缓存和离散化处理。 3. 机器资源和负载均衡 Spark Streaming 采用了 Spark 的机器资源调度和负载均衡机制,它们之间具有相同的容错和资源管理特性。而 Flink 使用 Yarn 和 Mesos 等分布式计算框架进行机器资源调度和负载均衡,因此 Flink 在大规模集群上的性能表现更好。 4. 数据窗口处理 Spark Streaming 提供了滑动、翻转和窗口操作等灵活的数据窗口处理功能,可以使用户更好地控制数据处理的逻辑。而 Flink 也提供了滚动窗口和滑动窗口处理功能,但相对于 Spark Streaming 更加灵活,可以在事件时间和处理时间上进行窗口处理,并且支持增量聚合和全量聚合两种方式。 5. 集成生态系统 Spark Streaming 作为 Apache Spark 的一部分,可以充分利用 Spark 的分布式计算和批处理生态系统,并且支持许多不同类型的数据源,包括Kafka、Flume和HDFS等。而 Flink 提供了完整的流处理生态系统,包括流SQL查询、流机器学习和流图形处理等功能,能够灵活地适应不同的业务场景。 总之,Spark Streaming 和 Flink 都是出色的流处理框架,在不同的场景下都能够发挥出很好的性能。选择哪种框架取决于实际需求和业务场景。 ### 回答3: Spark Streaming和Flink都是流处理引擎,但它们的设计和实现方式有所不同。在下面的对比中,我们将比较这两种流处理引擎的主要特点和差异。 1. 处理模型 Spark Streaming采用离散流处理模型,即将数据按时间间隔分割成一批一批数据进行处理。这种方式可以使得Spark Streaming具有高吞吐量和低延迟,但也会导致数据处理的粒度比较粗,难以应对大量实时事件的高吞吐量。 相比之下,Flink采用连续流处理模型,即数据的处理是连续的、实时的。与Spark Streaming不同,Flink的流处理引擎能够应对各种不同的实时场景。Flink的实时流处理能力更强,因此在某些特定的场景下,它的性能可能比Spark Streaming更好。 2. 窗口计算 Spark Streaming内置了许多的窗口计算支持,如滑动窗口、滚动窗口,但支持的窗口计算的灵活性较低,只适合于一些简单的窗口计算。而Flink的窗口计算支持非常灵活,可以支持任意窗口大小或滑动跨度。 3. 数据库支持 在处理大数据时,存储和读取数据是非常重要的。Spark Streaming通常使用HDFS作为其数据存储底层的系统。而Flink支持许多不同的数据存储形式,包括HDFS,以及许多其他开源和商业的数据存储,如Kafka、Cassandra和Elasticsearch等。 4. 处理性能 Spark Streaming的性能比Flink慢一些,尤其是在特定的情况下,例如在处理高吞吐量的数据时,在某些情况下可能受制于分批处理的架构。Flink通过其流处理模型和不同的调度器和优化器来支持更高效的实时数据处理。 5. 生态系统 Spark有着庞大的生态系统,具有成熟的ML库、图处理库、SQL框架等等。而Flink的生态系统相对较小,但它正在不断地发展壮大。 6. 规模性 Spark Streaming适用于规模小且不太复杂的项目。而Flink可扩展性更好,适用于更大、更复杂的项目。Flink也可以处理无限制的数据流。 综上所述,Spark Streaming和Flink都是流处理引擎,它们有各自的优缺点。在选择使用哪一个流处理引擎时,需要根据实际业务场景和需求进行选择。如果你的业务场景较为复杂,需要处理海量数据并且需要比较灵活的窗口计算支持,那么Flink可能是更好的选择;如果你只需要简单的流处理和一些通用的窗口计算,Spark Streaming是更为简单的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值