Версия Minecraft
1.12.2
60
3
5
Всем привет опять я.Как сделать что-бы когда игрок брал предмет от него исходил свет. setLightLevel(float level) нету в предмете только в блоке.
 
Решение
Проблема в том, что абсолютно весь свет в игре - статический, и высчитывается в виде цифры 0-15 для каждого блока.
Просчитывается он, соответственно, при обновлении чанка, читай, когда ты что-то ставишь-ломаешь или как-либо по другому взаимодействуешь с блоками.

И во внимание игрой (спавн мобов, рост растений, и прочее) берётся именно этот статический поблочный свет.
Это я к тому, что не особо сложно можно написать шейдер, который сделал бы тебе красивый конусовый фонарик (базовый туториал по освещению в opengl + туториал по загрузке и применению своих шейдеров в игре), но он будет только создавать видимость, а игровая логика чихать на него будет, так как это просто отрисовка такая будет, что пиксели на которые направлен твой фонарик...

necauqua

когда-то был anti344
Администратор
1,216
27
172
Проблема в том, что абсолютно весь свет в игре - статический, и высчитывается в виде цифры 0-15 для каждого блока.
Просчитывается он, соответственно, при обновлении чанка, читай, когда ты что-то ставишь-ломаешь или как-либо по другому взаимодействуешь с блоками.

И во внимание игрой (спавн мобов, рост растений, и прочее) берётся именно этот статический поблочный свет.
Это я к тому, что не особо сложно можно написать шейдер, который сделал бы тебе красивый конусовый фонарик (базовый туториал по освещению в opengl + туториал по загрузке и применению своих шейдеров в игре), но он будет только создавать видимость, а игровая логика чихать на него будет, так как это просто отрисовка такая будет, что пиксели на которые направлен твой фонарик отрисовываются более ярким светом.

Ещё вариант (из больших костылей) - сделать свой блок воздуха (невидимый-проходимый-и так далее) и ставить-убирать его рядом с игргоком, но он багучий-лагучий (оставшийся не убранный блок, частые апдейты этого статического чанкового света) и вообще кривой.

В DynamicLights вроде-бы сделали и то и то одновременно, да? Я хызы, но вроде да крч.
 
Это я к тому, что не особо сложно можно написать шейдер
Тогда придется уж весь рендер чанков и вообще всех сущностей на него переносить, плохая идея мне кажется.
Можно попробовать сделать фонарь через огл FFP, через glLight и соответственно gl emmision, для прожектора, и gl diffuse для лампы.
 

tox1cozZ

aka Agravaine
8,456
598
2,893
В DynamicLights вроде-бы сделали и то и то одновременно, да? Я хызы, но вроде да крч.
Там обновляется свет на координатах через world.setLightValue(...), то есть это чисто майновское освещение. Но сделано несколько оптимизаций, например чтобы если энтити не двигается, то не обновляло постоянно свет.
Лучше чем в DynamicLights сделать не выйдет, по крайней мере с майновским освещением.
 

necauqua

когда-то был anti344
Администратор
1,216
27
172
Тогда придется уж весь рендер чанков и вообще всех сущностей на него переносить
М?
Я имел ввиду просто вертексный шейдер для получения нормалей и фрагментный чтобы пиксели подкрашивать.
Разве-что их придётся в нескольких местах врубать, ты об этом походу
Ну это да
Мне кажется больше проблем будет с render pass-ами и прозрачными штуками вроде воды.
 

tox1cozZ

aka Agravaine
8,456
598
2,893
Бесполезно. Постоянно обновлять лайтмапу очень затрано. Тут нужен иной подход
На самом деле если обновлять раз в пол секунды, например, то просадок особых нет.
 
2,932
44
598
Проблема в том, что абсолютно весь свет в игре - статический
Хм... А есть какие-то модификации которые убирают всё ванильное освещение и переделывают его через шейдеры допустим. Не дурацкая ли это затея, и поможет ли это как-то с частотой кадров?
 

tox1cozZ

aka Agravaine
8,456
598
2,893
А есть какие-то модификации которые убирают всё ванильное освещение и переделывают его через шейдеры допустим.
Дак любой шейдерпак на освещение так и делает)
Он с оптифайном не дружит, не подходит.
 
2,505
81
397
Не знаю как в именно чистом DynamicLights. Но он перенесен в оптифайн и скорее всего там почти также.
Начнем с того, что лайтмапа это маленькая текстурка. И источники света на нее никак не влияют.
А обновляются там WorldRenderer'ы (в 1.7.10; в новых версия хз как называются). Точнее, они помечаются на апдейт при перемещении источника света. С первого взгляда кажется как-то лагодромно, конечно. Но с асинхронной загрузкой живет нормально.
 
Сверху