Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
f0x

Зарегистрирован: 23.09.2007 Сообщения: 498
|
Добавлено: Пт Сен 11, 2015 12:50 Заголовок сообщения: генерация геометрии на GPU |
|
|
Исходная проблема: реально сложную hipoly геометрию с длинным стеком команд (навроде головы из инвита на прошлый цц) на цпу генерить тупо неудобно - тормозит все. Итоговый вертекс буфер выводится быстро, а редактирование превращается в черти-что. И ясен перец никакой динамики.
Решился тут на перенос пайплайна на видяху. Работает замечательно - сетки 512х512 можно уделывать в рилтайме как угодно без оглядки на сложность. Вся геометрия пишется в текстуру f32 пиксельным шейдером, извлекается из текстуры в вертексном.
Но есть затык в том как это выводить. Сейчас у меня висит вертексный/индексный буффер с нулями в координатах, и по большому счету все что от него нужно - это правильные индексы вершин. Т.е. даже имея все координаты точек в текстуре - всеравно приходится создавать буфер с индексами - в зависимости от полигонизации. Единственное что приходит в голову - ограничить размерность сетки степенями двойки и нагенерить их все заранее. Но это ставит крест на плавных лодах и оптимизации геометрии, а это как-бы важно, на сложной сцене сетку подбирать приходится часто с точностью до полигона.
Итого, собсно, вопрос - можно ли имея сетку координат в текстуре научить вертексный шейдер выводить полики как душе угодно (т.е. по сути формировать индексы на лету)? _________________ кто сделал демку тот и выиграл (с) uncle night (?) |
|
Вернуться к началу |
|
 |
f0x

Зарегистрирован: 23.09.2007 Сообщения: 498
|
Добавлено: Вс Сен 13, 2015 12:48 Заголовок сообщения: |
|
|
собсно сделал. индексный буфер лесом, в вертексном для простоты в uv положил номер вершины и относительный номер полигона (0..6 ибо сетка из квадов), в вертексном идет чтение смещения из таблички
static float2 ofs[6]={0,0,1,0,0,1,1,0,1,1,0,1};
по относительному индексу полигона
tc+=ofs[t]/g;
и все дела. осталось порешать топологией, а то или дырки в сферах или плоскости с лупом )) _________________ кто сделал демку тот и выиграл (с) uncle night (?) |
|
Вернуться к началу |
|
 |
Ized shader killer

Зарегистрирован: 28.12.2007 Сообщения: 128
|
Добавлено: Пн Окт 05, 2015 12:29 Заголовок сообщения: |
|
|
Получать геометрию с помощью пиксельного шейдера - so 2005. Пришло время зашарить compute shaders и UAV. |
|
Вернуться к началу |
|
 |
f0x

Зарегистрирован: 23.09.2007 Сообщения: 498
|
Добавлено: Пн Окт 05, 2015 13:05 Заголовок сообщения: |
|
|
ну, пока так работает, выписал практически все модификаторы быстренько.
Тут еще вопрос, не будет ли compute shader медленней? Я это все для рилтайм геометрии задумал.
А uav вроде как выпилили из dx12. А у меня все на 9-ке, не перетянул пока. И видимо буду перетягивать уже не на 11-й. _________________ кто сделал демку тот и выиграл (с) uncle night (?) |
|
Вернуться к началу |
|
 |
Ized shader killer

Зарегистрирован: 28.12.2007 Сообщения: 128
|
Добавлено: Вт Окт 06, 2015 12:38 Заголовок сообщения: |
|
|
Compute не будет медленнее точно, а UAV никто не выпилит. Да и как я понял, ты в вершинном шейдере сэмплишь из текстуры, а это не круто. И с 9 убирайся как можно скорей, это ж садомазохизм какой-то. Как вариант, можешь дождаться Vulkan, он как раз в конце года выйдет и в этот же день выйдут драйвера с ним. |
|
Вернуться к началу |
|
 |
f0x

Зарегистрирован: 23.09.2007 Сообщения: 498
|
Добавлено: Вт Окт 06, 2015 17:48 Заголовок сообщения: |
|
|
UAV вроде как уже выпилили. Ну тоесть механизм оставили - теперь есть просто буферы с которыми можно делать пофиг что. А интерфейс, тобишь апишные вызовы и все все, на ноль помножили. Ну врать не буду, сам 12-й не пробовал, читал где-то.
Насчет 9-ки, да я сел переписывать на 11-й, в прошлом году еще, но начал с нового гуи, в принципе даже практически доделал, но в определенный момент он меня достал и я забил на это дело. В целом 11-й после 9-ки показался очередным геморроем - все эти resource view прочее, пока создашь какой-нибудь vertex buffer - поседеешь. А заниматься хочется творчеством а не разбором очередных хитросплетений масдайных апи.
Так что накидал интру на цц на старом двигле, под это дело приподнял скиллы, ну и чет после нее вдруг поперло - номалмаппинг, конвексы, ссао, шмапы, и тыды, на очереди hdr и тонмаппинг. Пока-что 9-ка не мешает, но я понимаю что это не надолго.
Сейчас занимаюсь платформонезависимыми вещами - переписываю систему анимации, поменял формат хранения патчей, ну и много всякой мелочи. До синта почти добрался. Ну и чистка говнокода. Код системы думаю, в идеале, дорефакторить до состояния когда все платформозависимые функции можно будет максимально безболезненно подменить, перекинув систему на 11-й, 12-й или что там придумают еще. _________________ кто сделал демку тот и выиграл (с) uncle night (?) |
|
Вернуться к началу |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|