Направленный источник света

Версия Minecraft
1.7.10
124
1
0
Приветствую участников форума) Имеется у меня позиция фонарика некого (абсолютная позиция по миру), а также вектор направления света. Как реализовать этот свет, т.е. чтобы он освещал мир (про источники света через мир знаю, но они всенаправленные, а мне надо направленный)
 
1,111
47
420
@Zloy_GreGan возродил мою веру в людей так что я объясню опять.
Есть 2 варианта как сделать направленный источник света
1) Использовать фрагментный и вершиный шейдер. Вершиный передаст uv и позицию фрагмента на сцене.
2) Использовать фрагментный шейдер и буффер глубины

1 вариант до жути прост в исполнении но там будут возникать проблемы если какие нить моды будут использовать свои шейдеры а так же будут подсвечиваться задние стенки блоков. Хз как с этим бороться. Но при этом этот вариант куда проще сделать в мультиплеере.

2 вариант есть пост-эффект а значит вроде как сложнее но он практически идеален. Но как ты будешь его осуществлять в мультиплеере так чтоб не сильно дебильно для меня загадка.

Разберем чуть детальней как сделать 1 вариант. По условию мы знаем позицию нашего фрага на сцене и знаем направление и источник света. Свет это либо парабола либо конус. Тогда пусть y это будет расстояние от фрага до источника дальше найти корни и расстояния до них не должно составить труда. Соответственно если растояние до каждой из точек от фрага меньше расстояния между ними, фраг лежит внутри параболы/конуса. Дальше мы просто прибавляем нужный вектор к исходному цвету. Profit.
Вариант нумбер 2 куда более изящен но он сработает только если источник света это сам игрок(имхо). Суть примерно та же только у нас пространство нормализированно, а глубина достается из буффера глубины. Соответственно тебе придется доставать матрицу проекции или еще чо чтобы узнать реальное положение фрага на сцене, а дальше как в 1ом варианте.
Это все. Очень просто.
 
2,505
81
397
А причем тут вообще мультиплеер?
Объяснение, конечно, оставляет желать лучшего. Половину важного не сказал, пришлось додумывать детали, чтобы понять, что ты тут написал.
Оба способа, кстати, полностью убьют шейдеры оптифайна.
 
1,990
18
105
А можно взять готовый мод на шейдеры с источниками освещения и допилить туда поддержку spot light. Благо, делается это куда проще (исходников spot light'ов в нете полно), и мы избегаем кучи проблем с производительностью и совместимостью. Правда, это будет стоить некоторой фиксированной прибавки к времени кадра из-за мода на шейдеры.
Бтв, можно даже заморочиться с визуалом и добавить объёмный конус света фонарю.
 
Сверху