Как создать свет на подобии этого? (без смены дня и ночи, просто свет):
Я использую SFML. Как работать с GLSL вообще не понимаю... Точнее я понимаю что там происходит и какие шейдеры за что отвечают, но я не в состоянии писать свои...
Laynos
вообще легко гуглится на запрос "2d light", например
https://github.com/mattdesl/lwjgl-basics/wiki/ShaderLesson6
Если с шейдерами напряг, такой свет можно сделать тупо полупрозрачной маской (то есть берешь фотошоп, рисуешь круг , заливаешь нужным цветом с 128 альфой (или меньше/больше), а потом тупо как спрайт. так например делают в софте для создания карт. Но будут проблемы с тенями, да и свет статичный
вообще почитай https://github.com/mattdesl/lwjgl-basics/wiki - там все описано с позиции 2D, плюс есть неплохая вводная в шейдеры
war_zes
> Если с шейдерами напряг, такой свет можно сделать тупо полупрозрачной маской
> (то есть берешь фотошоп, рисуешь круг , заливаешь нужным цветом с 128 альфой
> (или меньше/больше), а потом тупо как спрайт. так например делают в софте для
> создания карт. Но будут проблемы с тенями, да и свет статичный
Пожалуй, это самое близкое, что я смогу сделать... Ну, допустим: есть у меня белый круг на прозрачном фоне. А как мне его наложить-то?
Мне правда очень сложно понять шейдеры, я ещё до них не дорос...
Просто у меня игрушка считайте что готова, хотелось бы для красоты свет реализовать. И я падаю в ступор, даже когда читаю уроки. Не мой уровень
Laynos
> Ну, допустим: есть у меня белый круг на прозрачном фоне. А как мне его
> наложить-то?
как любой спрайт (той же стены)... Но думаю лучше тогда рисовать не абстрактный круг, а источник света, например берешь стеной факел, и рисуешь полукруг спереди, и чуть меньший круг который будет ложится на стену.
war_zes
извините, но я Вас не очень понял...
В голове есть идея создать в Photoshop изображение с чёрным фоном и "отверстие" по середине с разным уровнем альфа по краям. Но мне кажется, что рендерить такую большую текстуру поверх остальных как-то странно...
Laynos
вам свет нужен или тени? просите свет, но на видео показаны тени - вы решите что что нужно
leonardo98
значит, мне нужны тени...
тени удобно рисовать отдельным буфером поверх всего остального, сформулируйте условия задачи, что есть, что нужно получить
сколько источников одновременно, есть ли пересечения их областей и т.п.
leonardo98
Нужно сделать класс Lamp("лампочка", "светило"). Каждая лампочка может светиться разными цветами (цвет задаётся в формате RGB) -> должно быть смешивание цветов при пересечении "окружностей ламп", если лампочек несколько. Так же у класса Lamp будет поле "r" ("радиус"), чтобы контролировать дальность света. В классе "GameCore" ("игровое ядро") хранится объект класса карты, в которой лежит информация обо всех объектах, лампочках и пр.
Нужно сделать так, чтобы лампочки светились и создавалась тень от объектов. Please, help... Мне бы простейший пример - я б порылся и может чего понял...
wawe
да, как-то так я и думал... В голове мелькает мысль найти объекты, которые пересекаются с окружностью лампы, и... всё. Я не знаю как их обрабатывать, ведь спрайты необязательно прямоугольные
найти объекты, которые пересекаются с окружностью лампы
Это зачем? Что это даст?
Простейший способ, который я знаю - центральная симметрия.
Laynos
свечение - это отдельный эффект, тень - другой, обратите внимание - на видео тень дают только определенные объекты, которые заданы геометрическими примитивами - это сделано чтобы задача имела хоть какое-то решение, у вас так же должно быть или там могут быть произвольные спрайты?
leonardo98
предпочтительнее, чтобы там могли быть произвольные спрайты... То есть освещение действует на все объекты одинаково...
Но если это довольно сложно сделать, то я согласен и на случай с заданием геом. примитивов... Мне самое главное - добиться похожего эффекта и вставить в игру...
Поможете примером? :(
Тема в архиве.