UE4 材质学习笔记05(凹凸偏移和视差映射/纹理压缩设置)

news2024/10/9 15:25:19

一.凹凸偏移和视差映射

1.偏移映射

这需要一个高度图并且它的分辨率很低,只有256*256,事实上,如果高度图的分辨率比较低并且有点模糊,效果反而会更好

然后将高度图输出到BumpOffset节点的height插槽中, 之后利用得到的UV进行贴图采样。现在移动摄像机的时候有一些视差移动,表面看起来不是平的,纹理坐标正在根据我的视角在移动。

下面是分别使用两种方法效果的对比,后者看起来更有起伏感

2.视差遮挡映射

这个方法更加消耗性能,但是效果也更好。

这里的Texture Obkect这个节点是告诉它我想用什么纹理,但是并没有采样,而Texxture Sample节点是对这个纹理进行了采样。因为纹理采样实际上在ParallaxOcclusionMapping节点中发生了多次,所以选择用Texture object。事实上它会在场景中进行光追,并且测算光线会碰到物体的什么位置,并且进行多个光线采样用于计算表面的最佳形状。HeighrMapChannel 表示用纹理的哪个通道,因为这是灰度图,所以哪个通道并不重要,给的值是R通道HigRatio表示突起的高度离表面有多远,另外minsteps和maxsteps分别决定了我竖直向下看和水平看的采样次数。HIghRatio越大应该给更多的采样次数来保证形状的完好。采样越多就会越消耗性能,但总的来说这非常节省性能了。

、即使视角很低也可以看到明显的凹凸效果

二.纹理压缩设置

首先在引擎中查看一个纹理。右上角会出现一个细节面板。

第一个已导入表示导入纹理时的大小,也就是原始纹理的大小。下面两项表示引擎或者游戏中显示的纹理的大小,再下面一项表示纹理所使用的内存数量,所以在当前的压缩设置下,我的2k纹理占用2m多一些。然后一项表示纹理没有alpha通道。已动态载入表示当角色在游戏中移动时,如果带有这种纹理的物体靠近角色。该纹理将被动态加载并流送进纹理流送池。如果该物体离屏幕足够远或者在屏幕之外,那么纹理将从内存中流出或移除,这是管理内存的最有效方式。下一项内容是正在使用的纹理压缩格式。当你将一个纹理导入虚幻引擎的时候,它会创建一个Mipmap链,例如导入一个2k的纹理,还会自动创建1k,512,256等等的纹理副本,然后每一个副本成为Mip,使用哪一种Mip等级来采样,它取决于看物体时相机的距离,或者取决于你观看物体的视角

然后是下面的compression。

第一个表示是否要忽略Alpha通道,如果纹理并没有Alpha通道,那么应该勾选这个选项。

然后是compression settings,DXT1是你可以使用的最有效的压缩设置,如果一个四个通道的纹理,一个未压缩的图像在内存中的大小将是压缩后的大小的8倍,因此DXT1的压缩比是8:1,它通过将纹理分割成4*4的像素块来进行压缩,然后存储其中的两个的完整的值,就像16个像素块中最极端的两个,然后所有其他像素都沿着一个像素和另一个像素之间的直线进行映射

如果是将法线贴图进行压缩,最好是使用DXT5,它的压缩比是4:1,它将会应用一些特定的压缩设置来让法线贴图看起来尽量好

 

下面是我们之前使用的一个Mask贴图,它的RGBA分别代表了ASMR。它的大小是5m左右,大约是漫反射纹理的两倍,这是因为它是四通道的纹理并且使用DXT5进行压缩,所以一半的数据进入RGB,一半的数据进入Alpha通道,也就是说Alpha通道在所有数据中是压缩的最少的,所以我们的重要数据更应该存储在Alpha通道中。

在使用DXT5格式进行压缩时,纹理的存储方式会影响数据的分配和压缩效率。DXT5采用的是一种块压缩技术,每个4x4的像素块被压缩成一个固定大小的字节。具体来说,DXT5格式的压缩结构包括:

  1. RGB部分:每个块首先存储了两个RGB颜色(用来定义颜色渐变),接着是一个颜色索引表(用于存储每个像素的颜色索引),这样可以有效地表示多达16种颜色。

  2. Alpha通道:DXT5格式的Alpha通道是单独处理的,它允许每个像素有8位的透明度信息。这意味着在一个4x4的像素块中,可以存储更精细的透明度变化。

