上一期我们简单介绍了离线渲染、实时渲染、云渲染的基本概念。可以参考上一篇文章:干货|四个效果图是什么?终于有人明确表态了!(上)。
我们继续说混合渲染。
渲染混合渲染字面意思是一种不是单一方法的渲染机制。这就使得这个词,没有完整的标准,只有准确的定义。首先我们需要明白,渲染的最终目的是呈现一个画面,无论是图片、视频还是实时交互场景。对于这个最终的渲染结果,如果在渲染过程中采用了很多方案,可以说是混合渲染。我们从不同的角度总结了几种混合渲染的形式。我们还是不讨论具体的技术实现细节,只是为了方便理解概念。
基于管线的混合渲染基于流水线的混合渲染是指在一个渲染流水线中,会使用不同的计算负载模式来完成渲染工作。目前计算承载方式有光栅化(包括顶点着色器和片段着色器)、计算着色器和光线跟踪着色器。
在渲染流水线中,最基本的计算承载方式就是光栅化。原则上,光栅化是输出渲染内容的整个渲染过程。同时,过程中的顶点着色器和片段着色器也可以用于一些计算处理。然而,光栅化发生在渲染过程中,其中有许多固定功能,如剔除、深度测试、颜色混合等。所以用栅格化来计算其实是“非特定的”,效率会比较低。光栅化对于一些光线不是很复杂的场景还是可以胜任的。但是一旦光线复杂,就无法胜任复杂光线算法,所以渲染效果不尽如人意。目前WebGL只具备光栅化需要的Vertex Shader和Fragment Shader(Extension版本除外),计算能力有限且不够灵活,渲染效果也不会特别优秀。WebGL为了实现比较好的渲染效果,都是通过预烘焙的方法,将效果附加到贴图本身,以静态的方式进行展示,从而失去了对复杂光线变换的实时应对能力。
为了解决光栅化计算效率低的问题,现代图形API都提供了计算着色器,即Compute Shader。WebGPU也应用了现代图形API的设计原则,同样支持Compute Shader。Compute Shader本质上是一种通用计算能力(GPGPU),完全用在Compute Pass中,是一种“专一”的计算单元,很像CUDA(虽然CUDA可以通过NVIDIA的显卡实现硬件芯片级加速,所以计算性能更高)。有了这种通用的计算能力,就不再是光栅化中的“模拟”计算,而是专业的计算能力。比如我们在光栅化中使用片段着色器来模拟一些算法,这些算法只能限制在二维平面坐标系中,而计算机着色器则没有这样的限制,而且更加灵活快速。
光线追踪是几十年前就有的技术,但由于计算量太大,无法实现实时渲染。由于RTX显卡的出现,实时光线追踪的概念再次受到关注。光线追踪是路径追踪的一种简单形式,但是这两个概念本质上都是一种数学算法。光线跟踪着色器是专门为光线跟踪的数学算法而设计的,它是许多特殊着色器模块的组合。下图显示了RTX光线跟踪的体系结构:
https://developer.nvidia.com/rtx/ray-tracing
由于光线跟踪只是一种数学算法,它可以在任何语言和编程环境中实现。如果只看图形领域,可以用CUDA,碎片着色器(OpenGL,Web GL),计算机着色器(WebGPU,Vulkan,Metal,DX11/DX12,OpenGL扩展),RXT(DX12/DXR,Vulkan)来实现光线追踪算法。既然光线追迹算法可以通过上述方式实现,为什么RXT又要引爆这个概念呢?原因是它可以实时实现光线跟踪算法。RTX显卡对光线追踪这一非常重要且特殊的渲染算法做了硬件级加速。硬件芯片可以在光线追踪的过程中直接运行上面提到的各种着色器模块(可以理解为重新设计CUDA的通用计算芯片,优化成更适合运行光线追踪算法的芯片),从而在3D场景中实时完成光线追踪计算结果,渲染出更好的3D图像。目前苹果的M1芯片还暂时不支持对光线追踪算法的硬件加速,所以Metal还是通过类似于Compute Shader(Metal Performance Shaders)的方法来优化光线追踪算法。WebGPU也会在未来的版本中,加入对于RTX的支持,我们一起期待!
介绍了三种计算方法:光栅化、计算着色器和光线跟踪着色器。两者之间没有替代品,也没有完美的方法。我们应该针对不同的场景使用不同的方法。所以我相信混合渲染的概念大家都比较清楚。只要是不同渲染方式的渲染管道混合,我就可以理解为混合渲染的一种表现。
https://developer . NVIDIA . com/blog/video-series-shiny-pixels-and-beyond-real-time-ray tracing-at-seed
基于数据的混合渲染基于数据的混合渲染是指对不同的3D资源(模型、场景等)进行分类。)在一个3D场景中,相当于将3D资产数据拆分,将不同类型的3D数据放入不同的渲染节点进行渲染,最后通过网络通信技术将数据合并到一个需要显示输出的节点进行最终渲染。
总的来说,这种基于数据的混合渲染和我们上一期讲的云渲染有点关系。因为这种形式的数据拆分可以让我们很自然的想到把一些复杂度高、计算要求高的任务放到并行计算能力更强的云端,用渲染集群来计算。我们的个人终端只渲染计算量相对较小的任务。无论是将云渲染的结果最终以视频或图片的形式传输到客户端,还是只将复杂计算的结果返回给客户端,再由客户端进行最终的呈现,都会大大降低客户端的成本。
随着5G通信技术的快速发展,边缘、端、云协同渲染等更加多样灵活的渲染架构得到了尝试和验证。这种渲染方式可以充分利用终端和终端附近边缘节点的计算能力,避免全云渲染可能遇到的“卡顿”问题。而且还是“进、攻、退、守”的建筑设计。通过渲染任务的解耦设计,可以在全终端渲染和全云渲染之间灵活切换部署,从而适应更复杂的渲染需求。
同济大学贾金元提出的协同混合渲染网络体系结构。
http://www . cgn . net . cn/CMS/news/100000/000000029/2022/1/6/d1d 4245469124 bffbcecb 83 a9 CB 4610 b . shtml
基于硬件的混合渲染基于硬件的混合渲染是指CPU和GPU可以同时参与渲染任务的混合渲染模式。这里我们指的是V-ray的混合渲染模式。首先,纯GPU渲染有两个问题:1)调试困难:如果GPU程序出错,基本会返回一个内核转储(即内核挂起),不会有相应的错误信息提示。2)无法充分利用CPU的性能:之前的渲染工作基本都交给GPU来计算。CPU将任务提交给GPU后,CPU本身实际上会有一段时间处于空闲状态,这是对计算能力的浪费。为了解决这两个问题,V-ray提出的混合渲染可以让CUDA同时在CPU和GPU上运行,既可以充分利用CPU向GPU提交任务后自身的空闲时间,也可以进行渲染计算。经过测试,V-ray的混合渲染平均完成时间比纯GPU渲染缩短了20%左右。这里需要强调下,这种CPU和GPU同时进行的混合渲染模式,在WebGL的标准下是无法实现的,因为它采用的是全局状态机模式,CPU必须要等待GPU的运行结果,才能继续做下一个任务,简单说就是同步机制。而WebGPU采用了现代图形API的方法,完全遵循异步形式,这样才具备实现这种混合渲染的基础能力。
https://www . chaos . com/blog/understanding-v-ray-混合渲染
基于框架的混合渲染基于帧的混合渲染是指渲染过程可以从前一帧转移到另一个全新的帧。2019年,Unity提出了面向数据的技术栈(DOTS)技术,并通过混合渲染器实现。DOTS的核心是ECS(实体、组件、系统)的架构设计,这也标志着ECS框架在游戏引擎中的应用(这里不讨论ECS的细节和优缺点)。Unity的混合渲染器带来的混合渲染实际上是指渲染过程可以从之前的OOP模式(面向对象编程)转换到DOP模式(面向数据编程),也就是在ECS中将游戏对象转换成实体。最终的目的就是利用ECS的数据连续内存存储特征,提高缓存命中率,同时引入多核并行计算的优势,加快渲染过程。
https://docs . unity 3d . com/Packages/com . unity . rendering . hybrid @ 0.50/manual/index . html
至此,我们已经介绍了混合渲染的一些常见形式。综上所述,混合渲染没有固定的定义。只要“渲染”是混合的,就可以称之为混合渲染。
目前已经推出离线渲染、实时渲染、云渲染、混合渲染。需要强调的是,它们之间使用的很多技术和场景是相互重叠的,并没有单一的标准。我们希望如果你再遇到这些概念,或者一些3D渲染引擎产品,可以根据这些渲染分类快速定位分析,从而更好的帮助我们理解学习,解决我们的问题。这就够好了!
我们在以后的文章中,会分享下对于云渲染未来的一些思考,期待大家继续关注。
欢迎更多的小伙伴可以加入我们的Orillusion社区,陪我们一起见证WebGPU的发展。我们会尽自己最大的努力把最干货最前沿的WebGPU技术分享给每一位社区成员,也诚心的希望大家为Orillusion开源社区做出自己的贡献。我们一直坚信,开源社区的技术留痕是每一位技术人员最崇高的追求。因此,我们尊重,我们认可,我们更期待,加入Orillusion,让我们共同进步!
——Link uncharted, 链接未来世界
画面渲染模式选哪个好
现在的效果图和动漫、影视制作越来越复杂。不管前面怎么操作,最后都要渲染出来。一个好的效果图往往需要几个小时才能渲染出来,动画、影视甚至更长。数百或数千小时是可能的。面对如此巨大的成本,云渲染应运而生。
云渲染是将本地渲染移动到云的过程。可以节省地方占用,解放电脑,操作简单方便,所以深受设计师的喜爱。随着云渲染的使用越来越多,各种云渲染平台应运而生。这么多平台,哪家好?今天就来说说。
Render 100是我用的性价比最高的平台。15分20分60分80分渲染小图对他们来说非常合适。注册时填写邀请码1a12,有30元礼包和两张免费渲染券。因为他们用的是云服务器,渲染速度很快,稳定性在其他方面比得上云轩这样的老平台。他们不排队渲染。最新支持的是max2023 vr60020 cr9,vr progressive和ACEScg工作流。百分比支持cr和森林插件7.43的lut加载,工具箱功能很多。强烈建议尝试一下。
Render 100的缺点也很明显,就是支持的软件太少。我听说他们的C4D和玛雅正在开发中,我希望他们能尽快上线。
底纹云是一个老平台,相对于另一个资质更老的平台,不够稳定。在明暗云渲染CR图像时,往往次数不够,图像不清晰。这个渲染100的时候比较好,次数满了。之前,他们有0.66元的首小时和特价模式,但今年下架了。线上新品每日特价一天只能提五次,超过其他模式,属于变相涨价。这个每日特惠5小时内封顶8元,超过5小时就一直关闭不封顶,不划算。要渲染的朋友关注一下。
过家家是我见过最贵的平台。可能是因为卖设计资源和课程是他们的主要收入来源,所以不注重渲染。如果你在它们里面印一个,你可以在100个里面印三个。而且,他们经常和max发生矛盾。上传的时候经常卡在解压和匹配上,预习不好。唯一的好处就是金牌会员的第一张照片是免费的。
炫云是国内最早的云渲染厂商,做了7-8年。它的稳定性没什么可说的。渲染基本没有问题,上传下载最快。可以说我没有渲染100就用了,但是它的缺点就是贵。因为它用的是物理机,模型复杂,每次渲染都是随机分配的,所以时间有快有慢。除了渲染费,他们还收取其他费用,如内存费和
纵观四大平台,我觉得Render 100还是很适合的。也可以多测试一下。注册Render 100记得填写邀请码1a12。有30元礼包和两张免费渲染券。别忘了。