Блитю еще один слой с черными квадратами и разным уровнем прозрачности через альфаблендинг.
И вот что выходит:
Напрашивается рисование хитрых масок на дополнительном слое. Как это правильно делают в других играх?
Модераторы: Sanja, Максим Кич
Зря, это проще, чем кажется. По крайней мере не настолько, чтоб с этим нельзя было в общих чертах разобраться за вечер-два, но в долгой перспективе сэкономит кучу сил. В самом-самом кратце: Как рисовать 2D графику в OpenGL. Что, ты, возможно, уже знаешь, потому как следующая фраза несколько сбивает с толку:Oreyn писал(а):Вертексы пока слишком сложно для меня, слишком много нужно чехлов снимать.
Попиксельная прорисовка в зависимости от преград? Разве недостаточно просто сделать плавный переход цвета-затемнения так, чтобы не было видно ступенек яркости на границах тайлов? Просто если все интереснее и ты собираешься делать честный попиксельный рассчет, то это совсем другой разговор и вершины тайлов там далеко не самое страшное.Oreyn писал(а):Но теперь с нуля придумывать механизм программной попиксельной прорисовки этой маски в зависимости от источников света, их интенсивности и наличия преград, чувствую этот велосипед называется вертекс.
Увы, своего в SDL не планируется, они позиционируют как низкоуровневую прослойку для доступа к видеобуферу, уже на основе которой можно строить свои лайт 2д энжины.Максим Кич писал(а):А нет ли для SDL чего-нибудь вроде LightEngine2d из ZenGL? Выстроить векторную геометрию по тайлам — элементарнейшая задача, а времени и сил сэкономить удастся массу.
Аппетит приходит во время еды. Из вопроса "как сделать плавное затемнение/освещение между тайлами?" (Нарисовать и наложить маску) всплывает - "какие тайлы и в каком направлении должны быть затемнены/освещены?". И тут появляются и источники света, их интенсивность, направленность (луч фонарика или круговой точечный светильник), преграды и их огибание.Cfyz писал(а):Попиксельная прорисовка в зависимости от преград? Разве недостаточно просто сделать плавный переход цвета-затемнения так, чтобы не было видно ступенек яркости на границах тайлов? Просто если все интереснее и ты собираешься делать честный попиксельный рассчет, то это совсем другой разговор и вершины тайлов там далеко не самое страшное.
Там буков почти нет сплошной код...Максим Кич писал(а):http://www.dannybirch.com/simple-2d-lighting-system/
Гугль выдал вот такую штуку. Не конечное решение, но для затравки может подойти.
Если нужна помощь с переводом — стучись, постараюсь чем-нибудь помочь.
Я у себя всё затемнение рисую в одной текстуре (1 пиксель - 1 тайл) и отрисовываю эту текстуру с интерполяцией (и с увеличением, естественно), получаются сглаженные переходы между тайлами. У меня, правда, там не освещение, а просто поле зрения/туман войны, но принцип тот же.Oreyn писал(а):...Теперь думаю, как сделать этот переход плавнее? Чтобы освещенность менялась в пределах тайла. Минус еще в том, что такая квадратная освещенность напоминает об общей квадратности карты, которую пытается скрыть правильно нарисованный тайлсет.
Напрашивается рисование хитрых масок на дополнительном слое. Как это правильно делают в других играх?
Хорошая затравка, за ссылку спасибо.Максим Кич писал(а):http://www.dannybirch.com/simple-2d-lighting-system/
Гугль выдал вот такую штуку. Не конечное решение, но для затравки может подойти.
Если нужна помощь с переводом — стучись, постараюсь чем-нибудь помочь.
Хорошая лаконичная реализация, взял на заметку.watabou писал(а): Я у себя всё затемнение рисую в одной текстуре (1 пиксель - 1 тайл) и отрисовываю эту текстуру с интерполяцией (и с увеличением, естественно), получаются сглаженные переходы между тайлами.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 24 гостя