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

Прозрачность от угла

СообщениеДобавлено: 22 ноя 2015, 00:21
O4karitO
День добрый.
Столкнулся с такой проблемой:
Пытаюсь написать шейдер с прозрачностью, чтобы прозрачность зависела от угла, под которым смотрят на объект, макс, когда под 90 градусов, 0 - когда параллельно плоскости.
Объект - простая плоскость (стекло с необычными свойствами).
Казалось бы все просто, берем скалярное произведение вектора нормали и вектора от камеры до вершины.
Синтаксис:
Используется csharp
 
o.worldvertpos = mul(_Object2World, v.vertex);
o.effect = dot( normalize(o.worldvertpos-_WorldSpaceCameraPos), v.normal) ;


но получается чушь какая-то, работает только при строго определенных углах азимута.

Может кто-то сталкивался?

Re: Прозрачность от угла

СообщениеДобавлено: 22 ноя 2015, 00:53
waruiyume
А где нормаль в мир поворачивается?

Re: Прозрачность от угла

СообщениеДобавлено: 22 ноя 2015, 01:06
O4karitO
waruiyume писал(а):А где нормаль в мир поворачивается?

Поверхность всегда в точке 0,0,0 c нулевыми углами.
Но я пробовал на всякий случай - та же лажа =(

Re: Прозрачность от угла

СообщениеДобавлено: 22 ноя 2015, 07:55
Cr0c
ВОТ ЭТО считает угол между векторами. Берем вектор в стекло, вектор forward стекла и считаем угол между ними.

Re: Прозрачность от угла

СообщениеДобавлено: 22 ноя 2015, 08:08
Woolf
Cr0c писал(а):ВОТ ЭТО считает угол между векторами. Берем вектор в стекло, вектор forward стекла и считаем угол между ними.


Ничего, что человек вам про шейдеры, а вы про скрипты? :))

Re: Прозрачность от угла

СообщениеДобавлено: 22 ноя 2015, 08:53
Cr0c
Простите, не заметил :(

Re: Прозрачность от угла

СообщениеДобавлено: 22 ноя 2015, 11:09
Cr0c
Может, ЭТО поможет немного? Вроде, принцип тот же, надо только упростить.

Re: Прозрачность от угла

СообщениеДобавлено: 22 ноя 2015, 17:10
O4karitO
Всем спасибо, решил попробовать написать заново и все заработало, хотя казалось бы никаких изменений нет.
Фантастика.
Принцип тот же, просто аккуратненько все расписал.