阿赵UE学习笔记——16、渲染性能相关

news2025/1/12 20:55:48

阿赵UE学习笔记目录

  大家好,我是阿赵。
  继续学习虚幻引擎的使用。上一篇说了灯光的移动性问题,这一篇来看看怎样去辨别灯光性能的好坏。
  虚幻引擎里面有一组显示模式是专门用来看场景当前的灯光和网格渲染的,叫做优化试图模式:
在这里插入图片描述

1、光照复杂度

  打开一个打了灯光的场景,找一个场景的角落,然后选择光照复杂度:
在这里插入图片描述

  可以看到场景变成了各种颜色的叠加:
在这里插入图片描述

  这些颜色代表的含义,在下面有一个颜色参考条,最左边的颜色,是最好的,最右边的颜色,是最差的。刚好我这个截图里面,好的和差的情况,都有出现,说明了这个局部里面打的灯光比较复杂。
  如果换一个角度看,情况就会不一样了:
在这里插入图片描述

  这一边的光照比较简单,所以一片还是保持在比较好的范围。
在这里插入图片描述

  如果觉得上面的场景很复杂,也可以自己建一个小场景去测试一下:
在这里插入图片描述

  这个场景有直射灯、聚光灯和点光源,可以看到不同的光源会产生一个自己的范围,然后互相叠加。
在这里插入图片描述

  通过光照复杂度,我们想做的事情事检查一下场景里面哪些地方的光照复杂,在不太影响整体效果的情况下,尽量降低光照的复杂程度。

2、光照贴图密度

  同样的打开一个场景然后进入光照复杂密度显示模式:
在这里插入图片描述

  这个时候,就看到了场景里面的模型变成了不同深浅的蓝色或者绿色的情况,然后模型上面显示着格子,有点类似于我们在三维软件里面展UV时的UV格子的感觉。
在这里插入图片描述

  由于这个场景还是太复杂了,为了简单观察,还是回到简易场景看看:
在这里插入图片描述

  这个时候可以看出,地面的面片和上面的立方体,他们的格子大小不一样,显示的颜色也不一样。这个代表的是他们展了第二套用于Lightmap的UV,在实际的Lightmap里面占的大小。
  这个概念对于做展UV和模型贴图的朋友会比较熟悉。在使用同一张贴图的情况下,两个模型如果展UV时大小差别很大,那么出来的效果就是两个模型显示贴图的精度会有差别,一个模型清晰一个模型模糊。如果是这样两个模型摆在同一个场景里面,效果会很奇怪。
  同样的,如果在同一个场景里面烘焙Lightmap的两个模型,一个UV占得多一个UV占得少,就会导致模型上的阴影显示精度不一致,也会很奇怪。
  所以我们需要根据这个光照贴图密度来调整,调整的方式有2种:

1.静态网格导入修改

  打开静态网格模型的导入编辑窗口
在这里插入图片描述

  这里搜索lightmap,会看到一个光照贴图分辨率。修改这里的数值,会让所有用到同一个静态网格的模型对象身上的光照贴图分辨率变化。

2.在细节面板修改

  在场景里面选择某个物体对象,然后在细节面板搜索lightmap
在这里插入图片描述

  会找到一个覆盖的光照贴图分辨率。把前面的勾勾上,这个时候,这个对象会忽略了静态网格设置里面的光照贴图分辨率,而使用这个细节面板选项的值。
  两种方法各有好处,根据自己的实际情况来调整就可以。
  经过了微调之后,现在面片和立方体身上的格子大小已经比较的接近,显示的颜色也差别不是很大了。这个时候就证明了我们烘焙Lightmap后,这两个模型的显示精度差别不大。
在这里插入图片描述

3、固定光源重叠

  这个选项是针对光源的移动性为“固定”的情况,固定类型光源本身是可以烘焙光源,又可以使用动态影子的,但固定光源的重叠本身是有上限的,上限是4个。
在这里插入图片描述

  比如下图这个简易场景,我打了很多灯光,有点光源也有聚光灯,它们的类型全部都是固定。
