Hello,大家好,今天给大家带来实用的材质优化,我是木偶心没。优化在每个游戏项目里面都会涉及到,是一种为了达成相同目标,寻求并采用消耗更少资源的办法。一般会在CPU,GPU,网络和内存方便进行优化。而我们在美术效果的制作中,除了要注意面数,顶点和材质球贴图个数等,还需要在写材质球的时候就需要注意的,材质球优化。

优化应该在制作过程中就需要考虑到的因素,而不是全部制作完成以后再因为帧率不够想办法,那将会非常耗费时间和人力。

一、性能

在进行优化之前需要先查看材质球的性能复杂度等,所以下面有几种办法来查看材质球的性能:

1. Alt+8查看场景材质球复杂度,越往右边的颜色表示材质球越复杂,消耗越高。

2. 查看Shader instructions

材质的计算过程是先将Shader Graph里面的节点转成HLSL Code然后在转化成汇编语言指令Assembly Instructions,最后再传递给驱动程序Graphics Driver。

所以如果我们知道shader instructions的数量也可以判断汇编语言的instructions数量。

3. 将材质赋给模型,将模型放到场景中,运行场景,然后在预期的目标平台上进行评估。因为不同的硬件,着色器的消耗也会有所不同。

二、优化

但是综上,在我们创建材质的时候最直观的办法还是查看instruction,虽然结果并不完全准确,但是却是最快速有效的办法。

查看到性能以后,我们就开始来优化材质。

1、删掉多余的材质节点。检查材质看是否有没有效果的节点,在合理的情况下可以删掉,或者说添加效果开关。

2、替换某些复杂的数学函数节点,比如power函数等。

unreal里面主要作用是增加对比度(黑的更黑,白的更白)

Power的Exp输入就可以调整对比度。我们记录当前状态下的instructions数量为111

然后先将我们的mask的rgb减去0.5,将范围固定在(-0.5,0.5),然后乘上一个对比度值,相当于power里面的EXP控制mask对比度,最后再加上0.5,clamp到0-1以后就可以使原本小于0.5的值更小,让原本大于0.5的值更大,现在我在将结果连到alpha里面查看到instruction的值变成110了。

这就可以少量优化数学函数节点。

3、优化流程相似的节点,比如下面的节点,两个texture sample用的都是一张图,而不一样的就是起始时间数值

所以我们就可以把前面的uv部分进行如下优化。

我们就把四个二维运算(两加两乘)机智的换成了两个四维运算(一加一乘),减少了数学计算的次数

4、最常用的贴图合并,只要使用了同一个uv,就可以放在同一张贴图里面,然后在操作时进行同一张贴图不同的通道加载。例如把metal或者ao放在basecolor贴图的alpha通道。这样可以大大减少贴图的使用数量,极大优化材质球。

来源:火星时代

Unreal如何进行材质优化?的更多相关文章

  1. Unreal Engine 4 性能优化工具(Profiler Tool)

    转自:http://aigo.iteye.com/blog/2296548 Profiler Tool Reference https://docs.unrealengine.com/latest/I ...

  2. ue4 优化建议与经验

    转自:https://dawnarc.com/2016/12/ue4%E4%BC%98%E5%8C%96%E5%BB%BA%E8%AE%AE%E4%B8%8E%E7%BB%8F%E9%AA%8C/ 内 ...

  3. (转\整)UE4游戏优化 多人大地型游戏的优化(三)GPU的优化

    施主分享随缘,评论随心,@author:白袍小道 小道暗语: 1.因为小道这里博客目录没自己整,暂时就用随笔目录结构,所以二级目录那啥就忽略了.标题格式大致都是(原or转) 二级目录 (标题) 2.因 ...

  4. 基于FBX SDK的FBX模型解析与加载 -(二)

    http://blog.csdn.net/bugrunner/article/details/7211515 5. 加载材质 Material是一个模型渲染时必不可少的部分,当然,这些信息也被存到了F ...

  5. Unreal Engine 4 中的 UI 优化技巧

    转自:https://mp.weixin.qq.com/s/bybEHM9tF-jBPxxqXfrPOQ## Unreal Open Day 2017 活动上 Epic Games 开发者支持工程师郭 ...

  6. Unreal Engine 4 基于Kajiya-Kay的材质迭代

    转自:http://www.52vr.com/article-859-1.html 在先前的文章Unreal Engine 4 —— Kajiya-Kay Shading在UE4中的实现 中过了一遍怎 ...

  7. 英特尔帮助优化 Epic 的《堡垒之夜》* 和 Unreal Engine*

    您可能知道,Epic 的游戏<堡垒之夜>是 Unreal Engine* 技术的绝佳示例,<堡垒之夜>的开发团队正不断改进游戏,增加支持平台的数量并将信息反馈给引擎.为此,英特 ...

  8. Unreal Engine 4 系列教程 Part 3:材质教程

    .katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...

  9. [Unreal]学习笔记之材质说明

    取消蓝图中的连接线:Alt+鼠标左键 在蓝图中,通过按住1,2,3,4加鼠标左键,可以快速生成1,2,3,4维的向量 材质和材质实例的区别:使用一个母材质,可以创建出多种场景中的材质实例:每次修改母材 ...

