Как реализовано 2D освещение?

58

Мне интересно, как лучше всего подойти к эффекту «освещения» в 2D играх. Например, если мой главный персонаж светится, какие методы я могу использовать, чтобы завершить визуальный эффект светящегося персонажа, когда он находится рядом с другими объектами, на которые воздействует свет?

Кристофер Хоренштейн
источник

Ответы:

39

Вы можете наложить простую текстуру с эффектом свечения на мягкие прозрачные края. Если вы хотите, чтобы освещение / тени были похожи на то, что вы можете найти в трехмерном мире, вы можете сделать что-то вроде этого: http://www.catalinzima.com/2010/07/my-technique-for-the-shader-based-dynamic -2d-тени / . Однако, если вы новичок в HLSL, то это может быть слишком много.

редактировать : я наткнулся на хороший учебник HTML5 2D Light

zfedoran
источник
Эта ссылка именно то, что я искал. Я не могу отблагодарить тебя достаточно; это очень полезно.
Кристофер Хоренштейн
7

Существует проект XNA с открытым исходным кодом, представляющий собой отличную библиотеку и реализацию 2D-освещения, совместимого с профилем XNA 4.0 Reach - Krypton XNA .

Кристофер Хоренштейн
источник
4

Вам понадобится шейдерный эффект постфильтрации, написанный на HLSL или GLSL. Шейдер получит координаты игрока и изменит яркость для всех пикселей в определенном диапазоне. XNA поддерживает 2D шейдеры довольно неплохо.

Другим решением было бы моделировать яркость, используя текстуру с альфа-каналом. Текстура будет в основном черной, за исключением прозрачного пятна посередине. Эту текстуру мы накладываем на экран вашей игры с прозрачным пятном по центру «светящегося» персонажа игрока. Старые приключенческие игры использовали эту технику для имитации фонариков.

Стивен
источник
4

После некоторых поисков этот блог показался мне хорошим началом:

http://www.soolstyle.com/2010/02/15/2d-deferred-lightning/

Обязательно прочтите комментарии, потому что там есть некоторые улучшения, но пост в блоге поможет вам начать :).

Рой Т.
источник