在这里插入图片描述

  可以从场景上看到,有几个灯光的图标上面出现了红色的叉,这几个有叉的光源,代表的意思是,固定光源重叠超过了4个,当前的光源被改为了可移动的。
  如果构建灯光,也可以在消息日志里面看到这部分的说明。
  不过阿赵我没搞懂的是,我进入固定光源重叠模式看,却没有看到说明文档里面提到的可以直观看到哪些灯光会由于叠加而颜色。有知道的朋友麻烦告诉一下我,谢谢。
在这里插入图片描述

4、着色器复杂度

  我觉得这是一个挺牛的功能。我在Unity里面也写了好多年Shader了,但实际上在整个场景里面,有哪些地方使用了比较复杂的Shader计算,我一直都只能是凭感觉来猜。但UE却直接有这样的功能可以显示:
在这里插入图片描述

  在整个场景变了颜色之后,下面有一个颜色条,说明了对应颜色Shader的复杂度
在这里插入图片描述

  这样,就可以很快的找出复杂的Shader,然后进行优化了。

4、着色器复杂度和四边形

  这个模式是在着色器复杂度的基础上,加上了四边形过度绘制的显示:
在这里插入图片描述

  可以看到,除了刚才的Shader复杂度颜色,场景里面还显示出了线框
在这里插入图片描述

5、四边形过度绘制

  这个模式显示的是网格模型绘制的情况
在这里插入图片描述

  场景里面的物体颜色改变了,然后显示了线框。下面有一个颜色条作为好坏对比。
在这里插入图片描述

  这个其实挺有意思的,我经常告诉美术同事,模型不是做得面数越高就越好,首先要看模型在场景里面的显示的大小,是否真的需要做那么精细的模型网格结构,然后看是不是细节的部位一定要用模型网格表达,是否可以用贴图来表现。
  这个四边形过度绘制模型,可以让我们看到哪些地方的网格模型是做得过于密集的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1459444.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

动态内存管理(中)

动态内存管理(上)-CSDN博客(malloc, realloc, calloc, free函数的用法以及注意事项等知识点) 目录 1.对空指针的解引用操作 2.对动态开辟空间的越界访问 3.对非动态内存开辟空间使用free空间…

SpringBoot + Nacos 实现动态化线程池

1.背景 在后台开发中,会经常用到线程池技术,对于线程池核心参数的配置很大程度上依靠经验。然而,由于系统运行过程中存在的不确定性,我们很难一劳永逸地规划一个合理的线程池参数。 在对线程池配置参数进行调整时,一…

网络:SNMP协议

1. SNMP技术原理 SNMP的结构包括网管站NMS(Network Management Station)和Agent两部分。SNMP协议是规定NMS和Agent之间如何传递管理信息的应用层协议(UDP协议,使用162端口)。 2. SNMP版本 SNMPv1:方便实现&#xff0c…

怎么在电脑上做工作笔记?电脑桌面电子笔记软件

在繁忙的职场中,随时随地记录工作笔记是许多职场人士的日常需求。这不仅包括了会议记录、项目进展,还有一些灵感、规划和工作要点,都需要随手记下,以便随时查看和回顾。那么我们如何在电脑上做工作笔记更高效、便捷呢?…

Python实现线性逻辑回归和非线性逻辑回归

线性逻辑回归 # -*- coding: utf-8 -*- """ Created on 2024.2.20author: rubyw """import matplotlib.pyplot as plt import numpy as np from sklearn.metrics import classification_report from sklearn import preprocessing from sklearn…

jmeter 命令行启动 动态参数化

[Jmeter命令行参数] 一、在linux中,使用非gui的方式执行jmeter。若需更改参数,必须先编辑jmx文件,找到对应的变量进行修改,比较麻烦。因此,可以参数化一些常用的变量,直接在Jmeter命令行进行设置 二、参数…

信息安全法律法规体系

信息安全法律法规体系 我国信息安全法规体系可以分为4层。 法律层面具体对应的法律、法规一般性法律规定宪法、国家安全法、国家秘密法、治安管理处理条例等虽然没有专门针对信息安全的条款,但约束了信息安全相关的行为规范和惩罚信息网络犯罪的法律《中华人名共和国刑法》《…

