开放大世界的 GpuTerrain + RVT

        Unity 原生有一个 Tarrain(地形)系统,但可惜并不能直接用于开放世界,当然是因为其效率问题。现在开放世界主流是使用 GpuTerrain + RVT ,也是一个成熟技术了。在项目中实现这个技术的是公司的 TA(我只做了接入),具体不了解,这里也只是大概说明下这个技术。

        如果对这套技术缺乏了解的,建议直接去看参考文章,而不是本文(因为本文写得非常简略,也不包含实现方案)。如果已经了解了的,这篇文章也可以跳过。

1、GpuTerrain

        GpuTerrain,也就是 Gpu 地形,将地形渲染的工作交给 GPU。其原理大概就是先生成一张平面的网格,然后给一张高度法线图。之后根据传入的高度和法线在 GPU 里面对网格顶点做偏移,从而形成地形。

        与传统地形的方案相比,这里一大优势就是充分利用了 GPU 的并行优势,而且还可以对数据结构做优化。例如可以对地形进行四叉树分块以及 LOD、加入视锥体剔除、遮挡剔除等算法,从而大幅减少运算量。

通过四叉树分裂、对地形进行LOD

        GpuTerrain 对于开放世界至关重要,同时也是实现 RVT 的前提条件,大概率会成为以后大地形项目的标配。        

2、实时虚拟纹理:RVT

        RVT(Runtime Vitrual Texture 实时虚拟纹理)是一张逻辑上无限大的,可以手动控制部分加载和卸载的动态贴图。原理与系统内存指针类似,当我们调用malloc方法时,操作系统会返回一个虚拟地址,这个虚拟地址会经过跳转表,跳转到物理内存上。

        RVT 虽然能实现无限大的地形,但实际上对与纹理的数量是有限制的。在传给 RVT 的数据中,每4张纹理(例如草地1,草地2,沙漠1,泥土1)都需要分组到同一张贴图中,这里我们称之为 AlphaMap。如果有8种纹理则需要2张图,12种3张,以此类推。Gpu 通过地形的 UV 和 AlphaMap 计算出每个地形顶点是第几张贴图的第几个通道,然后再从对应的地形纹理中取到相应的贴图,完成渲染。

3、针对海洋主题的优化

        对于航海主题,其实大部分岛屿都是孤零零随意摆放在地图中的,地形之间出现空位的概率很大。

各个海岛之间有较大的空间

        针对这种特殊情况,我们的TA对此做了优化,把岛屿中的一个地块单独抽象了一个四叉树节点,这样就能使得每个海岛都随意摆放,同时数据上也可以紧密排列。在地形数据烘培上,我们将整个世界分为 512*512 的棋盘格进行规整,配合整体数据对这套系统更为友好(后续会单独写一篇大世界的数据管理)。

4、参考文章

GitHub - wlgys8/GPUDrivenTerrainLearn: A Unity Project used for Learning GPU Driven Terrain Render

https://www.gdcvault.com/play/1025480/Terrain-Rendering-in-Far-Cry

https://zhuanlan.zhihu.com/p/300731406

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

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

相关文章

学习计算机网络(三)——IP地址

一、IP协议(IPV4、IPV6) 表示形式(两种): 点分十进制、二进制 地址被点分为4个部分,每个部分8位,总共32位。 A、B、C类地址都是单播地址(一对一通信),D类…

kubernetes k8s Daemonset 控制器 原理 讲解 配置

目录 1 DaemonSet控制器:概念、原理解读 1.1 DaemonSet概述 1.2 DaemonSet工作原理:如何管理Pod? 1.3 Daemonset典型的应用场景 1.4 DaemonSet 与 Deployment 的区别Deployment 部署的副本 Pod 会分布在各个 Node 上,每个…

Python轻量级 NoSQL 数据库之tinydb使用详解

概要 在现代应用开发中,使用数据库来存储和管理数据是非常常见的需求。对于简单的数据存储需求,关系型数据库可能显得过于复杂。TinyDB 是一个纯 Python 实现的轻量级 NoSQL 数据库,专为嵌入式场景设计,适用于小型项目、原型开发和教学等场景。本文将详细介绍 TinyDB 库,…

宠物行为:健康信号的早期预警

宠物,作为我们家庭中不可或缺的一部分,它们的健康同样需要我们细心呵护。宠物的行为变化,往往预示着健康问题的出现。而智能科技的融入,让这一过程变得更加科学和精准。 智能听诊器:宠物健康的守护者 智能听诊器&…

ISO 13485认证:医疗器械行业的质量护航者

在医疗器械行业,产品质量关乎生命。为确保每一件医疗器械的安全与可靠,ISO 13485认证作为全球公认的质量管理体系标准,正为无数企业提供强大的质量保障。对于企业来说,获得这一认证不仅是质量管理的提升,更是开拓全球市…

时间序列分析详解

时间序列分析详解 时间序列是按时间顺序排列的、随时间变化且相互关联的数据序列。 分析时间序 列的方法构成数据分析的一个重要领域,即时间序列分析。 时间序列根据所研究的依据不同,可有不同的分类。 按所研究的对象的多少分,有一元时间序…

