Задумался о предложениях перейти на нормальный API. На вулкан пока

не тяну - работы слишком много, сейчас поломать все нельзя. Но хотя бы пересесть уже на шейдеры (самые простые, чтобы все также два треугольника нарисовать и натянуть текстуру), и чтобы затем все это можно было обернуть в NV_command_list. Ибо fixed pipeline дергать уже как-то даже неприлично.
Отсюда нубский вопрос: с чего начать переход? Потому что пока еще слабовато понимаю юниформы и их причастность ко всему остальному...

20 ответов

24 просмотра

мне кажется если есть все таки желание мягко вкатиться в вулкан, есть такая штука, называется NVRHI

Переход начать с того, что написать шэйдэр, точно повторяющий твой fixed pipeline и дёргать его. (На этом успокоиться. Поскольку всё равно мудаки из хроносов, тупо похоронившые fixed pipeline были мудаками, и никакого резона ориентироваться на их мнение по поводу того, что правильно а что нет не имеется).

Daedalus-Сердитенко Автор вопроса
Ilya Anfimov
Переход начать с того, что написать шэйдэр, точно ...

Ну, это понятно, допустим. Тогда резон делать шейдеры в моем случае будет только при условии, что с ними рендер множества мелких draw-call'ов станет быстрее и не будет "клинить" интероп. Или нет?

Daedalus-Сердитенко Автор вопроса
Deathwish
Один draw call для множества мелких

Батчинг всех вертекс буферов в один? Не помогло, когда на коленке слабал. Хотя, может, неправильно готовил.

Daedalus Сердитенко
Ну, это понятно, допустим. Тогда резон делать шейд...

1) Основной резон делать шэйдэры -- чтобы сохранялась совместимость с новыми картами, в которых fixed pipeline могут выкинуть. 2) Я так и не понял -- почему ты считаешь, что тебе обязательно делать много дроуколлов.

Daedalus Сердитенко
Батчинг всех вертекс буферов в один? Не помогло, к...

нет, в твоем случае просто скорее всего это просто совершенно неважно

Daedalus-Сердитенко Автор вопроса
Ilya Anfimov
1) Основной резон делать шэйдэры -- чтобы сохранял...

Потому что 10...12 FullHD 60 fps видеостримов в рантайме.

1) 12 стримов 60 fps -- это немного. Это около 1000 дроуколлов, если делать по одному. Затраты на это будут невелики. Ну, и думаю все жэлающие могут это объединить в пару дроуколлов, замапив каждый буфер в свою текстуру, и отправляя их по 8 штук в fragment shader, при жэлании. Но это, в общем, не важно.

Daedalus-Сердитенко Автор вопроса

Такая мысль меня и посещала. МБ и впрямь сгруппировать все буферы в один шейдер. Правда, как я понял, надо будет еще завести UBO с инфой о том, где и какая "текстура" должна лежать.

Daedalus-Сердитенко Автор вопроса
Daedalus Сердитенко
Такая мысль меня и посещала. МБ и впрямь сгруппиро...

выбор текстурки в рантайме для семплинга кстати в гле вроде за расширением

Daedalus Сердитенко
А почему неважно, собственно?

Потому, что 1000 дроуколлов в секунду отожрут у нас скорее всего менее миллисекунды в секунду на своё выполнение.

Daedalus-Сердитенко Автор вопроса
Constantine Shablia
выбор текстурки в рантайме для семплинга кстати в ...

Вот теперь бы почитать бы, как все это делать... А то так-то ничего сложного на вид, но начинаю читать - малость глаза разъезжаются.

Daedalus-Сердитенко Автор вопроса

Если речь про SwapBuffers - то да. Если про все остальное - как знать. Весь этот BindTexture/BindBuffer/GlDraw на один стрим отжирает сам по себе около 400 мкс.

Daedalus Сердитенко
Если речь про SwapBuffers - то да. Если про все ос...

Я имел в виду -- лишние накладные расходы на дроуколлы (которых можно попытаться избежать, возложыв какую-то логику на видюху). Так-то понятно, что если в дроуколле подразумевается передача стрима по pcie -- то мало он занимать не можэт. Но эти операцыи точно такжэ не будут мало занимать если будет выполняться по команде карточки.

Daedalus-Сердитенко Автор вопроса
Ilya Anfimov
Я имел в виду -- лишние накладные расходы на дроук...

Так стрим уже по враме передается из кУды. И сейчас самое больное место - unmap текстуры в CUDA, который "ждет" какого-то стейта от GL. Какого - особенно не рассказывается.

Daedalus-Сердитенко Автор вопроса

Так она и пишет. Проблема-то в том, что мапить на куду можно только одну текстуру на cuda-стрим. А потом, чтобы ею воспользоваться, ее надо анмапить. Вот на unmap (да и на map тоже) есть некоторые расходы. Потому что map накладывается на glDraw.

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

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

Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
2
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Коллеги, я тут для личных нужд пошел ставить MQTT сервер, пощупал mosquitto, но ужаснулся отсутствию такой банальности, как HTTP API для посмотреть список топиков. А тут что,...
Maksim Lapshin
14
У меня задача: написать брокер сообщений. Очереди и потребители. Очереди поддерживают приоритеты. Очередь отдает сообщения, только обработчикам с соответствующими характеристи...
Aleksandr Filippov
2
Решил тут попробовать embassy на bluepill. Все установил, собрал blink и успешно залил с помощью St link 2 китайского. Но после этого чип шиться перестал. На форумах прочел, ч...
Lukutin R2AJP
6
Немного оффтопа: а кто на чем сидит для осдева в плане ide/редактора? Последнее время сидел на vscode, но я его прям не могу нормально воспринимать, перешел на сlion, но меня...
Evg Resh
29
Карта сайта