Vertex Shader

Полезная литература, исходники шейдеров из серьезных игр и других движков, ссылки на тематические ресурсы - всё здесь.

Vertex Shader

Сообщение Den_Des 29 июл 2010, 10:58

Я на форуме нашел интересную инфу:
http://forum.unity3d.com/viewtopic.php?t=54555
If you want to use model batching to reduce draw calls, you cannot modify the materials colour (if it's a shared material). using the above method will remove the model batching ability as well.

A good way to retain the ability to have all those models in one draw call and have different coloured models is to change the vertex colours (and use a shader that supports vertex colours)


Я как раз использую только цвета на моих модельках, и мне бы хотелось уменьшить DrawCalls. И как написано в этой теме, чтобы это сделать надо использовать Vertex shader, который будет просто менять цвет vertex-а, но не матерьял, потому что, если менять матерьял то, все цвета будут лежать в разных матерьялах, а это увеличивает DrawCalls.
Может кто нибудь помочь с написание такого shader-а?

Заранее спасибо.
Den_Des
UNец
 
Сообщения: 14
Зарегистрирован: 19 июл 2010, 09:11

Re: Vertex Shader

Сообщение Paul Siberdt 29 июл 2010, 11:14

1 - Можно навесить на объект материал с шейдером, что поддерживает вертексный цвет, такие есть в списке материалов Юни, например шейдер VertexLit.
Модель придется повертексно раскрасить/осветить в графическом редакторе.

Этот способ предпочтителен для большой геометрии при создании прелайта - повертексного аналога лайтмапов, а так же в обычных моментах дешевой (для вычислений) раскраски/кастомизации объектов.

Поможет Вам в этом случае выбор нужного шейдера и средства повертексного раскрашивания Вашей 3D-программы моделирования.

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

Этот способ предпочтительнее, если Вы, например, программно спавните объекты черт-те-где на поверхности и, скажем, надо добавить им общий цвет этой поверхности, чтобы объекты не светились или не темнели пятнами на ней.

Поможет Вам в этом случае документация и поиск в скриптинг референсе по Mesh.colors

3 - можно написать собственный шейдер под свои нужны... :)
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Vertex Shader

Сообщение Neodrop 29 июл 2010, 11:47

Пауль, пункт 2 слишком нагрузный для реалтайма. Я столкнулся с сильными тормозами в Редакторе цветов вершин в своём Деформаторе. Пришлось эту работу в поток выводить.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Vertex Shader

Сообщение Paul Siberdt 29 июл 2010, 14:37

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

Так же, на старте, дисплейсится и окрашивается градиентом сам астероид.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт


Вернуться в Шейдерная школа

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

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