虚幻UE 材质-进阶边界混合之运行时虚拟纹理

之前在学习空山新雨后时对于边缘虚化过渡处理有很多技术
今天又要介绍一个边缘过渡的方法:运行时虚拟纹理

文章目录

  • 前言
  • 一、运行时虚拟纹理
  • 二、使用步骤
  • 总结


前言

边缘过渡柔和的方式我们之前介绍了很多,但是效果也不是最好的。
像素偏移PDO和我们今天的前提是一致的
世界对齐纹理需要两个材质相同
基于距离场对像素偏移PDO只能是交界处阴影

本次使用 运行时虚拟纹理 可以达到两个材质不同
一个材质在另个材质上叠加

一、运行时虚拟纹理

运行时虚拟纹理(Runtime Virtual Texture)是一种在游戏或应用程序运行时动态生成的纹理。与传统的运行时纹理不同,运行时虚拟纹理使用GPU按需生成和缓存纹理数据,以实现更高效和灵活的纹理管理。
通过使用运行时虚拟纹理,开发者可以在运行时动态地生成和缓存纹理数据,从而避免了重复加载和卸载纹理的开销。这有助于提高游戏的渲染性能,减少加载时间和卡顿现象。

二、使用步骤

效果展示:(地面为草(Uv没调,所以地面不真实),柱子是土)
在这里插入图片描述
在这里插入图片描述

1、创建两个运行时虚拟材质
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
运行时虚拟材质:
1、需要蔓延的材质(V_M)
2、蔓延的长度的材质(VM_H)
注意:纹理大小越大效果越好,蔓延长度的记得更改纹理内容

2、把需要蔓延的材质设置给物体
在这里插入图片描述

3、在场景中增加运行时虚拟纹理体积
在这里插入图片描述
通过吸管吸取需要蔓延的物体所设置的虚拟纹理,然后设置边界
注意:如果这里不设置,会产生和基于距离场对像素偏移PDO的方式一样,边界是阴影过渡。

4、需要蔓延处的材质修改
在这里插入图片描述
使用材质属性是因为我们要截止需要他们处理需要蔓延的材质的世界中的高度

5、到被蔓延的材质内设置被蔓延部分的控制
在这里插入图片描述
我们可以看出是通过Lerp节点使蔓延材质和被蔓延材质的过度
1、新的蔓延材质
设置给RuntimeVirtualTextureSample,设置UV是因为让过渡更自然
在这里插入图片描述 2、被蔓延材质的基础颜色(不需要讲)
3、高度控制
在这里插入图片描述
获得被蔓延物体可以被蔓延的长度
在这里插入图片描述
控制蔓延的长度和蔓延的过度
在这里插入图片描述
最后把他们固定到0和1之间供Lerp使用
在这里插入图片描述

6、被蔓延材质生成材质实例赋给模型
在这里插入图片描述
在这里插入图片描述

总结

扩展了边界混合新方式
材质真难啊啊啊!!!

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java lambda表达式如何自定义一个toList Collector

匿名类: package l8;import java.util.*; import java.util.function.BiConsumer; import java.util.function.BinaryOperator; import java.util.function.Function; import java.util.function.Supplier; import java.util.stream.Collector; import java.util.s…

git: Updates were rejected because the tip of your current branch is behind

一、报错含义 由于本地分支的tip落后远程分支,push操作被拒绝。 二、产生原因 我再本地拉去了新的分支并未同步到远程仓库,在新分支进行开发,由于前几天同步也创建了该分支并同步到了远程仓库,导致我本次push失败 三、解决方…

CES 2024:AI智能大爆发,引领科技新纪元

美国当地时间1月9日,2024年国际消费类电子产品展览会(CES)如期在内华达州拉斯维加斯举行。作为全球最盛大的科技盛会,每年,来自世界各地的顶尖科技企业都会参加CES,展示他们的最新科技产品和创新&#xff0…

linux磁盘总结

什么是page_cache linux读写磁盘,如果都是采用directIO的话,效率太低,所以我们在读写磁盘上加了一层缓存,page_cache。读的话,如果page_cache有的话,就不用向磁盘发出请求。写的话,也直接写入的…

【开源】基于JAVA语言的康复中心管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 普通用户模块2.2 护工模块2.3 管理员模块 三、系统展示四、核心代码4.1 查询康复护理4.2 新增康复训练4.3 查询房间4.4 查询来访4.5 新增用药 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的康复中…

C++ λ表达式

λ表达式提供了函数对象的另一种编程机制。 在 C 11 和更高版本中,Lambda 表达式(通常称为 Lambda)是一种在被调用的位置或作为参数传递给函数的位置定义匿名函数对象(闭包)的简便方法。 Lambda 通常用于封装传递给算法…

docker+django+ubuntu服务器 测试质量管理平台部署

1. 首先需要写一个dockerfile就和流水线配置一样 # 使用基础的 Python 镜像作为基础 FROM python:3.8# 设置工作目录 WORKDIR /mydjpro# 将项目的依赖项添加到容器中 COPY requirements.txt /mydjpro/ RUN pip install urllib3 RUN apt-get update && apt-get install…

银河麒麟v10安装前端环境(Node、vue、Electron+vite)

此帖子所提到的所有依赖包都是基于银河麒麟v10真机的arm架构包,如果是在windows上的虚拟机上 把依赖包换成x64的包即可,方法步骤都是一样 一.node安装 原始方法安装(建议用第二种nvm方法,因为更简单): 1…

如何在 Windows 中使用Copilot AI

Windows Copilot 是 Windows 中的一个新功能,它可以让你与一个智能助理进行对话,获取信息,执行任务,甚至创造内容。Windows Copilot 使用了 Bing Chat 的技术,它是一个基于 OpenAI 的 GPT-4 模型的聊天机器人。 目录 …

OSG加载STL模型

下载了2个简单stl模型,用基本的加载代码;直接可以加载; 查一点资料; 怎样在OSG中添加支持STL格式的模型文件? 使用OSG时,如果需要导入STL格式的模型文件,需要添加STL插件。 可以通过在代码中调…

Vue基础-搭建Vue运行环境

这篇文章介绍了在Vue.js项目中进行开发环境搭建的关键步骤。包括node.js安装和配置、安装Vue及Vue CLI工具、安装webpack模板、安装vue-router、创建Vue项目等步骤。这篇文章为读者提供了清晰的指南,帮助他们快速搭建Vue.js开发环境,为后续的项目开发奠定…

pyside6 捕捉主窗口关闭后,进行释放相关的资源

import sys from PySide6 import QtGui from PySide6.QtWidgets import QWidget,QApplication,QMessageBoxclass Message(QWidget):def __init__(self):# 如果希望窗口内嵌于其他部件,可添加parent参数super(Message, self).__init__()# 调用初始化方法self.initUI(…