Товарищи, такой вопрос Вот есть много объектов с рандомными идшниками. Скажем,

64к прямоугольников. Можно ли каким-то образом в шейдере индексироваться через эти идшники в индекс прямоугольника в общем буфере, куда они последовательно записаны?

4 ответов

11 просмотров

ну например IDшником инстанса

Роман-Катунцев Автор вопроса

Но тогда в любом случае нужно на цпу пересчитывать ид в позицию, я как раз думаю, можно ли это как-то обойти, сделать аналог ассоциативного контейнера в памяти гпу

Роман Катунцев
Но тогда в любом случае нужно на цпу пересчитывать...

Я так делаю - у меня на карточке лежит большой буфер с данными по всем объектам. Дальше на фрейме фильтруешь IDшники инстансов видные в кадре, сортируешь или что там надо. Потом в шейдере по InstanceID индексируешь этот буфер и рисуешь.

Роман-Катунцев Автор вопроса
Skarn
Я так делаю - у меня на карточке лежит большой буф...

Ну да, ситуация примерно такая же, но проблема в чём, мне нужно отрисовывать очень много символов по их идентификатору (4 бита, 32 - индекс символа в юникоде, ещё 32 - хеш его источника, файла шрифтов определённого размера). Все они лежат в огромной текстуре, есть буфер, в который они записаны по порядку загрузки (по сути, в произвольном). Сейчас на вход подаётся структура из экранных координат и порядкового номера символа в буфере. Но при её формировании используется std::unordered_map<uint64_t, size_t>. А хотелось бы сразу писать в входной буфер просто индекс символа, без предварительного поиска его позиции, поскольку маппинг всё равно стабильный. То есть, нужна реализация хеш-таблицы или что-то похожее в шейдере.

Похожие вопросы

Обсуждают сегодня

Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
с помощью чего можно бота добавить как админа в чат? (условно в боте есть кнопка, нажатие на которую приводит тебя к выбору чата и выдаче прав боту)
ηє νєямσяє
5
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
а чем лучше всего сделать глобальный лок, если много нодов, до сотни? ну то есть мне надо, чтобы некоторые операции с объектом не происходили одновременно. перемещение между н...
Д. П.
15
Подскажите как мне лучше держать websocket сединение и переодически передавать в него данные? Сначала я сделал так: for _ in 1...1000 { try? await ws.send("test") try...
Mihail Verenich
2
А цены чем оправданы?
Lencore
7
Hello, I want to ask. I trained EfficientNet V2 Small and achieved 98% accuracy and F1 score on test data. I did the same with a simple CNN and achieved 97% accuracy and F1 sc...
~
2
Или к тому, что возложить ответственность на команду OTP, это хорошо, а взять её на себя, это не хорошо? )
Юрий Жлоба
7
я часов 15 назад начал пытаться написать хоть что-то напоминающее ос и у меня есть проблема, которую я пытаюсь решить последние часов 5: есть крч 2 исходника с минимальным код...
Al1to
17
Коллеги, доброе утро. Запустил на удаленном хосте приложение (ручками зашел туда по ssh и запустил, не командой удаленно). Создал потом ssh-туннель, и с моей машины приложение...
Δημήτηρ
9
Карта сайта