Geometry Clipmap Limits

2024-01-19 00:18
文章标签 geometry limits clipmap

本文主要是介绍Geometry Clipmap Limits,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 Geometry Clipmap Limits

   我非常喜欢geometry clipmap的思想,甚至还翻译过Hoppe那篇著名的paper,显然这是越来越多的图形计算从cpu到gpu转移的经典例子之一。可惜一直都没有机会实现,直到前段时候,需要编写一个地形系统,终于有了尝试的机会。在完成地形之前,一切都非常好,不幸的是,当实现纹理时,却遇到了非常大的问题,再次印证了那句老话:没有实践过,永远不知道会有什么问题。

   仔细看就会发现,所有关于clipmap的文章只讨论过如何计算纹理坐标,却没有讨论过如何“贴”纹理。如果你只考虑程序纹理,那么很幸运,不会遇到任何问题。但是如果需要使用texture spalette(也就是游戏中最常见的情况),Boom~~,问题出现了。对于传统的chunk地形来说,通常每个地形有一张自己的texture spalette,以及相关的纹理t1,t2,t3,无聊渲染还是LOD处理,都以这整个chunk为单位。而对于geo clipmap来说,没有了chunk的概念,每个clipmap tile都可能包含属于多个chunk的数据,当渲染这个tile时,应该用哪一个chunk的spalette呢? 解决方案之一是更新clipmap数据时,同时动态生成每个tile的spalette,但这并不能解决问题。假设chunk 1使用纹理t1,t2,t3,chunk2使用纹理t2,t4,t5这时当前tile应该用哪几张纹理呢?除非规定所有tile都只能用有限的(显然对于dx9级的显卡来说是8张)几张纹理,否则这将成为一个非常难以解决的问题。multipass也许能解决这个问题,不过这样就完全违背了使用clipmap的初衷——一种高效,简洁的方案——效率还有可能不如传统的方法。Texture array也是潜在的可行方案,可惜这就需要DX10的支持。

     非常不幸,这是一篇我目前没有解决方案的blog,看到GameDev上也有人遇到了这个问题,同样没有可行的方案。结果非常郁闷,几天来编写的代码几乎都作废了,不得不回到传统的chunk方法上来:(  如果你正在考虑实现geo clipmap,那么当心遇到同样的问题,如果你不小心想出了解决方案,也不要忘了告诉我:)

 

ps:blog要搬家了,有没有人知道什么工具可以自动搬到cnblog?

这篇关于Geometry Clipmap Limits的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/620720

相关文章

【ros2】geometry_msgs::msg::TransformStamped 数据类型详解

geometry_msgs::msg::TransformStamped 数据类型详解 1. 数据类型定义 geometry_msgs::msg::TransformStamped 是 ROS 2 中的一个消息类型,用于表示一个时间戳和坐标变换信息。 2. 结构 geometry_msgs::msg::TransformStamped 包含以下字段: struct TransformSt

HDU 1086 You can Solve a Geometry Problem too(判断线段相交)

题目地址:HDU 1086 就这么一道仅仅判断线段相交的题目写了2k多B的代码。。是不是有点浪费。。。但是我觉得似乎哪里也优化不了了。。。。 判断线段相交就是利用的叉积。假如现在两条线段分别是L1和L2,先求L1和L2两个端点与L1的某个端点的向量的叉积,如果这两个的叉积的乘积小于0的话,说明L1在是在L2两个端点之间的,但此时并不保证一定相交。此时需要用同样的方法去判断L2是否在L1的两个端

HDU4932Miaomiao's Geometry(暴力)

题目:HDU4932Miaomiao's Geometry(暴力) 题目大意:给出N个点,然后要求你将这些点都覆盖。覆盖的条件,用等长的线段,并且一条线段覆盖这个点要求这个点在这个线段的左端或是右端。 解题思路:一开始就直接暴力,但是题意没有理解清楚,一条线段可以有覆盖两个点的情况。一个点要不作为左端点,要不做为右端点,长度就取暴力中的最小的线段长度,最后再取最大的长度。可是这样会

Enhancing Octree-Based Context Models for Point Cloud Geometry Compression 论文笔记

1. 论文基本信息 发布于: IEEE SPL 2024 2. 创新点 分析了基于 one-hot 编码的交叉熵损失函数为什么不能准确衡量标签与预测概率分布之间的差异。介绍了 ACNP 模块,该模块通过预测占用的子节点数量来增强上下文模型的表现。实验证明了ACNP模块在基于八叉树的上下文模型中的有效性。 3. 背景 现有上下文模型的局限性: 现有的上下文模型使用交叉熵作为损失函

ThreeJS geometry的顶点世界坐标

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title></title><style>body {margin: 0;overflow: hidden;/* 隐藏body窗口区域滚动条 */}</style><!--引入three.js三维引擎--><script src="../../three.js-master/

【Three.js】知识梳理三:Three.js几何体Geometry

1.什么是几何体Geometry? 在 Three.js 中,几何体(Geometry)是一个数据结构,包含了用于描述三维物体的基本信息,如顶点(vertices)、面(faces)和它们的关联属性(例如颜色、法线、纹理坐标等)。将几何体与材质(Material)相结合,我们可以创建出形状丰富、颜色各异的三维物体。 1.1缓冲类型几何体(BufferGeometry) BufferGeome

HDU - 3030 Increasing Speed Limits

题意:求有长为m的序列生成的长度为n的序列的上升子序列的个数 思路:生成完长为n的序列后,首先我们想到(nlogn)的求上升序列的方法,然后再这个基础上改进,每插入一个的时候,我们可以得到左边的小于它的个数,然后我们就可以得新增加的上升子序列是sum(id-1)+1,然后更新树状数组 #include <iostream>#include <cstdio>#include <cstri

ArcSDE10.1使用st_geometry环境配置

一、安装ArcGIS和ArcSDE 版本选择:10.1   二、安装Oracle数据库 版本选择:11gRelease 2 (11.2) for Microsoft Windows x64 (64-Bit)   三、安装Oracle Client 版本选择:11g Release 2 (11.2) forMicrosoft Windows (32-Bit) 安装步骤: (1

几何(geometry)

题目描述 小可可最近在学习平面几何! 给定平面上的 n n n个点 ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x i , y i ) (x_1,y_1),(x_2,y_2),…,(x_i,y_i) (x1​,y1​),(x2​,y2​),…,(xi​,yi​)。 根据题目要求,输出下列两个值其中一个: 任意两点间欧几里得距离最大值的平方,对于两个点 (

【索引】Chapter 4. Geometry

AOAPC I: Beginning Algorithm Contests -- Training Guide (Rujia Liu) Chapter 4. Geometry Basic ProblemsGeometric Computations in 2D Geometric Algorithms in 2D Geometric Computations and Al