blender 2021年度最佳渲染器(渲染引擎)LuxCoreRenderLuxCoreRender不仅是arcade中最古老的、不偏不倚的、物理上正确的渲染引擎(承载着可追溯到2007年的古代LuxRender的外壳),也是最强大的引擎之一。LuxCoreRender也是一个开源项目,这使得它在这方面有类似Blender的精神。
LuxCoreRender的设计理念是在计算和渲染时,采用无障碍的、完全物理精确的模型。
开箱即用的结果是一些最令人印象深刻的渲染。它的功能集甚至比“传统的”路径跟踪设备更多,即使在最具挑战性的场景中,它也可以计算光线信息,因此它更强大。
这使得LuxCoreRender在渲染场景方面具有不可思议的强大功能,可以专注于强折射、焦散或昏暗房间的对象。
它还有轻分组的功能,在循环严重缺失的时候。
虽然这种不妥协的方法最初意味着耗时的渲染,但性能和GPU渲染的更新以及强大的降噪功能都比渲染性能有了很大的提升。
LuxCoreRender与Blender配合也很好。它可以作为一个插件(不像辛烷),并可以解析循环材料节点(虽然它确实有自己的最佳性能节点以及素材库!)
镭龙ProRenderRadeon ProRender是AMD公司的免费路径跟踪渲染器。
它以其创新的“全谱渲染”模式将自己定位在Cycles和Eevee之间。
该模式利用其Vulcan API后端将光栅化(例如Eevee)与光线跟踪(例如loop)相结合,以创建视觉上吸引人的渲染,同时仍具有交互式实时视口体验。
在实践中,光线跟踪的元素(如反射和阴影)与基本光栅图像相结合,试图实现完美的折衷。
ProRender有一个强大的Blender插件,它带有一个素材库和一个Cycles-to-ProRender节点转换器。
虽然在这个阶段它可能不像Cycles那样完整,但事实证明,这个渲染器与前面提到的“全谱渲染”一起,是一个非常有趣的独特功能测试平台。
优秀的性能,如“每秒采样数”功能,可以控制视口帧率,6000系列AMD卡上的硬件加速光线追踪,快速雾化选项等。
右上角的混合渲染功能是全光谱渲染的著名之举,它将光栅化的基本图像与光线跟踪反射和阴影结合在一起。
啤酒Beer渲染引擎,建立在麦芽的后端,是一个免费开源的Blender实时非真实感(或NPR)渲染引擎,用于Blender NPR社区众筹。
啤酒渲染引擎是Blender renderer场景中相对较新的成员,因为它是在考虑到Blender功能的基础上设计的,所以它与Blender完美集成。
其目的是通过易用的层系统和基于NPR着色器的基于特征的着色来重组着色器,从而扩展Blender的风格化渲染功能。这意味着,当使用啤酒渲染NPR场景时,您可以找到可以组合使用的边缘光、轮廓和软边缘卡通的着色器。
然而,这种易用性是由强大的可扩展性补充的,着色器可以很容易地被黑客攻击和修改为新的着色器。啤酒还处于发展阶段。如果你愿意,你可以为啤酒筹款做贡献。
Blender的其他和即将推出的渲染器在我们关注的各个开发阶段,有几个著名的渲染引擎与即将推出的Blender集成在一起。
RendermanRenderMan是皮克斯获奖的渲染引擎,并宣布将支持Blender。
凭借其重要的版本24,它将是第一个包含GPU渲染的工具,这是对最近称为Blender Bridge工具的版本的一个受欢迎的补充。
Blender Bridge工具是Blender的一个旧Renderman插件的继承者,不再维护。它承诺提供更紧密的集成,包括视口渲染,灯光链接和灯光混合支持,ILM的LAMA着色器支持,甚至油脂铅笔支持。
红移(Redshift)是Blender电影和电视剧(如Starz美神)红移中使用的强大GPU渲染器,即将登陆Blender。
目前所有红移授权商都可以使用Blender插件的测试版。虽然当前迭代的插件缺少一些功能,如light link和motion blur,但开发仍在继续,直到Blender插件具有与引擎相同的功能。
红移因为偏向架构(牺牲计算精度提升速度)而具备基于GPU的快速渲染能力。
它提供了许多控制和定制选项,可以在渲染时以您需要的精确视觉保真度和速度运行。
同时,它提供了一组令人印象深刻的功能,如体绘制、头发绘制、镶嵌和替换、特殊皮肤着色器等。
Nvidia Omniverse Nvidia发布了Omniverse,这是一个基于USD的内容创作/渲染的混合体。
尽管内容创建模块的协作模式及其集成的GPU加速动态模拟令人印象深刻,但至少可以说,渲染模块是我们特别感兴趣的。
Omniverse的渲染模块名为Omniverse RTX渲染器,它使用Nvidia最新更新的硬件和软件渲染技术,在视口中进行实时光线跟踪。坦率地说,开箱即用的结果令人印象深刻,令人麻木。
Omniverse的渲染模块还处于初级阶段,功能还远未完善。它仍然需要在生产环境中得到证明,但这是一个非常有希望的开始。
Nvidia正在整合Blender和Omniverse,虽然目前还没有发布任何消息。
AMD公司的美元九头蛇附加AMD公司发布的美元九头蛇附加搅拌机。从Blender的渲染潜力来看,它有望成为游戏改变者。
Hydra是皮克斯开发的框架,也是其美元生态系统的一部分。Hydra充当DCC之间基于美元的接口。与Hydra框架通信的渲染器称为Hydra Render Delegates,它允许3D内容创建包通过Hydra插件托管多个渲染引擎。
实际上,通过Hydra插件,Blender现在可以托管所有Hydra Render Delegate版本的渲染引擎,包括ProRender、RenderMan、Arnold、Octane、Redshift等。
该插件仍在开发中,目前由ProRender提供。
结论——Blender的最佳渲染器哪种Blender渲染器最适合你取决于你的需求。虽然很多Blender渲染引擎是免费的,但是其他的可能要花很多钱。
最后,它不仅取决于您的预算,还取决于您想要实现的风格、与其他软件的管道和工作流,当然,还有您所拥有的专业知识。
如果你已经知道如何使用红移或辛烷,因为你每天都在其他软件中使用这些引擎,那么在Blender中继续使用它们是有意义的。
如果你刚刚开始使用Blender并且还在学习,Cycles是一个有竞争力并且经过生产验证的渲染器,它可以快速学习并且有一个有用的支持社区来支持它。
3D渲染技术
随着硬件计算能力的不断增强,GPU的功能在近几年得到了前所未有的提升。无论是游戏狂热者还是不爱玩游戏的普通用户,都受到了5G和AR VR变化的不同程度的影响。有些人可能会从技术的改进中获得更好的游戏体验,而另一些人可能会在虚拟现实中找到另一种娱乐方式。比如迪士尼的裸眼3D技术,让游客体验身临其境的感觉。这些技术的基础与渲染技术密切相关,其中一些可能在虚拟现实中找到另一种娱乐方式。
单位:中国移动智能家居运营中心
渲染技术基础API
目前底层渲染常用的API接口有以下几种:
微软在微软Windows操作系统上开发的一套3D绘图编程接口是DirectX的一部分,目前被各种显卡广泛支持。它和opengl一起是计算机绘图软件和计算机游戏最常用的两个绘图编程接口之一,目前只在Windows平台上可用。
OpenGL(开放图形库或“开放图形库”)是一种用于渲染2D和3D矢量图形的跨语言和跨平台的应用编程接口(API)。OpenGL通常用于CAD、虚拟现实、科学可视化程序和电子游戏开发。
opengl的高效实现(使用图形加速硬件)存在于Windows、部分UNIX平台和Mac OS中。针对不同的平台,OpenGL开发了不同的版本,如OpenGL、OpenGL ES、WebGL等,满足了不同平台渲染界面的兼容性。
Vulkan是一个跨平台的2D和3D绘图应用程序接口(API),由Khronos Group在2015年游戏开发者大会(GDC)上首次发布。Kornas最早将VulkanAPI称为“下一代OpenGL倡议”或“glNext”,但在Vulkan正式公布后,这些名称并没有被使用。
就像OpenGL一样,Vulkan是为实时3D程序(比如视频游戏)设计的,Vulkan计划提供高性能和低CPU开销,这也是Direct3D12和AMD的衣钵所追求的目标。Vulkan与地幔的一个分支相容,使用地幔的某些成分。Vulkan旨在提供更低的CPU开销和更直接的GPU控制,其概念大致类似于Direct3D 12和Mantle。Vulkan不再使用OpenGL的状态机设计,内部不存储全局状态变量。显示资源完全由应用层管理,包括内存管理、线程管理、多线程绘制命令生成、渲染队列提交等。应用程序可以充分利用CPU的多核多线程计算资源,减少CPU等待和延迟。但问题是,线程间的同步也是应用程序的责任,这对开发者的要求更高。
在WWDC 2014上,苹果为游戏开发者推出了一种新的平台技术Metal,可以将3D图像的渲染性能提高10倍,并支持熟悉的游戏引擎和公司。Metal是一种全新的技术,专门为开发高临场感主机游戏的开发者设计,让开发者充分发挥A7和A8芯片的性能。这项技术经过优化,使处理器和图形处理器能够协同工作,以实现最佳性能。它是为多线程设计的,并提供了各种优秀的工具来将所有材料集成到Xcode中。
用OpenGL 渲染一个简单的三角形
我们已经了解了常用的图形渲染API,现在让我们来练习其中的一个。
我们的目标是通过提供的API接口渲染一个三角形,所以需要先了解一些OpenGL渲染的基础知识。
无论是OpenGL还是其他渲染API,其设计的逻辑都是将渲染过程抽象成图形管道的形式。顾名思义,渲染管道(rendering pipeline)就是通过一系列过程处理3D或2D图像,并最终在屏幕上显示出来的处理管道。类似于工厂生产猪肉罐头用的生产线,无非是哪一步做什么。让我们来看看基本装配线图(visio):
首先我们需要准备顶点数据,可以看作是顶点的数组。后续的渲染操作都是从顶点的计算开始的。一个3D顶点数据会经过坐标系变换、光照计算、投影计算等。在顶点着色器中,最终留下要渲染的顶点,并将其发送到下一步进行进一步处理。
在上一步获得的顶点数据中,将获得的顶点组装成图元(如顶点、直线、三角形、多边形等。)通过开发者配置的图元信息,然后将组装好的图元发送给几何着色器,再次细化几何图案。如果原始图元是三角形,可以通过添加顶点将其转化为多个三角形或多边形,最终新的图元信息将输出到光栅化阶段。
在栅格化阶段,会对图元信息进行采样,通过不同的算法采样得到不同的像素值,最终生成不同的像素段,供段着色器进行着色操作。
在片段着色器中,通过光栅化获得的片段在着色器中计算,输出像素值被着色。着色的片段需要经过最后一步,即测试(深度测试、模板测试等。),然后混合着色最终显示在屏幕上。
首先,我们创建一个顶点数组:
为了便于绘制,顶点的值被规范化为(-1.0f-1.0f)。然后,我们创建顶点着色器和段着色器进行渲染。
并且两个着色器会通过动态编译来编译链接GPU部分,最终生成程序使用的程序。
然后,我们将创建一个顶点属性缓冲区来存储顶点信息,
您可以创建一个顶点数组来管理顶点信息。
您可以创建一个缓冲区来存储顶点数据。然后我们绑定缓冲区并上传数据:
启用顶点属性并指定数据开始位置:
然后在主循环中调用创建的shaderProgram和VAO,绑定到当前渲染状态,通过glDrawXXX绘制图元。我们要画的是一个三角形,所以顶点是3,索引是0。
绘制后,我们可以看到以下结果:
这样就完成了一个简单的OpenGL例子,看起来一点都不复杂吗?当我们掌握了整个过程,我们就可以绘制更复杂的模型,并添加更逼真的效果。有兴趣就赶紧试试吧!