由于DXT5的设计,Alpha通道的存储空间相对较小(8位),而RGB部分的存储空间(每个像素3个通道)在整体数据中占据了更大的比重。所以在一些场景中,为了优化压缩后的纹理效果,重要的数据信息可能更适合放在Alpha通道中,尤其是在需要精确控制透明度或使用遮罩效果时。

下面没有勾选SRGB,这意味这该数据被视为线性的,这里没有应用伽马校正,事实上你唯一需要开启这个选项的就是基础颜色的漫反射纹理

下面是一张高度图

当我们将纹理放大以后,就会发现很多地方都失真了

但是只要我们将压缩设置设置为GrayScale(R8),就会发现所有的失真都不见了,它存储了未压缩的单个通道,而且纹理的大小只是变大了一倍,但是这仍然很小。所以如果有一个单一通道的纹理,并且纹理的尺寸不是很大,那么可以考虑使用这种压缩方式

然后是Alpha,这回忽略掉RGB通道的内容而只能使用Alpha通道的内容。

BC7是一种新的纹理格式,只适用于DX11或者更高,这是一种更高质量的纹理格式,不过尺寸更大一些,它可以同时支持3个或者4个通道,并且总是4:1的压缩,如果你不介意它的大小是DXT1的两倍,又需要更高的质量,那么BC7就是你想选的

 

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

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

相关文章

JVM 内存模型与垃圾回收过程详解

