maaGames
@maaGames
Погроммирую программы

Как применить карту освещённости?

Есть тайловая карта средних размеров, допустим, 1024*1024 тайла. Тайлы квадратные, 48*48 пикселов. Есть карта освещённости для всей карты, размером 1024*1024 пиксела. Т.е. на каждый тайл приходится по одному пикселу. За счёт линейной интерполяции между тайлами происходит интерполяция освещённости. Размер вьюпорта 960*540 пикселов, поэтому на экране видно минимум 20*11.25 тайлов. Вьюпорт попиксельно сдвигается в любую сторону (скроллинг). Не могу понять, как сделать так, чтобы применялся только кусочек карты освещённости, в зависимости от видимых тайлов? Я нарисовал пример на картинке:
47b5bb0b2aaf43c8850b663bade009a7.jpg

Мне удалось написать шейдер, который применяет карту теней ко всему экрану, без учёта положения вьюпорта и видимых границ, т.е. вся карта теней проецировалась на экран, а не маленький её кусочек.
Не смог сформулирвоать вопрос так, чтобы гугл выдал что-то соответствующее. Нужно реализовать при помощи пиксельного шейдера или спрайта (на sfml размер спрайта равен размеру прямоугольника внутри текстуры и самый очевидный вариант не сработал из-за этого).
  • Вопрос задан
  • 120 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы