Шейдер обнаружения -_-

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

Шейдер обнаружения -_-

Сообщение artegor 17 янв 2016, 20:31

Как в шейдере "обнаружить" изменение цвета вершины ? То есть if попал на вершину свет (белого/красного цета) -> Сигнал об изменении цвета -> соответсвтующие действия. И самое главное, что если вершина с альфой ? То же самое попал свет -> вершина изменила альфу и стала видимой.
Или же как сделать тоже самое с помощью маски? Маска закрывает все вершины, но там где мы светим (на те вершины) "маска срывается" =)
Ну...вот как-то так... Как вы уже могли понять в шейдерах я пару дней так что прошу объяснить доступным языком и желателньо без мата ) либо ссылками на туториалы.
P.S. рассматривал disolve и Stancil шейдеры. Что-то близкое, но не то
artegor
UNIт
 
Сообщения: 95
Зарегистрирован: 10 дек 2013, 23:18

Re: Шейдер обнаружения -_-

Сообщение Receptor 18 янв 2016, 03:04

Примеры вертексных шейдеров есть в справке.
http://docs.unity3d.com/Manual/SL-Verte ... mples.html
Если сурфейсный шейдер, то http://docs.unity3d.com/Manual/SL-Surfa ... mples.html

Должно быть что-то вроде:
Синтаксис:
Используется csharp
...
...
struct Input{
              float4 color : COLOR;
};

vert (inout appdata_full v, out Input o){
             UNITY_INITIALIZE_OUTPUT(Input,o);
             if(o.color.r > 0.0) o.color.a = 1;
}
...
...
 

В данном случае если канал r вершины больше 0, то альфа этой вершины становится 1. Можно как-то так попробовать. Но похоже на костыль. Вообще в шейдерах лучше избегать блоков if, насколько мне известно. Возможно где-то ошибся.
_VK.com
Аватара пользователя
Receptor
Адепт
 
Сообщения: 1706
Зарегистрирован: 22 ноя 2011, 07:09
Откуда: Волгодонск


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

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

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