Страница 1 из 1

Vertex Shader

СообщениеДобавлено: 29 июл 2010, 10:58
Den_Des
Я на форуме нашел интересную инфу:
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-а?

Заранее спасибо.

Re: Vertex Shader

СообщениеДобавлено: 29 июл 2010, 11:14
Paul Siberdt
1 - Можно навесить на объект материал с шейдером, что поддерживает вертексный цвет, такие есть в списке материалов Юни, например шейдер VertexLit.
Модель придется повертексно раскрасить/осветить в графическом редакторе.

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

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

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

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

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

3 - можно написать собственный шейдер под свои нужны... :)

Re: Vertex Shader

СообщениеДобавлено: 29 июл 2010, 11:47
Neodrop
Пауль, пункт 2 слишком нагрузный для реалтайма. Я столкнулся с сильными тормозами в Редакторе цветов вершин в своём Деформаторе. Пришлось эту работу в поток выводить.

Re: Vertex Shader

СообщениеДобавлено: 29 июл 2010, 14:37
Paul Siberdt
Не-не.. не для реалтайма... у меня на астероиде спавнятся ямки для кристаллов при инициализации сцены. И эти ямки я единожды подкрашиваю цветом астероида в месте, куда их ставлю. Очень дешево и сердито.

Так же, на старте, дисплейсится и окрашивается градиентом сам астероид.