Closed w23 closed 3 years ago
So one possible approach is:
SURF_DRAWSKY
surfaceslight_environment
entity to get primary (sun) light direction and intensityAlternative:
For the sky, light_spot can also be used with the key _sky
= 1 #38
There you can do two suns for example.
Выяснились пикантные особенности неба:
Обновил #38
Я промыл и вставил глазки и посмотрел на исходники курада более внимательно, и там короче очень прямолинейно всё: у light_environment
действительно есть origin
, по которому он тупо кладётся в список источников света своего листика bsp.
Выходит, что нам нужно делать не глобальное солнце, а просто ещё один источник света. Ну и light clusters более естественно делать всё же на основе bsp, выходит. Нужно опять собирать эксперименты эти поганые, как туда правильно всё складывать и вообще.
light_spot с _sky
= 1: c2a2g, c2a2h, c2a4, c2a4e, c2a4f, c2a4g
Все из них в том числе с light_environment.
@w23
Выходит, что нам нужно делать не глобальное солнце, а просто ещё один источник света.
А он будет только за свою зону отвечать?
Нужно опять собирать эксперименты эти поганые, как туда правильно всё складывать и вообще.
Надо наверное у lifekilled поспрашивать он же ковырялся в этом углубленно.
Выходит, что нам нужно делать не глобальное солнце, а просто ещё один источник света.
А он будет только за свою зону отвечать?
Ага. Вроде это именно то, чего мы хотим. Не знаю, правда, что там именно со скайбоксом.
Ещё инфа: на hlrad (компилятор из ZHLT) light_environment работает иначе, он не учитывает другие light_environment и получается всего одна энтити на всю карту. Этот компилятор очень популярный и вроде в модах активно используется. Моё предложение: если на карте только
_sky
=1 _sky
=1 находящиеся близко друг к другуто делать солнце(а) глобальным(и).
It seems that qrad explicitly samples emit_skylight
sources only if they're hitting SURF_SKY surfaces: https://sourcegraph.com/github.com/ValveSoftware/halflife/-/blob/utils/qrad/lightmap.c?L1098
We tried to just add
SURF_DRAWSKY
surfaces as emissive to light clusters, and that immediately overflows light cluster buffers because there are way too many such surfaces, and most of them affect the entire map essentially.I don't have any good ideas of how to address this ATM. Maybe better culling of such surfaces (i.e. using PVS) would help, decreasing their number a bit?