专家之路上的Flow高级秘籍

公众号「稀有猿诉」 原文链接 专家之路上的Flow高级秘籍 『君不见,黄河之水天上来,奔流到海不复回。』 学习与河流一样,一方面学无止境,又是逆水行舟,不进则退,因为其他人都在卷。前文一篇文章讲了F…

单片机02_寄存器_GPIO设置

芯片概述 C51:0口、1口、2口、3口,P00~p07、P10~P17、P20~P27、P30~P37 STM32:A口、B口、C口、D口,PA0~PA15/PA5 GPIOA.5 STM32F407ZGT6有7组GPIO端口,分别是:A B C D E F G,每组均有16个GPIO端…

com.alibaba.fastjson.JSONException: toJSON error的原因

问题: 导出接口报错,显示json格式化异常 发现问题: 第一个参数为HttpResponse,转换成json的时候报错 修改方法: 1.调换两个参数的位置 2.在aop判断里边 把ServletAPI过滤掉 Before("excudeWebController()")pub…

Leetcode1206(设计跳表)

例题: 分析: 我们先来找一找跳表与单链表的相同点和不同点。 相同点: 跳表和单链表一样,都是由一个一个的节点组成的链表。 不同点: ①:跳表中的元素已经是排好序的(图中从小到大)&…

突破性创新:OpenAI推出Sora视频模型,预示视频制作技术的未来已到来!

一、前言 此页面上的所有视频均由 Sora 直接生成,未经修改。 OpenAI - Sora is an AI model that can create realistic and imaginative scenes from text instructions. 2024 年 2 月 16 日,OpenAI 发布 AI 视频模型 Sora,60 秒的一镜到底…

STM32-启用蜂鸣器

目录 1 、电路构成及原理图 2、编写实现代码 main.c beep.c beep.h 3、代码讲解 4、 烧录到开发板调试、验证代码 5、检验效果 本人使用的是朗峰 STM32F103 系列开发板,此笔记基于这款开发板记录。 1 、电路构成及原理图 首先,通过朗峰 F1 开…

VILT算法解读

VILT是一种典型的单塔结构,不同于双塔结构由两个独立的Image Encoder以及Text Encoder组成(比如clip),单塔结构的模型一般只有一个共用的编码器,称为Multi-Modal Encoder。 1、VILT算法原理 VILT被认为是最简单的…

SpringBoot中使用PageHelper插件实现Mybatis分页

场景 SpringBoot中整合Mybatis时一般添加的依赖为 <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.1</version></dependency> 如果要实现分页查…

PostgreSQL按日期列创建分区表

在PostgreSQL中&#xff0c;实现自动创建分区表主要依赖于表的分区功能&#xff0c;这一功能从PostgreSQL 10开始引入。分区表可以帮助管理大量数据&#xff0c;通过分布数据到不同的分区来提高查询效率和数据维护的便捷性。以下是在PostgreSQL中自动创建分区表的一般步骤&…

docker之安装mongo创建运行环境

目录 一、docker pull 最新资源 二、启动mongo镜像 启动命令查看日志拉取低版本镜像成功启动 三、进入mongo容器 进入容器进入mongo环境查询当前所在库切换库至admin随意切换库 并 创建用户登录用户新增文档数据等 五、总结 版本兼容可备份操作 一、docker pull 最新资源…

java面试集合篇

上面是java中集合的整体框架图。 集合使用的数据结构 算法复杂度分析 时间复杂度分析 时间复杂度分析&#xff1a;来评估代码的执行耗时的 /*** 求1~n的累加和* param n* return*/ public int sum(int n) {int sum 0;for ( int i 1; i < n; i) {sum sum i;}return …

【常识】大数据设计基础知识

底层存储&#xff1a;hadoop&#xff08;hdfsmapreduce&#xff09; Hadoop已经有十几年的历史&#xff0c;它是大数据领域的存储基石&#xff0c;HDFS目前仍然没有成熟替代品;MapR 文件系统在业内已经具有一定知名度了&#xff0c;不仅 MapR 宣布它自己的文件系统比 HDFS 快2-…