JVM 内存模型与垃圾回收过程详解 文章目录 JVM 内存模型与垃圾回收过程详解1. JVM内存分区1.1 具体分区1.2 JVM内存分区的必要性 2. 垃圾回收2.1 CMS垃圾回收器2.2 G1垃圾回收器2.3 JVM垃圾回收从新生代到老年代 1. JVM内存分区 1.1 具体分区 Java虚拟机(JVM&#…

YOLOv10改进策略【注意力机制篇】| 蒙特卡罗注意力(MCAttn)模块,提高小目标的关注度

一、本文介绍 本文记录的是基于蒙特卡罗注意力(MCAttn)模块的YOLOv10目标检测改进方法研究。利用蒙特卡罗注意力(MCAttn)模块提高RepNCSPELAN4模块的跨尺度特征提取能力,使模型能够更好地传递和融合提取的多尺度特征&…

<Rust>iced库(0.13.1)学习之部件(三十二):使用markdown部件来编辑md文档

前言 本专栏是学习Rust的GUI库iced的合集,将介绍iced涉及的各个小部件分别介绍,最后会汇总为一个总的程序。 iced是RustGUI中比较强大的一个,目前处于发展中(即版本可能会改变),本专栏基于版本0.12.1. 注:新版本已更新为0.13 概述 这是本专栏的第三十二篇,主要介绍一…

Matlab实现海鸥优化算法优化回声状态网络模型 (SOA-ESN)(附源码)

目录 1.内容介绍 2部分代码 3.实验结果 4.内容获取 1内容介绍 海鸥优化算法(Seagull Optimization Algorithm, SOA)是一种受海鸥觅食和飞行行为启发的群体智能优化算法。SOA通过模拟海鸥在空中搜寻食物、聚集和分散的行为模式,来探索和开发…

免费ppt模板从哪找?一文看这里

国庆假期结束,回工作岗位的你是不是正忙着准备汇报材料?别担心,一份精美的PPT能为你的工作汇报增色不少。 而一个吸引人的PPT背景模板,更是能让你的演示脱颖而出。 为了帮助你们快速找到高质量免费ppt模板背景,以下特…

C++:string(题目篇)

文章目录 前言一、字符串相加二、仅仅反转字母三、字符串中的第一个唯一字符四、字符串最后一个单词的长度五、检查字符串是否是回文六、反转字符串 II七、反转字符串中的单词 III八、字符串相乘总结 前言 学习了string后,我们来学习对应的习题。 一、字符串相加 …

SWIFT Payment

SWIFT stands for Society for Worldwide Interbank Financial Telecommunication SWIFT——环球银行金融电信协会 SWIFT Payment Useful Link ISO 20022https://www.iso20022.org/https://www.swift.com/standards/iso-20022MT and MX Equivalence Tableshttps://www2.swift…

Python验证码识别——前处理

目前不少系统的验证码做得越来越复杂,人眼都难以识别,尤其是QQ之类的验证码,想要识别,太难了。 现在有这样一个验证码: 一般的验证码识别,都是先进行前处理,然后分割,在进行识别。这…

Keysight 是德 EXR608A 实时示波器

Keysight 是德EXR608A 实时示波器 EXR608A、EXR604A EXR408A、EXR404A EXR258A、EXR254A EXR208A、EXR204A EXR108A、EXR104A EXR058A、EXR054A EXR608A Infiniium EXR 系列示波器:6 GHz,8 通道 全部 8 个通道均可提供 6 GHz 的带宽,…

NVLink 和 NVLink Switch

高速、多 GPU 通信的基础模组,助力将大型数据集更快地输入模型并在 GPU 之间快速交换数据。 文章目录 前言一、简介二、NVLink 性能三、NVLink Switch1. 通过 NVLink 通信提高 GPU 吞吐量2. NVIDIA NVLink 交换机四、NVLink Switch规格1. 通过完全连接实现非凡性能2. 功能强大…

智慧出行:数字孪生三维可视化大屏交通管控系统

智慧出行已成为现代城市发展的重要支柱,数字孪生技术在交通领域的应用不断深化。结合三维可视化技术,打造功能强大的大屏交通管控系统,将对城市交通管理带来巨大变革。该系统通过实时监测和数据分析,提供精准的交通状况显示和预测…

湖南(消费者调研)源点咨询 市场调研中关于定性调研的释义

湖南(市场洞察)源点咨询认为:定性调研是有关大量、详细信息的描述、领会和见解,而不仅仅是一种测量。它不像定量调研那么肤浅,它能提供更多有效的数据。定性调研旨在透过表面现象,超越所谓的"首要&quo…

速度白嫖:Minimax海螺上线图生视频功能

一、什么是Minimax海螺 网址:https://hailuoai.video/ Minimax海螺是一款创新的内容创作工具,专注于将静态图像转化为动态视频。它利用先进的图像处理与生成算法,帮助用户将普通图片迅速转变为引人入胜的短视频,适合社交媒体、…

Java | Leetcode java题解之第458题可怜的小猪

题目: 题解: class Solution {public int poorPigs(int buckets, int minutesToDie, int minutesToTest) {if (buckets 1) {return 0;}int[][] combinations new int[buckets 1][buckets 1];combinations[0][0] 1;int iterations minutesToTest /…

矿井人员数据集,用于目标检测,深度学习,采用txt打标签,即yolo格式,也有原文件可以自己转换。总共3500张图片的数据量,划分给训练集2446张,

矿井人员数据集,用于目标检测,深度学习,采用txt打标签,即yolo格式,也有原文件可以自己转换。总共3500张图片的数据量,划分给训练集2446张: ### 矿井人员数据集用于目标检测的详细说明 #### 1. …

尚硅谷javaSpring

尚硅谷课件: 分类:尚硅谷Spring6教程 - Lixx Blog - 李晓旭的博客 简介 Java Spring 是一个开源的、全面的企业级应用开发框架,旨在简化企业级应用的开发。Spring 框架最初由 Rod Johnson 在 2002 年发布,并随着时间的推移,它已…

Linux系统和数据库常用的命令2

Linux系统和数据库常用的命令2 1、两台Linux机器ssh免密登录 client端登录server端需要免密,只需把公钥发送到server就可,会在server端生成一个authorized_keys文件 # 108机器上[rootclient ~]# ssh-keygen -t rsa // 非对称算法 Generating public/…

大学生就业招聘:Spring Boot系统的设计与实践

5系统详细实现 5.1 用户模块的实现 5.1.1 求职信息管理 大学生就业招聘系统的用户可以管理自己的求职信息,可以对自己的求职信息添加修改删除操作。具体界面的展示如图5.1所示。 图5.1 求职信息管理界面 5.1.2 首页 用户登录可以在首页看到招聘信息展示也一些求职…

IR2110S的代替品SLM2110CG一款能提供独立的高边、低边输出驱动信号 高低边门极驱动器

SLM2110CG是一款高压、高速的功率MOSFET和IGBT驱动器,它提供独立的高边、低边输出驱动信号。采用专有的高压集成电路和锁存免疫CMOS技术,提供可靠的单芯片驱动方案。逻辑输入电平与标准CMOS或LSTTL输出兼容,最低支持3.3V逻辑。输出驱动器具有…

Linux——定时任务调度

crond 任务调度 基本介绍 快速入门 就会每隔一分钟执行上述命令 crond 时间规则 比如快速入门案例里的 */1 * * * * 表示每隔一分钟执行一次 5个*分别代表分时天月周 crond 应用案例 上图案例2的详细步骤截图如下: at 任务调度 at 定时任务就是在要求的时间只…