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

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

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

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

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