как подобное реализовать?

Версия Minecraft
1.12.2
API
Forge
привет, недавно наткнулся на нн видео в ютубе, там чувак тестит фонарик в майнкрафте
как подобное реализовать? я спросил типа напрямую, но он ничего путного не сказал
только не судите строго, я только начал вливаться в эту тему
 
Решение
Есть два пути реализации такого фонаря:
1) Screen Space SpotLight
2) World Space SpotLight
В первом случае в шейдер ты передаешь текстуру основного FBO, и его глубину. Хз как глубина сидит на версии 1.12, на версии 1.7.10 глубина это рендер буффер. Его нужно предварительно заблитить в свой отдельный FBO. Глубина нужна для того, чтобы понять, что освещать ярче. В шейдере уже делаешь все расчеты, исходя из того, что ты просто увеличиваешь яркость пикселей на экране, проверяя при этом глубину пикселя.
Во втором случае ты применяешь шейдер на отрисовку всего: чанков, сущностей, рендера тайлов. Применяется один шейдер, в который передаются все источники света (не сильно углублялся, но скорее всего это нужно делать через юниформ буффер, если...
Есть два пути реализации такого фонаря:
1) Screen Space SpotLight
2) World Space SpotLight
В первом случае в шейдер ты передаешь текстуру основного FBO, и его глубину. Хз как глубина сидит на версии 1.12, на версии 1.7.10 глубина это рендер буффер. Его нужно предварительно заблитить в свой отдельный FBO. Глубина нужна для того, чтобы понять, что освещать ярче. В шейдере уже делаешь все расчеты, исходя из того, что ты просто увеличиваешь яркость пикселей на экране, проверяя при этом глубину пикселя.
Во втором случае ты применяешь шейдер на отрисовку всего: чанков, сущностей, рендера тайлов. Применяется один шейдер, в который передаются все источники света (не сильно углублялся, но скорее всего это нужно делать через юниформ буффер, если источников будет много, а может и не нужно, и юниформ буффер нужен только для матриц). Берешь позицию источника света, его направление, и делаешь плюс минус схожие расчеты. Примеров в интернете полно
И на всякий уточню, что объект FBO нельзя использовать и для чтения, и для записи. Будет неопределенное поведение
Вот тебе тема бтв:
 
Назад
Сверху