随机推荐

  1. 【转】风控中的特征评价指标(三)——KS值

    转自:https://zhuanlan.zhihu.com/p/79934510 风控业务背景 在风控中,我们常用KS指标来评估模型的区分度(discrimination).这也是风控模型同学最为追求 ...

  2. HelloGitHub 小程序上线了,蛋只有一个搜索功能

    作者:HelloGitHub-卤蛋 我是...蛋蛋啊,本文是我从零开发「HelloGitHub 小程序」的开发日记,不要把这个系列当作技术文章来读,你将会收获更多的乐趣.‍♂️ 我只是个 Python ...

  3. IP包头部格式解析

    IPv4首部一般是20字节长.在以太网帧中,IPv4包首部紧跟着以太网帧首部,同时以太网帧首部中的协议类型值设置为080016. IPv4提供不同,大部分是很少用的选项,使得IPv4包首部最长可扩展到 ...

  4. 【软工】个人项目作业——个人软件流程(PSP)

    [软工]个人项目作业--个人软件流程(PSP) 项目 内容 班级:北航2020春软件工程 006班(罗杰.任健 周五) 博客园班级博客 作业:设计程序求几何对象的交点集合 个人项目作业 个人课程目标 ...

  5. [Python] Virtualenv 使用

    参考 https://www.jianshu.com/p/b6e52b80653f

  6. tail -fn 1000 test.log | grep '关键字' 按照时间段 sed -n '/2014-12-17 16:17:20/,/2014-12-17 16:17:36/p' test.log /var/log/wtmp 该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件

    Linux 6种日志查看方法,不会看日志会被鄙视的 2020-02-11阅读 7.3K0   作为一名后端程序员,和Linux打交道的地方很多,不会看Linux日志,非常容易受到来自同事和面试官的嘲讽 ...

  7. 1.5 RPM红帽软件包1.6 Yum软件仓库

    1.5 RPM红帽软件包 在RPM(红帽软件包管理器)公布之前,要想在Linux系统中安装软件只能采取源码包的方式安装.早期在Linux系统中安装程序是一件非常困难.耗费耐心的事情,而且大多数的服务程 ...

  8. Centos6.8安装mysql 步骤

    第1步.查看CentOS下是否已安装mysql 输入命令 :yum list installed | grep mysql 第2步.删除已安装mysql 输入命令:yum -y remove mysq ...

  9. 进程-信号相关 函数-(转自wblyuyang)

    Linux 中的进程: 程序时一个预定义的指令序列,用来完成一个特定的任务. C 编译器可以把每个源文件翻译成一个目标文件,链接器将所有的目标文件与一些必要的库链接在一起,产生一个可执行文件.当程序被 ...

  10. 『动善时』JMeter基础 — 25、JMeter参数化补充练习

    目录 1.使用"CSV数据文件设置"组件实现参数化 (1)测试计划中的元件 (2)数据文件内容 (3)线程组元件内容 (4)HTTP信息头管理器组件内容 (5)CSV数据文件设置组 ...