问题标签 [occlusion-culling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1018 浏览

c# - XNA,遮挡剔除和碰撞检测

我已经组合了一个四叉树/BSP 混合原型来测试我正在组合的 XNA 游戏引擎中的碰撞检测和遮挡剔除。

据我了解,硬件加速为我们提供的优化之一是能够在卡上存储顶点和索引列表,因此绘制相关几何图形的调用不必为每一帧发送模型数据。

在一个有很多几何图形的关卡中,您如何在 XNA 中进行管理?例如,如果我在 OpenGL 中工作,我会维护卡片中的内容列表,然后只发送需要更新的内容。但是,XNA 框架的高抽象级别似乎将其封装到我无法管理的程度。

告诉我为什么我错了,或者为什么我不应该担心。

0 投票
3 回答
9232 浏览

c++ - C++, OpenGL Z-buffer prepass

我正在制作一个简单的体素引擎(想想 Minecraft),目前正处于摆脱遮挡面以获得一些宝贵的 fps 的阶段。我在 OpenGL 中的实验并不多,也不太了解 glColorMask 魔法是如何工作的。

这就是我所拥有的:

这有点奏效,但是一旦我改变相机位置,世界开始消失,我看到的线条越来越少,直到什么也没有。

0 投票
2 回答
1440 浏览

opengl - OPENGL ARB_occlusion_query 遮挡剔除

我很好奇 GPU GEMS 1 中建议的用于执行一定数量查询的遮挡剔除的方法。使用所描述的方法,您不能相互测试各个盒子,所以您应该执行以下操作吗?

测试框 A -> 渲染框 A

测试框 B -> 渲染框 B

测试框 C -> 渲染框 C

等等...

0 投票
2 回答
8482 浏览

math - 提取视锥平面(Gribb & Hartmann 方法)

一段时间以来,我一直在努力使用Gribb/Hartmann 方法提取平截头体平面,但收效甚微。我想建立一个相机视锥来剔除我的场景。

我正在使用右手坐标系中的列主矩阵。(OpenGL 风格 - 我使用 C# 和 Playstation Mobile,但数学应该相同)

我想在世界空间中获得我的飞机,所以我从 View-Projection Matrix(即 projectionMatrix * viewMatrix)构建我的平截头体。视图矩阵是相机世界变换的逆矩阵。

问题是; 无论我调整什么,我似乎都无法得到正确的截锥体。我认为我可能遗漏了一些明显的东西。

如果我在向下看 z 轴的同时向左或向右“扫射”我的相机,我的平面的法线会发生变化,因此它们总是指向场景的原点——这让我认为它们不在世界空间中...

0 投票
1 回答
466 浏览

c# - Irrlicht 超快广告牌渲染

我必须在 Irrlicht 中渲染大量的彩色广告牌,但这真的很慢。我使用了许多 BillboardSceneNodes:

我该如何优化呢?我如何使用广告牌进行遮挡剔除或截锥剔除?

0 投票
1 回答
1755 浏览

opengl - 渲染中最先进的剔除和批处理技术

我目前正在升级和重组 OpenGL 渲染引擎。该引擎用于可视化建筑数据的大型场景(带有内部的建筑物),并且对象的数量会变得相当大。与任何建筑物一样,墙壁内有很多被遮挡的物体,您自然只能看到与您在同一房间内的物体,或者如果您在外面,则只能看到外部。这留下了大量应该通过遮挡剔除和截锥剔除来遮挡的对象。

同时有很多重复的几何体可以在渲染批处理中进行批处理,也有很多对象可以通过实例渲染进行渲染。

在我看来,很难以最佳方式结合渲染批处理和剔除。如果在同一个 VBO 中批处理太多对象,则很难在 CPU 上剔除对象以跳过渲染该批处理。同时如果你跳过cpu上的剔除,很多物体会在不可见的情况下被GPU处理。如果您完全跳过批处理以便更轻松地剔除 CPU,则会出现大量不必要的渲染调用。

我已经对现有技术和理论进行了一些研究,以了解如何在现代图形中解决这些问题,但我一直无法找到任何具体的解决方案。一个同事和我想出的一个想法是将批次限制在彼此相对靠近的物体上,例如房间内的所有椅子或 n 个会面半径内的所有椅子。这可以通过使用八叉树来简化和优化。

有没有人对最先进的现代图形引擎中用于场景管理、剔除、批处理等技术的任何指示?

0 投票
1 回答
125 浏览

graphics - 旋转球体数据集的遮挡剔除

我目前正在执行一项任务,其中我必须为球体数据集实现一个仅 CPU 的光栅化器。数据集是静态的,因此在运行时不会发生变化,即使整个数据集可以在摄像机前旋转。

现在的想法是实现一些遮挡剔除方法,以便从相机的角度来看被其他球体遮挡的球体不会进入光栅化器的下一个阶段,(针对 z 缓冲区和像素着色进行测试)浪费CPU时间。

我一直在寻找实现这一目标的可能方法。首先,我想到了一个在八叉树中维护场景模型的分层 Z 缓冲实现。然而,由于数据集旋转,我需要重新计算每一帧的八叉树,这可能非常昂贵。我对吗?

我不确定在这种情况下,空间散列或一些更便宜的计算球体数据集的分层组织是否会更有益。对此有什么想法吗?请注意,这必须在 CPU 上完全实现。

0 投票
1 回答
1050 浏览

unity3d - Unity3D - 不在区域内渲染三角形

我有这个问题,即完美对齐的网格的侧面在某些角度变成黑点和黑线。该问题是由网格的侧面引起的,通过网格的正面可见。

因此,如果我可以对构成网格侧面的三角形进行一些剔除,那就太酷了(我想我放置一个不可见的碰撞盒,并指示统一不要在碰撞盒内渲染任何三)

但是,我不能为我的生活找到一种方法来做到这一点(最好在运行时也是如此!)

Unity 证明这是可能的,因为相机的 FAR 和 NEAR 剪裁平面使用了这种技术(如果我将 FAR 平面设置在墙的前面后面,侧面停止渲染,黑点和黑线消失)所以我我确信我们必须能够做到这一点。

有人知道我可以尝试什么吗?

在此先感谢,笑脸

0 投票
1 回答
924 浏览

algorithm - 什么是最快的阴影算法(仅限 CPU)?

假设我有一个 3D 模型:

在此处输入图像描述

该模型以顶点、面(所有三角形)和法向量的形式给出。该模型可能有孔和/或透明部分。

对于无限远处任意放置的光源,我必须确定:

  • [必需] 哪些三角形(部分)被其他三角形遮蔽

然后,对于部分阴影的三角形:

  • [奖金] 三角形面积的多少部分被阴影覆盖
  • [超级奖励] 提出了一个新的网格,可以准确地描述阴影的形状

我的最终应用程序必须在无头机器上运行,也就是说,它们没有 GPU。因此,所有来自 OpenGL、OpenCL 等的标准东西可能都不是最佳选择。

考虑到这一限制,确定这些事情的最有效算法是什么?

0 投票
0 回答
666 浏览

unity3d - 统一使用带有 Asset Bundle 的遮挡剔除

我正在开发一个包含大量对象和纹理的基于 Web 的 Unity 项目。所以我正在使用 Asset Bundles 在场景中动态加载资产。有没有办法在包含从资产包加载和实例化的对象的场景上使用遮挡剔除?