带你深度解析虚幻引擎4的照明和阴影知识

news2025/2/27 14:15:06

照明是渲染的重要组成部分。有静态光和动态光,它们往往很重并且需要大量计算。今天就让赞奇云工作站带领小伙伴们来学习一下虚幻引擎4中的光照和阴影的知识。

静态照明

静态光在编辑器中预先计算并保存在光照贴图中。

  • 〇:良好的性能和质量(取决于光照贴图
  • ✕ : 计算耗时,需要大量内存
  • ❕:每次更改时都需要重新渲染灯光
  • ❕:每个物体都需要一张光照贴图

什么是光照贴图

它是虚幻引擎通过称为“lightmass”的计算生成的纹理。您可以使用 World Setting 控制 lightmass 的分辨率。您可以通过在场景中放置“Lightmass Importance Volume”来定义您想要高质量照明的位置。盒子外(体积)的照明质量较低。

此外,光照贴图的分辨率也会影响内存。您可以在 Optimization Viewmodes > Lightmap Density 中可视化光照贴图的 UV 坐标。
然后您会发现诸如“考虑到该对象与玩家的距离,该光照贴图的分辨率可能太高”之类的问题。但是,您不必太担心将其设置得完美无缺。

动态照明

实时渲染动态光。它使用 G 缓冲区图像并将它们混合以可视化照明。它对非性能有很大影响,因此您需要很好地理解它才能正确使用它。

  • 〇:清晰自然的外观。与静态光不同,它不受对象大小的限制,因为它不需要光照贴图
  • ✕:对性能影响大

动态阴影

  • ✕:对性能影响大
  • ✕:无光能传递,无全局光照
  • ❕:建议关闭部分灯的Cast Shadow

1.级联阴影贴图(CSM)

  • 当阴影远离相机时淡入/淡出阴影。
  • ✕:不适合开放世界游戏
  • ❕:仅定向光

2. 距离场阴影(DF)

  • *默认关闭
  • 〇:出色的性能,为远处的物体积累光照✕:低质量
  • 即使您使用 CSM 淡出阴影,也有一些事情很突出,例如远处的建筑物根本没有阴影。这就是 DF 派上用场的地方。您可以通过在项目设置中搜索“距离”并选中“生成网格距离场”来打开它。

3. 嵌入阴影(= Per Object Shadow)

  • 即使附近没有适当的光线,您也可以投射高分辨率阴影。
  • 大多数时候它是针对角色的。

4.投射阴影

  • 不经常使用。适用于小物体,它会在底部接触面上投射阴影。

5.胶囊阴影

  • 不经常使用。通过使用多边形比真实对象少的对象投射阴影,以低成本在对象下渲染阴影。

概括

动态照明本身不会对性能产生巨大影响。阴影更容易成为问题,因为阴影是由像素着色器计算的,像素着色器计算越多,渲染所需的时间就越多。这就是为什么灯的半径越小越好,如果灯不重复太多,性能会提高。像素着色器正在下图中的白线区域内进行计算。如果没有必要,您需要减小半径以最小化成本。

如果你一开始就不需要阴影,你可以关掉。当您使用大量动态光时,您还需要注意多边形计数。如果不能减少多边形数量,可以使用距离场阴影进行优化。

轻机动性

1. 可移动*动态光

  • × 阴影太尖锐,显示多边形线条
  • × 无辐射和无全局照明

2. Stationary *动静结合

  • 它是通过混合预先计算的静态光和动态光创建的。
  • 〇:更加逼真柔和

3.静态*静态光

  • 〇:渲染最快

案例分析

1:充满光影的房间

当玩家打开门或进入房间时,使用蓝图启用灯光和阴影。

2:VR等需要最大性能

只使用静态灯

3:需要在游戏中自由变换灯光

使用动态灯光

赞奇云工作站

3d设计师们最常遇到的情况就是本地硬件不足的情况,推荐可以试试赞奇云工作站,让你不用升级电脑也可以享受流畅的制作渲染云办公服务。

赞奇超高清设计师云工作站可以满足云上办公、海量机型、海量软件、异地协同等多功能服务,可应用于多行业比如工业设计、建筑设计、游戏设计、影视动画等多场景适用。满足三维设计师所需:真色彩、稳定低时延、网络自适应、高清低码等,让你高效无忧办公。

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

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

相关文章

[go学习笔记.第十五章.反射,常量] 1.反射的基本介绍以及实践

一.反射的引入以及基本介绍 1.看两个问题 (1).对于结构体的序列化和反序列化,看一段代码 package mainimport("fmt" "encoding/josn" )type Monster struct {Name string json:"monsterName"Age int json:"monsterAge&quo…

Android商城开发----点击左侧分类列表右侧更新对应列表内容

Android商城开发----点击左侧分类列表右侧更新对应列表内容 目录Android商城开发----点击左侧分类列表右侧更新对应列表内容一、首先说布局:二、主要说一下,布局完成后实现点击左侧类别时,右侧展现对应类的商品列表。主要思想:源代…

Vue3响应系统的实现(二)

前言 继上一篇文章,我们已经能够实现一个简单的响应系统了,但是仍然存在很多缺陷,本篇文章将具体叙述一下存在的缺陷以及如何解决,最后实现一个较为完善的响应式系统 解决副作用函数硬编码问题 从上一篇文章中我们不难发现响应…

概率 | 【提神醒脑】重难点专题突破 自用笔记

本文总结参考于 kira 2023概率提神醒脑技巧班 中 —— 重难点专题。 笔记均为自用整理。加油!ヾ(◍∇◍)ノ゙ 一研为定! 一、条件均匀 / 指数 / 二项…分布 -------------------------------------------------------------------------------------------------------------…

基于inquirer实现一个控制台多级选择交互功能

说在前面 🎈在前端脚手架工具中经常会看到控制台输入参数等操作。例如Vue-cli中初始化项目会提示选择一些参数等。所以在开发脚手架工具或者node控制台程序,就需要用到inquirer工具或者类似的工具。但是使用过inquirer工具的同学应该知道,目前…

SpringSecurity整合SSM和SpringBoot完成方法级权限控制

初识权限管理 权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源。权限管理几乎出现在任何系统里面,前提是需要有用户和密码认证的系统。 在权限管理的概念中,有两个非常重要的名词&…

SpringBoot SpringBoot 开发实用篇 1 热部署 1.4 关闭热部署功能

SpringBoot 【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】 SpringBoot 开发实用篇 文章目录SpringBootSpringBoot 开发实用篇1 热部署1.4 关闭热部署功能1.4.1 关闭热部署1.4.2 小结1.4.3 总结1 …

大佬神作!Spring Security从应用到源码,这份手册都讲全了,已三刷

简介 平时我们写 Web 项目,都需要用户登录时验证,以及权限管理之类的操作,以前使用过滤器,拦截器等进行管理,原生代码较多。 所以出现了安全框架以供我们使用,安全框架在 Web 应用的主要功能是&#xff1a…

金九失足,10月喜提“Java高分指南”,11月冲击大厂

蓦然回首自己做开发已经十年了,这十年中我获得了很多,技术能力、培训、出国、大公司的经历,还有很多很好的朋友。但再仔细一想,这十年中我至少浪费了五年时间,这五年可以足够让自己成长为一个优秀的程序员,…

VS2017安装教程(详细版)

1.首先下载好安装包 百度网盘下载链接 链接:https://pan.baidu.com/s/1HW8hrLMazRsBkPvkDHkD1Q?pwdz4jg 提取码:z4jg 2.下载到桌面以管理员身份运行 点击继续 3.进入后更改安装位置,选择安装路径,千万不要安装到C盘 4.改完后…

Opencv——直方图、掩膜、直方图均衡化详细介绍及代码实现

一、图像直方图 1.1 定义: 图像直方图是图像的基本属性之一,也是反映图像像素数据分布的统计学特征,其横坐标代表了图像像素点在[0,255]范围中,纵坐标代表图像像素点出现的个数或百分比。如图: 1.2 函数:…

Go程序内存泄露问题快速定位

前几天有同学反馈了 cgo 内存泄露问题,自己也针对这个问题探索了一番,算是为以后解决类似问题提前攒点经验吧。也趁机整理了一下 go 开发过程中内存泄露问题的一些常用排查方法,也希望对新接触 go 的同学有所帮助。整理之余,bcc 工…

面试问题:MD5属于哪种加密算法?千万别踩这些坑

一些小伙伴吐槽,去面试的时候经常听到面试官问这样的问题,“对称加密”、“非对称加密”、“MD5加密”,那么MD5到底属于哪种加密算法?遇到这样的问题,一定要小心,这是面试官给你挖的坑呢,可别傻…

C++——pair用法总结

C——pair用法总结1.pair概述&#xff08;在标头 <utility> 定义&#xff09;2.pair使用2.1成员函数&#xff08;构造函数、赋值函数&#xff09;2.2非成员函数2.3辅助类使用1.pair概述&#xff08;在标头 定义&#xff09; std::pair 是类模板&#xff0c;提供在一个单…

Kotlin MVVM之Jetpack系列ViewModel、LiveData的简单使用

一、MVVM是什么&#xff1f; MVVM分为Model&#xff0c;View&#xff0c;ViewModel 三个部分 Model:数据层&#xff0c;包含数据实体和对数据实体的操作 View:UI层&#xff0c;对应于Activity&#xff0c;XML&#xff0c;负责数据显示以及用户交互。 ViewModel&#xff1a;…

22-Redux-1

//npm init //npm install redux //1 导入redux&#xff08;不能通过es6的方式&#xff09; // commonjs一种 -> node.jsconst redux require(redux)const initialState {counter: 0 } // reducer function reducer(state initialState, action) {switch(action.type) {c…

5 步!用阿里云 Serverless 搭建高质量的图片压缩工具

作者&#xff1a;Regan Yue 本文选自“Serverless 函数计算征集令”活动 什么是 Serverless Serverless 是一种基于云计算的开发方法&#xff0c;它让开发人员可以专注于编写代码来解决业务问题&#xff0c;而不是处理服务器问题。它是独一无二的&#xff0c;因为它支持 Auto …

Rust中级教程:指针生态(引用、原始指针、智能指针)and内存操作(Stack、Heap)

指针的一些概览知识点 1.内存地址&#xff1a;指代内存中单个字节的一个整数。 指针&#xff08;原始指针&#xff09;&#xff1a;就是指向某种类型的一个内存地址。 引用&#xff1a;就是指针&#xff0c;是rust提供的一种抽象&#xff0c;如果是动态大小&#xff0c;就是一…

标记肽MGP-7-氨基-4-甲基香豆素、1926163-53-2、Met-Gly-Pro-AMC

蛋氨酸氨基肽酶1D和2的荧光底物。编号: 152397 中文名称: 标记肽MGP-7-氨基-4-甲基香豆素 英文名: H-Met-Gly-Pro-AMC CAS号: 1926163-53-2 单字母: H2N-MGP-AMC 三字母: H2N-Met-Gly-Pro-AMC 氨基酸个数: 3 分子式: C22H28N4O5S1 平均分子量: 460.55 精确分子量: 460.18 等电点…

【SVN】SVN服务端地址变动,idea切换SVN地址

公司切换了SVN服务端的制度&#xff0c;需要本地对应切换SVN地址&#xff0c;以下为具体步骤 错误方式 直接 项目上右键 --> Subversion --> Relocate &#xff0c;修改 To URL 的值&#xff0c;会报错 https://XXXXX is not the root of the repository 的错误 正确的…