шейдерное положение солнца - glsl - PullRequest
1 голос
/ 23 января 2011

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

Для имитации траектории солнца у меня есть таймер, и положение света определяется с помощью:

fvLightPosition.x=-cos(Time)*speed;
fvLightPosition.y=sin(Time)*speed;
fvLightPosition.z=100.0;

Таймер - это переменная float Time0_X

Я почти получаю правильную траекторию, за исключением того, что она перевернута и как-то выглядит немного странно.Кто-нибудь может дать мне совет, как правильно моделировать траекторию Солнца?

Я использую RenderMonkey для создания шейдера.

1 Ответ

1 голос
/ 23 января 2011

Убедитесь, что вы масштабируете значение Time так, чтобы оно лежало между 0 и 2*PI радиан (что соответствует 0 и 180 градусам соответственно).Если ваше исходное значение Time варьируется от 0 до некоторого числа MAX, вы можете выполнить масштабирование следующим образом: (Time / MAX) * 2PI.

Я не уверен, что означает speed, ноСкорее всего, вы не должны умножаться на это.Значения cos и sin представляют компоненты X и Y вектора между солнцем и источником, поэтому вы должны умножиться на расстояние солнца от центра вашей сцены, которое обычно постоянно.

...