Spring Cloud Alibaba微服务组件学习笔记

文章目录 一、版本说明版本关系项目创建 二、Nacos注册中心什么是NacosNacos注册中心核心功能Nacos Server部署(windows版本)Nacos Client服务Nacos Server配置项详解:Nacos集群搭建: 三、Ribbon负载均衡主流的负载方案&#xff1…

Spark MLlib 特征工程(上)

文章目录 Spark MLlib 特征工程(上)特征工程预处理 Encoding:StringIndexer特征构建:VectorAssembler特征选择:ChiSqSelector归一化:MinMaxScaler模型训练总结Spark MLlib 特征工程(上) 前面我们一起构建了一个简单的线性回归模型,来预测美国爱荷华州的房价。从模型效果来…

【C++语言】list的构造函数与迭代器

1. list的介绍及使用 1.1 list的介绍 list的文档介绍 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。 2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点…

C语言实现多种快速排序

目录 1.概念 2.快速排序hoare版本 2.1基本思想 2.2解释相遇处的值为何一定小于key 2.3hoare版本快速排序的实现 3.快速排序挖坑法 3.1基本思想 3.2挖坑法快速排序的实现 4. 快速排序前后指针版本 4.1基本思想 4.2快速排序前后指针版本实现 5.快速排序非递归版本 …

苹果笔记本电脑可以玩steam游戏吗 MacBook支持玩steam游戏吗 在Steam上玩黑神话悟空3A大作 苹果Mac怎么下载steam

游戏是生活的润滑剂,越来越多的用户开始关注Mac平台上可玩的游戏。幸运的是,Steam作为最大的数字发行平台之一,提供了大量适用于Mac操作系统的游戏。无论你是喜欢策略、冒险还是射击类游戏,都能在Steam上找到适合自己Mac设备玩耍的…

从0开始搭建vue + flask 旅游景点数据分析系统(九):旅游景点管理之增删改查

这一期来做旅游景点数据的增删改查 先看下我们做好的效果是这样的: ## 1 后台接口 这里的接口已经考虑到了分页的情况,因为前端的表格是带有分页的,接受的前端传过来的get参数为 title 、page、 limit ,titie是查询的关键词&…

Matlab绘制像素风字母颜色及透明度随机变化动画

本文是使用 Matlab 绘制像素风字母颜色及透明度随机变化动画的教程 实现效果 实现代码 如果需要更改为其他字母组合,在下面代码的基础上简单修改就可以使用。 步骤:(1) 定义字母形状;(2) 给出字母组合顺序;(3) 重新运行程序&#…

iPhone 16 机模视频曝光,五种颜色各有千秋

科技博主的最新视频分享了苹果 iPhone 16 标准版的机模上手体验。 视频中展示了五种颜色的 iPhone 16:深邃的蓝色、柔和的粉色、纯净的白色、经典的黑色和生机勃勃的绿色。 与 iPhone 15 相比,iPhone 16 弃用了黄色,新增了白色,…

地质灾害评估和治理工程勘查设计资质乙级资质办理标准

地质灾害评估和治理工程勘查设计资质乙级资质的办理标准主要包括单位条件、专业技术人员条件、仪器设备要求以及申请材料等方面。以下是详细的办理标准: 一、单位条件 **1、法人资格:**申请单位应具有企业法人或者事业单位法人资格。 **2、管理体系&a…

奥运内容碎片化传播下,品牌营销开始要讲究“性价比”

8月12日凌晨,随着孙颖莎和其他代表各洲的运动员们一起熄灭了圣火,巴黎奥运会终于落下帷幕。 本届奥运会上,中国体育代表团表现出色,共获得40枚金牌,金牌总数位居全球榜首,创下了中国在境外奥运会上的最佳成…

人工智能领域颠覆性技术创新,数字人泛化AI时代来临

是先有鸡还是先有蛋,这个问题人类还没有搞清楚,这次又有一个新的问题产生了,是算法进化了AI,还是AI进化了算法。我们知道直播平台都是利用算法对数字人直播进行斟别,但这一次被数字人泛化技术颠覆了,AI回复…

报错解决——苹果电脑mac装windows10,总是提示“启动转换”安装失败:拷贝Windows安装文件时出错

报错原因: 所安装的镜像文件大于4GB。 解决办法一: 使用小于4GB的镜像文件。 参考文章: 安装小于4GB的windows系统镜像 小于4GB的windows10镜像下载: 系统库官网 解决办法二: 参考文章: Mac air装…

VS实用调试技巧(程序员的必备技能)

调试的重要性 在我们写代码的时候,如果程序出现了bug,那么下一步就是找到bug并修复bug!而这个找问题的过程就被称为调试(英文叫debug,消灭bug的意思)。 调试能观察到程序内部执行的细节,可以增加程序员对…

Kafka系列之:Kafka Connect深入探讨 - 错误处理和死信队列

Kafka系列之:Kafka Connect深入探讨 - 错误处理和死信队列 一、快速失败二、YOLO:默默忽略坏消息三、如果一条消息掉在树林里,会发出声音吗?四、将消息路由到死信队列五、记录消息失败原因:消息头六、记录消息失败原因…