虚幻引擎学习之路:渲染模块之材质系统

 虚幻引擎学习之路:渲染模块之材质系统

接上文:虚幻引擎学习之路:渲染模块之光照系统
在本篇文章中,我们继续介绍渲染模块的另一重要部分:材质系统。

虚幻引擎学习之路:材质系统

材质描述了场景中物体与光照进行交互的过程,它是决定物体表面外观的最重要部分之一。Unreal 4引擎的材质系统为开发者提供了丰富的功能,使得开发者能够非常便捷地设计出具有真实感的场景和角色。

本文将在接下来的内容中对Unreal 4引擎的材质系统功能进行逐一介绍,其中主要分为几个部分:




在介绍前三部分内容时,本文会根据需要与Unity引擎功能的相似性进行比较。

一、材质编辑

在Unreal 4引擎中创建材质可以通过“Content Browser”中的“Add New”按钮或者右键弹出菜单中选择Material创建,如下图所示:

虚幻引擎学习之路:渲染模块之材质系统


然后,双击“Content Browser”中的材质资源,即可打开材质编辑器。

传统引擎的材质系统对于材质编辑的支持都是需要开发工程师和美术设计师合作完成。通常情况下,技术美术(Technical Artist)或图形程序工程师编写和修改Shader代码,然后美术设计师提供输入纹理以及调试Shader参数。Unreal 4引擎则提供了一套更为方便的编辑方式,使得美术能够几乎不依赖于程序员制作出较为理想的材质资源。这种编辑方式类是一种似于Blueprint的节点图。在编辑材质时,只需要用引擎提供的节点和连线即可制作出逻辑较为复杂的材质效果,如下图所示:

虚幻引擎学习之路:渲染模块之材质系统

(上图取自Unreal 4官方网站)
其中,上图左边是材质编辑的预览,右边是材质节点图。该节点图中的节点在编辑完成后会被自动替换成HLSL代码段,并生成相应的Shader代码在实时渲染时使用。在调试过程中,编辑完节点图并保存后,即可在场景视图中看到最新的结果。

Unity引擎原生仅支持通过修改Shader代码的方式制作新的材质。但在Unity引擎Asset Store中有第三方插件Shader Forge提供了类似的编辑功能【1】,如下图所示:

虚幻引擎学习之路:渲染模块之材质系统

(上图取自Unity Asset Store 【1】)
此外,在Unreal 4引擎中的材质编辑界面的“HLSL Code”页面中可以查看由节点图生成的代码,如下图所示:

虚幻引擎学习之路:渲染模块之材质系统


在“Stats”页面中可以看到当前Shader的Instruction和Texture Sampler的数目,如下图所示。这是一个直观简单、但却很实用的功能。Unity引擎暂时还未原生支持该功能,研发团队需要使用第三方工具来自行进行计算。

虚幻引擎学习之路:渲染模块之材质系统


除了使用节点图进行材质编辑,Unreal 4引擎也支持直接采用HLSL代码进行编辑。其详细内容可参考Unreal 4官方网站。

材质编辑Unreal 4 vs Unity小结

相比较而言,Unreal 4引擎原生提供了非常方便的节点图交互方式,Unity引擎通过第三方工具也可以达到类似的效果。

二、材质模型

与Unity引擎5.x的Standard Shader类似,Unreal 4引擎的材质系统使用了当前游戏渲染中非常流行基于物理的渲染材质(Physically Based Rendering,以下简称PBR)模型。因此,它们都只需要少量的输入参数,就能表达丰富的材质外观,如下图所示:

虚幻引擎学习之路:渲染模块之材质系统


其中,左图是Unreal 4引擎的材质系统节点图中的基础节点,其白色圆圈表示的引脚表示可设置的输入参数,通过设置不同的输入参数可以达到不同的材质效果。右图是Unity 5.x的Standard Shader材质设置界面。两者大部分参数表示含义是相似的,可通过以下各参数的对应关系来进行理解(Unreal 4 Unity):

用户喜欢...

机器学习更接近你身边的微控制器

机器学习(ML)是人工智能(AI)的一个分支,多年来一直在电子系统中应用。但是,直到现在,实施ML所需的处理能力大部分都被限制在基于云计算的活动中。然而,这种情况即将发生变化,随...


机器学习中如何选择分类器

