TerraPath #6
Кратко о содержании сегодняшнего поста:
Освещение.
Чтобы создать освещение у нас есть огромное количество вариантов, рассмотрим 3 основных из них:
1) Считать освещение через шейдеры.
Плюсы:
- Очень классная картинка.
Минусы:
- Сложность в написании.
- Требуется наличие карт нормалей для каждого объекта, для более качественного освещения.
Вариант отличный, но очень долгий и сложный. Возможно в будущем освещение будет работать на шейдерах, но мы идем дальше.
2) Считать освещение по клеткам в каждом чанке (область 16*16 клеток):
Плюсы:
- Достаточно легко кодить.
Минусы:
- Выглядит чуток хуже чем шейдерное освещение.
Вариант хороший, но мы его немного оптимизируем.
3) Я назвал эту технику Space Screen Lighting Model. Суть в ней точно такая же как и в прошлом варианте, только свет считается исключительно для видимых блоков на экране.
Плюсы:
- Работает быстрее чем прошлый вариант.
- Возможно делать динамические источники света.
Минусы:
- Не возможно получить значение света за пределами окна видимости.
Пару слов как можно исправить этот минус:
На клиенте освещение можно считать как в 3 варианте, а на сервере как во 2, если потребуется знать свет в каждом тайле.
Варианты 2 и 3 можно улучшить графически, если считать среднее значение освещенных клеток на вершине. Освещение получится мягким, но я это реализую позже.
В итоге где-то за пару часов я написал вот такой вариант:
Сразу сделал возможность задавать освещение любому объекту.
Причём свет задается в формате RGB, то есть освещение цветное.
0xFFFFFF - самый яркий свет.
0x000000 - свет отсутствует.
Максимальная яркость по отдельным каналам:
И их комбинации:
Все три факела вместе:
А на этом всё, спасибо, что дочитали.
Также не пропустите прошлые посты:
https://pikabu.ru/profile/GooDCrafter
Ссылка на группу в вк:
https://vk.com/terrapath
В след. раз расскажу про смену дня и ночи.













Лига Разработчиков Видеоигр
8.8K постов23.1K подписчиков
Правила сообщества
ОБЩИЕ ПРАВИЛА:
- Уважайте чужой труд и используйте конструктивную критику
- Не занимайтесь саморекламой, пишите качественные и интересные посты
- Никакой политики
СТОИТ ПУБЛИКОВАТЬ:
- Посты о Вашей игре с историей её разработки и описанием полученного опыта
- Обучающие материалы, туториалы
- Интервью с опытными разработчиками
- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе
НЕ СТОИТ ПУБЛИКОВАТЬ:
- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры
- Посты, единственная цель которых - набор команды для разработки игры
- Посты, не относящиеся к тематике сообщества
Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.
ЗАПРЕЩЕНО:
- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции
- Выдавать чужой труд за свой
Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.
О РАЗМЕЩЕНИИ ССЫЛОК:
Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:
- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества
- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз
- Cсылка размещается в формате: "Страница игры в Steam: URL"