www.demoscene.ruenglish version
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация   ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
генерация геометрии на GPU

 
Начать новую тему   Ответить на тему    Список форумов Demoscene.Ru -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
f0x



Зарегистрирован: 23.09.2007
Сообщения: 496


СообщениеДобавлено: Пт Сен 11, 2015 12:50    Заголовок сообщения: генерация геометрии на GPU Ответить с цитатой

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



Зарегистрирован: 23.09.2007
Сообщения: 496


СообщениеДобавлено: Вс Сен 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;
и все дела. осталось порешать топологией, а то или дырки в сферах или плоскости с лупомSmile))
_________________
кто сделал демку тот и выигралSmile (с) uncle night (?)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Ized
shader killer


Зарегистрирован: 28.12.2007
Сообщения: 128


СообщениеДобавлено: Пн Окт 05, 2015 12:29    Заголовок сообщения: Ответить с цитатой

Получать геометрию с помощью пиксельного шейдера - so 2005. Пришло время зашарить compute shaders и UAV.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
f0x



Зарегистрирован: 23.09.2007
Сообщения: 496


СообщениеДобавлено: Пн Окт 05, 2015 13:05    Заголовок сообщения: Ответить с цитатой

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


Зарегистрирован: 28.12.2007
Сообщения: 128


СообщениеДобавлено: Вт Окт 06, 2015 12:38    Заголовок сообщения: Ответить с цитатой

Compute не будет медленнее точно, а UAV никто не выпилит. Да и как я понял, ты в вершинном шейдере сэмплишь из текстуры, а это не круто. И с 9 убирайся как можно скорей, это ж садомазохизм какой-то. Как вариант, можешь дождаться Vulkan, он как раз в конце года выйдет и в этот же день выйдут драйвера с ним.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
f0x



Зарегистрирован: 23.09.2007
Сообщения: 496


СообщениеДобавлено: Вт Окт 06, 2015 17:48    Заголовок сообщения: Ответить с цитатой

UAV вроде как уже выпилили. Ну тоесть механизм оставили - теперь есть просто буферы с которыми можно делать пофиг что. А интерфейс, тобишь апишные вызовы и все все, на ноль помножили. Ну врать не буду, сам 12-й не пробовал, читал где-то.
Насчет 9-ки, да я сел переписывать на 11-й, в прошлом году еще, но начал с нового гуи, в принципе даже практически доделал, но в определенный момент он меня достал и я забил на это дело. В целом 11-й после 9-ки показался очередным геморроем - все эти resource view прочее, пока создашь какой-нибудь vertex buffer - поседеешь. А заниматься хочется творчеством а не разбором очередных хитросплетений масдайных апи.
Так что накидал интру на цц на старом двигле, под это дело приподнял скиллы, ну и чет после нее вдруг поперло - номалмаппинг, конвексы, ссао, шмапы, и тыды, на очереди hdr и тонмаппинг. Пока-что 9-ка не мешает, но я понимаю что это не надолго.
Сейчас занимаюсь платформонезависимыми вещами - переписываю систему анимации, поменял формат хранения патчей, ну и много всякой мелочи. До синта почти добрался. Ну и чистка говнокода. Код системы думаю, в идеале, дорефакторить до состояния когда все платформозависимые функции можно будет максимально безболезненно подменить, перекинув систему на 11-й, 12-й или что там придумают еще.
_________________
кто сделал демку тот и выигралSmile (с) uncle night (?)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Demoscene.Ru -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

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