2016-02-12 9 views
-1

Привет, я пытаюсь создать шейдер для своих 3D-моделей с материалами и туманом. Все работает отлично, но светлое направление. Я не уверен, что его установить, поэтому я использовал фиксированное значение, но когда я поворачиваю свою 3D-модель (которая является простой текстурированной сферой), свет вращается вместе с ней. Я хочу изменить свой код, чтобы мой свет оставался в одном месте в зависимости от камеры, а не от самого объекта. Я попытался умножить матрицу вида на входные нормали, но тот же результат.Место установки фиксированного освещения HLSL

Также, следует ли настраивать направление света в соответствии с камерой?

EDIT: убрана Pastebin ссылку так, что это против правил ...

+0

Пожалуйста, не публикуйте ссылки на код. – JJF

+0

Как мне показать код? не было бы слишком большим, чтобы публиковать здесь? – user5901143

+0

См. [Как создать минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve). Если вы не можете этого сделать, это может быть не лучший форум для вашего вопроса. – JJF

ответ

0

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

Для освещения, как правило, вы передаете дополнительное значение для камеры, преобразуя значение в мировое положение вершины и нормальное положение в мире на необходимые ступени шейдеров (например, для пиксельной шейдерной сцены для освещения фонаря).

Таким образом, вы можете установить светлое положение или лучшее направление света в мировой системе координат пространства как глобальную переменную для ваших шейдеров. При этом освещение не зависит от положения камеры.

Если вы хотите получить эффект, как при использовании фонарика. Вы можете установить световое положение в положение камеры и направление света в направлении взгляда. Таким образом, яркие части всегда находятся в центре вашего усечения.

Удача