OGRE Шейдер спрайтов + с# эффект

Гість17 років у сервісі
Дані замовника будуть вам доступні після подання заявки
23.01.2009

Необходимо реализовать шейдер спрайтов для использования в движке OGRE.

Основные требования:

1)Поддержка нескольких спрайтов(например 3х) для одного объекта, которые заменяют друг

друга на разных расстояниях, причем по мере приближения/удаления от объекта один постепенно перетекает в другой.

2)При изменении позиции наблюдателя спрайт должен меняться:

- при изменении угла обзора - вращаться, причем скорость вращения

зависит от расстояния.

Чем ближе - тем сильнее реагирует(это важный момент!) на изменение угла обзора.

угол поворота спрайта

Dz=F(SphRad(dx,dy),S)=F(dx,dy,S)

где dx,dy -соответственно углы в x и y плоскостях, вместе формирующие

угол обзора, а S- расстояние от наблюдателя до источника света.

что-то вроде

F(dx,dy,s):=2Pi*sin(x)*sin(y)*e^(1/(1+s))

или даже попроще

F(dx,dy,s):=sign(x*y)*sqrt(|x*y|)*(1/(1+s))

где sign(a):=1 if a>0;0 if a==0;-1 if a

- при изменении расстояния - менять масштаб

Size=g(s)

где s - расстояние от наблюдателя до источника

например g(s):=((s+10)/(s+9))

3) В качестве картинок спрайтов нужно использовать png формат (интересует главным образом полноценная поддержка альфа-канала)

4) для вычисления видимых пикселей следует использовать OGRE occlusion query

5)в шейдере должны быть настраиваемые(через класс эффекта) параметры

На выходе должно быть:

1)файл .material

2)файлы ps/vs шейдеров

3)файл эффекта c# (см пример)

4)подробное описание