Nano Hash - криптовалюты, майнинг, программирование

Поиск близлежащих треугольников с помощью 3D-конвейера?

Допустим, у вас есть сетка. Рассмотрим один из треугольников. Допустим, вы хотите узнать, какие треугольники являются соседями этого треугольника.

Фактически:

Знает ли OpenGL (или какой-либо другой аспект 3D-конвейера) каким-то образом эту информацию?

Единственный известный мне способ найти соседние треугольники — это просто просмотреть все вершины меша.

Мой вопрос:

На уровне фактического 3D-конвейера знает ли «аппаратное обеспечение», какие треугольники являются смежными??

Или есть какая-то магия, возможно, подход на уровне шейдеров, который мгновенно дает эти ответы?

Или, может быть, на уровне физики каким-то образом можно быстро узнать, какие треугольники меша столкновения являются смежными?

Или, возможно, вы можете получить эту информацию, написав собственный шейдер, «знает» ли уровень шейдера эту информацию?

В чем дело, знатоки низкого уровня?? Спасибо

PS, конечно, если эта информация НЕ доступна "из аппаратного обеспечения", лучше всего поддерживать какую-то пространственную базу данных вашего меша. Достаточно просто, но глупо, если информация уже доступна из какого-то аспекта конвейера/оборудования. Спасибо!


ПОСЛЕДНЕЕ ЗАМЕЧАНИЕ для будущих читателей: я подробно обсудил этот вопрос с парой людей, которые работают над аппаратным обеспечением.

Вот ответ:

Действительно, одним словом, 3D-конвейер НЕ знает о соседних треугольниках: это так просто. Вершина визуализируется только относительно двух других в одном треугольнике, и все, как объясняет Антеру. Надеюсь, это поможет кому-то.


Ответы:


1

Нет, OpenGL не знает и не заботится о том, что близко. Он отображает каждый треугольник отдельно. Единственный случай, когда соседние треугольники имеют значение, — это использование геометрических шейдеров, но в этом случае вы должны предоставить информацию о смежности.

Для рендеринга аппаратное обеспечение заботится только о том, какие вершины являются общими, поэтому оно не затеняет их чаще, чем необходимо, если это возможно (т. е. если они помещаются в кеш вершин).

09.12.2011
  • Он не отслеживает, какие из них являются общими, но хранит список тех, которые затенены в кеше, поэтому, если через индексный буфер запрашивается новая вершина, он может проверить, не затенена ли она уже/кэширована. См. здесь: fgiesen.wordpress.com/2011/07/03/ за очень подробным объяснением того, что происходит. 10.12.2011

  • 2

    Насколько я понимаю, Open GL просто рисует то, что вы ему говорите. Он не поддерживает никаких внутренних списков или иерархий. Так что нет, не будет.

    09.12.2011

    3

    Open GL ES может не знать, какие треугольники находятся «рядом» друг с другом, но отложенный рендеринг на основе тайлов в графическом процессоре, используемый аппаратным обеспечением устройства iOS, вероятно, знает, по крайней мере, до уровня «одного и того же тайла». Однако эта информация непрозрачна для кода приложения.

    09.12.2011
  • Попробуйте поискать в Google PowerVR и/или Imagination Technologies. Кажется, на их сайте есть несколько официальных документов. 10.12.2011

  • 4

    Вы можете создать соседнюю структуру данных. Если сетка хранится как:

    • список вершин
    • список треугольников, где каждый треугольник является тройкой индексов вершин.

    Затем для каждой вершины легко создать список индексов треугольников, в которых эта вершина используется. При этом для проверки соседних треугольников достаточно проверить только треугольники из 3-х списков.

    10.12.2011
  • Являются ли сетки настолько большими, что вам нужна база данных? Для этого подхода необходима некоторая идентификация вершин и треугольников. Если операций удаления не будет слишком много, хорошей реализацией будут списки с идентификаторами объектов, совпадающими с позицией в списке. Если у вас будет много операций удаления, чем подходит карта (словарь). 10.12.2011
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..