在机器学习中,分类器作用是在标记好类别的训练数据基础上判断一个新的观察样本所属的类别。分类器依据学习的方式可以分为非监督学习和监督学习。 非监督学习顾名思义指的是给予分...


你的深度学习应用可能存在安全风险!

导语:深度学习框架和应用中存在许多漏洞,其中15个漏洞拥有CVE编号。漏洞的类型有堆溢出、数字溢出、Use-After-Free漏洞等。 360安全实验室(肖奇学 、Deyue Zhang)、佐治亚大学(李康)和弗...


虚幻引擎学习之路:渲染模块之全局光照明

之前为大家分别介绍了Unreal 4引擎中渲染模块的光照系统、材质系统和相机图像后处理,在本篇文章中,我们将为大家介绍渲染模块的全局光照明这部分内容。 在此,特别感谢Unreal中国团队对...


虚幻引擎学习之路:动画模块之基础篇

之前我们陆续为大家详细介绍了Unreal 4引擎的渲染模块(包括光照系统、材质系统、相机后处理和全局光照明),接下来我们将讲解动画模块的基础功能。 动画模块是游戏引擎中的重要部分,...


深度学习中消失的梯度

了解深度学习的同学可能知道,目前深度学习面临的一个问题就是在网络训练的过程中存在梯度消失问题(vanishing gradient problem),或者更广义地来讲就是不稳定梯度问题。那么到底什么是梯...


学习OpenGL ES之物理引擎

前言 本文将介绍3D物理引擎Bullet的基本使用方式以及如何将之前的OpenGL渲染代码和Bullet相结合,制造一个符合物理运动规则的虚拟3D场景。下面是效果图。 Bullet Bullet是一个开源的物理引擎,...


机器学习方法:从线性模型到神经网络

发现模式 一个模型实际上都是一个从输入到输出的函数,我们希望用这些模型发现数据中的模式,发现数据中存在的函数依赖,当然前提是数据中本身就存在这样的函数依赖。数据集有很多...


专家教你利用深度学习检测恶意代码

当前,恶意软件的检测已经成为全社会关注的网络安全焦点,因为许多时候,单个恶意软件就足以导致数百万美元的损失。目前的反病毒和恶意软件检测产品,一般采用的是基于特征的方法,...


AI医疗2.0时代已到,用深度学习助推人工智能落地

最近市场又被人工智能医疗刷屏了。刷屏的原因就是人工智能继战胜了国际各位围棋棋手之后,又有了一个新的突破,这个突破就是在医疗领域。今年11月,国家医学考试中心发布了“2017年国...


前途光明的机器学习将走向何方?这里有 5 个关于它的未来预测

机器学习目前是 IT 领域最热门的话题之一,这是因为它在看似无限的应用场景中都能发挥自身的作用。从检测欺诈网站到自动驾驶汽车,再到识别你的“金牌会员”身份以进行价格预测等等...


学习OpenGL ES之教你实现SkyBox

不知道大家是否还记得基于CubeMap的反射效果里介绍的CubeMap,本文将使用CubeMap来制作3D游戏中的一个经典技术,天空盒(SkyBox)。老规矩,先来看下效果图。效果中的地形模型在前面的文章中...


机器学习作用于信息安全的五大顶级案例

通俗讲,机器学习就是“(计算机)无需显式编程即可学习的能力”。跨海量数据集应用数学技术,机器学习算法可建立起行为模型,并基于新输入的数据,用这些模型做出对未来的预测。视...


学习OpenGL ES之教你制作迷雾

前言 本文将为大家介绍一种常见的3D技术-雾(fog)。雾可以让你看不清远处的物体,除了模拟真实环境中的雾效果以外,还可以用来遮挡修饰远处细节精度比较低的模型,让它们看起来没那...


为什么大家都不戳破深度学习的本质?!

人类正在慢慢接近世界的本质——物质只是承载信息模式的载体。人脑之外的器官都只是保障这一使命的给养舰队。 自从 AlphaGo 完虐李世乭,深度学习火了。但似乎没人说得清它的原理,只...


学习OpenGL ES之基于CubeMap的反射效果

本文将为大家介绍如何使用CubeMap制作反射效果,反射效果可以让材质具备光滑的质感,比如汽车的烤漆,就非常适合使用反射效果。先上2张效果图。我使用的是Blender内置的猴头模型进行的渲...