2014-11-29 6 views
0

Я делаю 2D-прокрутку.LibGDX - Направленный/Поверхностный свет

Используя this tutorial, я сделал приятный мерцающий свет.

enter image description here

Используя этот метод, как бы я сделать направленный свет, который появляется только на поверхности? Блоки хранятся в массиве двумерных байтов.

Я также попытался сделать 2D-свет [] [] массив и вычислил уровень в зависимости от того, где был блок. Однако заставить его работать с другими источниками света (например, факелами) было очень сложно. Я бы очень хотел использовать шейдеры для этого. Он выглядит намного более гладко. Кроме того, мне не нужен направленный свет, чтобы исчезнуть, когда он идет в блок, мне просто нужно, чтобы свет полностью остановился, когда он попал в сплошной блок.

+0

Неужели ypu посмотрел на лампы bix2d? – Veljko

+0

@ Велько Да, у меня есть. Однако они выглядят не так хорошо, как шейдеры. Кроме того, мне нужно будет создать тело для каждого блока, и это будет боль. (Я не использую box2D) – Anuken

ответ

1

Если вы хотите только иметь эффект освещения на земле, вы можете просто применить световую карту на блоках (например, в учебнике), которая имитирует желаемый свет, если блок подключен к прозрачному/воздушному блоку ,

Если вы хотите, чтобы некоторые объекты также отбрасывали тени (например, деревья, которые заставляют свет исчезать в блоке менее ярким, вы можете создать карту окклюзии сцены и в постобработке проверить пиксели для возможного пиксель окклюдера на пути обратного света вектора. Но это немного сложнее, но есть учебник, который мог бы помочь here. Он касается освещения теней, и он дает великолепный результат :), и он должен быть также можно адаптироваться к направленным огням :).