Перенос расчётов с шейдера в скрипт.

Шейдеры и все-все-все.

Перенос расчётов с шейдера в скрипт.

Сообщение kripto289 25 июн 2015, 20:15

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

Мне надо как-то перенести вычисление mul(UNITY_MATRIX_MVP, v.vertex) в скрипт. То есть передавать в шейдер дефолтные позиции вертексов. Как это сделать?
Аватара пользователя
kripto289
UNIверсал
 
Сообщения: 476
Зарегистрирован: 30 сен 2013, 03:30
Откуда: Екатеринбург
  • Сайт

Re: Перенос расчётов с шейдера в скрипт.

Сообщение waruiyume 25 июн 2015, 20:23

Нужно, вроде, матрицу проекции камеры умножить на объект ту ворлд камеры, или наоборот.
P.S. Этот изначальный фейл- вычислять реалтайм деформации на CPU. хотя, вас же нищеброды с тостерами до 70 т.р. не волнуют :D
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Перенос расчётов с шейдера в скрипт.

Сообщение kripto289 25 июн 2015, 21:11

waruiyume писал(а):Нужно, вроде, матрицу проекции камеры умножить на объект ту ворлд камеры, или наоборот.
P.S. Этот изначальный фейл- вычислять реалтайм деформации на CPU. хотя, вас же нищеброды с тостерами до 70 т.р. не волнуют :D

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

По поводу cpu-деформаций. Я пытаюсь сделать для воды аналог этого https://www.assetstore.unity3d.com/en/#!/content/16179. Исходя из тестов, на моём древнем Athlon x4, ati 4870 и fullhd мониторе, фпс в районе 200. Загрузка cpu около 4-5 мс. Не смертельно.
Я вообще пол инета перерыл, но нигде нет информации, как например сделаны inerection в cry engine, frostbyte и других играх.
Но вообще вот слайды по crysis1. Там в разрешении 64 на 64 рассчитывается анимация Тессендорфа, а потом на gpu с тесселяцией/displacement дополнительную рябь навешивают.
http://www.slideshare.net/TiagoAlexSous ... s-gdc-2008

ps Меня волнуют нищеброды с тостерами на mali 400 :D
Просто как-то мониторил playmarket на отзывы играм с графоном. Люди покупают сраный мегафон логин за тыщу, с процем 800мгц 1 ядро и mali 400, а потом пишут с ошибками комменты в стиле "ИГРА ГАВНО ОНА ЛАГАИТ РАЗРАБОТЧИКИ УРДЫ АПТИМИЗИРУЙТИ Я СТАВЛЮ АДИН БАЛ!!!!!!!"
Аватара пользователя
kripto289
UNIверсал
 
Сообщения: 476
Зарегистрирован: 30 сен 2013, 03:30
Откуда: Екатеринбург
  • Сайт

Re: Перенос расчётов с шейдера в скрипт.

Сообщение MF_Andreich 25 июн 2015, 21:26

kripto289 писал(а):
waruiyume писал(а):Нужно, вроде, матрицу проекции камеры умножить на объект ту ворлд камеры, или наоборот.
P.S. Этот изначальный фейл- вычислять реалтайм деформации на CPU. хотя, вас же нищеброды с тостерами до 70 т.р. не волнуют :D

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

По поводу cpu-деформаций. Я пытаюсь сделать для воды аналог этого https://www.assetstore.unity3d.com/en/#!/content/16179. Исходя из тестов, на моём древнем Athlon x4, ati 4870 и fullhd мониторе, фпс в районе 200. Загрузка cpu около 4-5 мс. Не смертельно.
Я вообще пол инета перерыл, но нигде нет информации, как например сделаны inerection в cry engine, frostbyte и других играх.
Но вообще вот слайды по crysis1. Там в разрешении 64 на 64 рассчитывается анимация Тессендорфа, а потом на gpu с тесселяцией/displacement дополнительную рябь навешивают.
http://www.slideshare.net/TiagoAlexSous ... s-gdc-2008

ps Меня волнуют нищеброды с тостерами на mali 400 :D
Просто как-то мониторил playmarket на отзывы играм с графоном. Люди покупают сраный мегафон логин за тыщу, с процем 800мгц 1 ядро и mali 400, а потом пишут с ошибками комменты в стиле "ИГРА ГАВНО ОНА ЛАГАИТ РАЗРАБОТЧИКИ УРДЫ АПТИМИЗИРУЙТИ Я СТАВЛЮ АДИН БАЛ!!!!!!!"

Я так и не понял почему не вершинным шейдером это делать...
А. Понял теперь, надо конечно подумать, но как то цель не оправдывает средства)
Передавайте в цвет направление нормированное, в UV2 силу степень смещения закодированную, как вариант, а сами вершинки двигайте все равно в шейдере. Не пересчитывайте меш каждый раз.
Holly Shovel Team
Аватара пользователя
MF_Andreich
Старожил
 
Сообщения: 924
Зарегистрирован: 20 июн 2013, 10:09
Откуда: Барнаул
Skype: mf_andreich
  • ICQ

Re: Перенос расчётов с шейдера в скрипт.

Сообщение kripto289 25 июн 2015, 22:13

MF_Andreich писал(а):
kripto289 писал(а):
waruiyume писал(а):Нужно, вроде, матрицу проекции камеры умножить на объект ту ворлд камеры, или наоборот.
P.S. Этот изначальный фейл- вычислять реалтайм деформации на CPU. хотя, вас же нищеброды с тостерами до 70 т.р. не волнуют :D

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

По поводу cpu-деформаций. Я пытаюсь сделать для воды аналог этого https://www.assetstore.unity3d.com/en/#!/content/16179. Исходя из тестов, на моём древнем Athlon x4, ati 4870 и fullhd мониторе, фпс в районе 200. Загрузка cpu около 4-5 мс. Не смертельно.
Я вообще пол инета перерыл, но нигде нет информации, как например сделаны inerection в cry engine, frostbyte и других играх.
Но вообще вот слайды по crysis1. Там в разрешении 64 на 64 рассчитывается анимация Тессендорфа, а потом на gpu с тесселяцией/displacement дополнительную рябь навешивают.
http://www.slideshare.net/TiagoAlexSous ... s-gdc-2008

ps Меня волнуют нищеброды с тостерами на mali 400 :D
Просто как-то мониторил playmarket на отзывы играм с графоном. Люди покупают сраный мегафон логин за тыщу, с процем 800мгц 1 ядро и mali 400, а потом пишут с ошибками комменты в стиле "ИГРА ГАВНО ОНА ЛАГАИТ РАЗРАБОТЧИКИ УРДЫ АПТИМИЗИРУЙТИ Я СТАВЛЮ АДИН БАЛ!!!!!!!"

Я так и не понял почему не вершинным шейдером это делать...
А. Понял теперь, надо конечно подумать, но как то цель не оправдывает средства)
Передавайте в цвет направление нормированное, в UV2 силу степень смещения закодированную, как вариант, а сами вершинки двигайте все равно в шейдере. Не пересчитывайте меш каждый раз.

Не, сделать то наверное можно на вершинном шейдере. Просто я мало где нашёл информации как вообще это делать, пришлось купить пак и смотреть исходник. А там сделано на cpu.
Но теперь я призадумался и попробую сразу вычисления перенести в шейдер.
Аватара пользователя
kripto289
UNIверсал
 
Сообщения: 476
Зарегистрирован: 30 сен 2013, 03:30
Откуда: Екатеринбург
  • Сайт


Вернуться в Shader Lab

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2