HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- gl_overbright (https://hlfx.ru/forum/showthread.php?threadid=6019)
Отправлено FiEctro 04-09-2023 в 07:18:
Цитата:
XaeroX писал:
Decay
Так и лайтмапу надо поделить на два в компиляторе. Перед тем как клампить в диапазон (0, 255). Тогда и получится расширенный диапазон (0, 511), или истинный овербрайт.
В первой паранойе вроде так было__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Отправлено Decay 05-09-2023 в 04:21:
Я так понял надо сделать операцию с лайтмапой, чтобы она осветлилась, потом смешивать обычным способом чтобы не было такой выкрученной цветовой насыщенности
А было бы еще проще спросить у Enokilis, как именно он прописал в коде
Цитата:
As far as I know, the only way to achieve the same effect in one rendering pass is to use the texture combiner extension, as I did here.
Отправлено Decay 05-09-2023 в 16:15:
Я просто поменял смещение в R_BuildLightMap на 9 а не на 8, и кажется получилось как в оригинале
https://imgur.com/a/iTV2Zbg












Отправлено Дядя Миша 05-09-2023 в 16:24:
Цитата:
Decay писал:
поменял смещение в R_BuildLightMap на 9 а не на 8
Так вот что имел в виду китаец, когда говорил про сломанное освещение голдсорса.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Decay 05-09-2023 в 17:25:
Все-таки не 100% сходство
Пропатченный Steam HL:
здесь тоже brightness 0 и gamma 2.5


Добавлено 05-09-2023 в 23:33:
Ну да, я уже постил овербрайт в стимовской хл
Добавлено 06-09-2023 в 00:13:
Обнаружил интересную деталь.
Я завел квар gl_overbright, и в R_BuildLightmap это выглядит так:
C++ Source Code:
1 | if( CVAR_TO_BOOL( gl_overbright )) |
3 | dest[0] = Q_min((bl[0] >> 9), 255 ); |
4 | dest[1] = Q_min((bl[1] >> 9), 255 ); |
5 | dest[2] = Q_min((bl[2] >> 9), 255 ); |
9 | dest[0] = Q_min((bl[0] >> 7), 255 ); |
10 | dest[1] = Q_min((bl[1] >> 7), 255 ); |
11 | dest[2] = Q_min((bl[2] >> 7), 255 ); |
В реальном времени она вызывается только для динамического света типа обычного фонарика.
Как переключаю:
C++ Source Code:
Корректная картинка будет только после сейв-рестора.
И знаете что? В GoldSrc такая же особенность
Добавлено 06-09-2023 в 00:25:
Почему я сразу это не заметил - в моей модификации ксаша при переключении квара яркость картинки сильно меняется, а в голде лишь немного.
Я понял что при изначальном gl_overbright 0 на загруженной карте в GoldSrc будут цветные пятна, и переключение на 1 лишь немного подсветит картинку
Отправлено Дядя Миша 05-09-2023 в 18:23:
Цитата:
Decay писал:
И знаете что? В GoldSrc такая же особенность
Так лайтмапа кусками обновляется. Ксаш умеет перезагружать лайтмапы налету по мере необходимости. Смотри функцию R_CheckGamma.
Можно её немного модифицировать, типа так:
C++ Source Code:
1 | void R_CheckGamma( void ) |
5 | // paranoia cubemaps uses this |
6 | BuildGammaTable( 1.8f, 0.0f ); |
8 | // paranoia cubemap rendering |
9 | if( clgame.drawFuncs.GL_BuildLightmaps ) |
10 | clgame.drawFuncs.GL_BuildLightmaps( ); |
12 | else if( FBitSet( vid_gamma->flags, FCVAR_CHANGED ) || FBitSet( vid_brightness->flags, FCVAR_CHANGED )) |
14 | BuildGammaTable( vid_gamma->value, vid_brightness->value ); |
15 | glConfig.softwareGammaUpdate = true; |
16 | GL_RebuildLightmaps(); |
17 | glConfig.softwareGammaUpdate = false; |
19 | else if( FBitSet( gl_overbright->flags, FCVAR_CHANGED )) |
21 | GL_RebuildLightmaps(); |
22 | ClearBits( gl_overbright->flags, FCVAR_CHANGED ); |
И тогда будет мгновенно переключать.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено FiEctro 05-09-2023 в 19:02:
Ну так и в софтваре лайтмапы ярче. Я давно говорил, но вы меня не слушали.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Отправлено Decay 05-09-2023 в 19:13:
Дядя Миша 
Цитата:
XF-Alien писал:
Примерно то, о чем в видео - уже делает VHLT на уровне компиляции. А именно более корректную работу с цветовым наполнением: отвратительных бледных кругов в центральной части световых пятен нет, как и "зеленоватых разводов".
Цитата:
Crystallize писал:
Суть в том что по превышении некоего порога яркости лайтмапы, она накладывается не умножением, а сложением. Компилятор тут не поможет.
Если посчитать получившийся код правильной реализацией овербрайта, можно сказать что вы оба правы. Заметная разница видна на оригинальных уровнях, сделанных старыми компиляторами. Я проверил на своих картах, скомпилированных VHLTv34, и переключение овербрайта в обоих движках ничтожно влияет на картинку. В GoldSrc становится светлее на 0.1% (скажем так), в Xash3D темнее на 0.1%, это только если сильно присмотреться.
Отправлено Crystallize 06-09-2023 в 06:20:
Цитата:
FiEctro писал:
В первой паранойе вроде так было
Не знаю, смотришь футажи Паранои-вроде примитивный VHLTшный кламп на яркости 196.
Добавлено 06-09-2023 в 13:20:
Цитата:
Decay писал:
в Xash3D темнее
В смысле темнее? Там и так всё обычно темнее чем на ГС.
Отправлено Decay 06-09-2023 в 13:48:
Цитата:
Crystallize писал:
В смысле темнее? Там и так всё обычно темнее чем на ГС.
Переформулирую.
gl_overbright 1 не оказывает никакого влияния на VHLT-картах, кроме едва заметного изменения яркости. Если интересно:
https://imgur.com/a/5VpsHNK
https://i.imgur.com/BZklgpW.png
https://i.imgur.com/F5rpudk.png
https://i.imgur.com/ekKF2py.png
https://i.imgur.com/GttQZ24.png
https://i.imgur.com/aQXOYso.png
https://i.imgur.com/6aHDAm6.png
https://i.imgur.com/1hJ6Tub.png
https://i.imgur.com/wPTP8SI.png
https://i.imgur.com/iRtSJDC.png
https://i.imgur.com/OkVmz6K.png
Добавлено 06-09-2023 в 20:48:
Думаю если мы хотим чтобы здесь тоже появились пересветы, нужен такой код который будет добавлять их после любых компиляторов
Отправлено Crystallize 06-09-2023 в 16:43:
Decay Ну да, на грани погрешности. А что это за карта?
Добавлено 06-09-2023 в 23:43:
Я не могу вычитанием поймать эту разницу в Фотошопе. Мистика какая-то. Но возможно что вся разница от того что я не совсем точно подобрал гамму для Ксаша, скажем не 0.655 а 0.666. Или это какая-то погрешность, разница между софтварной и аппаратной гаммой. В Фотошопе удается поймать только разницу в оттенке цвета, даже не в яркости.
Отправлено Crystallize 08-09-2023 в 01:50:
Цитата:
Decay писал:
pglTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
pglTexEnvi (GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_MODULATE);
pglTexEnvi (GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_TEXTURE);
pglTexEnvi (GL_TEXTURE_ENV, GL_SOURCE1_RGB, GL_PRIMARY_COLOR);
pglTexEnvf (GL_TEXTURE_ENV, GL_RGB_SCALE, 2.0f);
Он не знает половины параметров, пришлось дописывать окончание _ARB, это ничего страшного я надеюсь?
Исправления только в двух местах, здесь и ещё где сдвиг на 9 бит? Лайтмапа исправилась, но всё равно не совпадает с ГС. Всё ещё светлее в хайлайтах и чуть плывет разводами по гамме.
Отправлено Decay 09-09-2023 в 12:37:
Цитата:
Crystallize писал:
А что это за карта?
Мои поделки
RGB_SCALE здесь не имеет смысла. Убираем его, делаем сдвиг на 8 бит и получаем такой же результат.
gl_local.h
C++ Source Code:
extern convar_t *gl_overbright; |
gl_vidnt.c
C++ Source Code:
добавить в GL_InitCommands:
C++ Source Code:
gl_overbright = Cvar_Get("gl_overbright", "0", FCVAR_ARCHIVE, "overbright"); |
gl_rmain.c
добавить в R_CheckGamma в конце:
C++ Source Code:
else if( FBitSet( gl_overbright->flags, FCVAR_CHANGED )) |
ClearBits( gl_overbright->flags, FCVAR_CHANGED ); |
gl_rsurf.c
R_BuildLightMap
C++ Source Code:
1 | for( t = 0; t < tmax; t++, dest += stride ) |
3 | for( s = 0; s < smax; s++ ) |
5 | int shift = CVAR_TO_BOOL( gl_overbright ) ? 8 : 7; |
6 | dest[0] = Q_min((bl[0] >> shift), 255 ); |
7 | dest[1] = Q_min((bl[1] >> shift), 255 ); |
8 | dest[2] = Q_min((bl[2] >> shift), 255 ); |
R_BlendLightmaps
Это:
C++ Source Code:
pglBlendFunc( GL_ZERO, GL_SRC_COLOR ); |
заменить на
C++ Source Code:
if( CVAR_TO_BOOL( gl_overbright )) |
pglBlendFunc( GL_DST_COLOR, GL_SRC_COLOR ); |
pglBlendFunc( GL_ZERO, GL_SRC_COLOR );; |
Добавлено 09-09-2023 в 19:37:
Уточню что это для Xash3D build 4529
Отправлено Crystallize 09-09-2023 в 16:36:
Спасибо большое. Я не вижу смысла на самом деле делать динамическое переключение овербрайта, его один раз настроил и всё.
Цитата:
Decay писал:
RGB_SCALE здесь не имеет смысла. Убираем его, делаем сдвиг на 8 бит и получаем такой же результат.
Разводов стало меньше и лайтмапа чуть поменялась, теперь почти совпадает. Но максимум яркости лайтмапы (как он рендерится в итоге) всё ещё в ГС 170, а в Ксаше 157.
Отправлено Crystallize 10-09-2023 в 20:28:
Цитата:
Decay писал:
Наверное твоя версия движка проверяет еще старое расширение. А в ней работают детальные текстуры?
Походу нет, я dm_port_akaba с ксм запускаю, а он тёмненький.
Цитата:
Decay писал:
Если посчитать получившийся код правильной реализацией овербрайта, можно сказать что вы оба правы. Заметная разница видна на оригинальных уровнях, сделанных старыми компиляторами. Я проверил на своих картах, скомпилированных VHLTv34, и переключение овербрайта в обоих движках ничтожно влияет на картинку. В GoldSrc становится светлее на 0.1% (скажем так), в Xash3D темнее на 0.1%, это только если сильно присмотреться.
Так у китайца же самый низкий порог нормализации из всех, 188. Даже в оригинале-196, а так-то и 255 можно.
Цитата:
Decay писал:
Заметная разница видна на оригинальных уровнях, сделанных старыми компиляторами. Я проверил на своих картах, скомпилированных VHLTv34, и переключение овербрайта в обоих движках ничтожно влияет на картинку. В GoldSrc становится светлее на 0.1% (скажем так), в Xash3D темнее на 0.1%, это только если сильно присмотреться.
Посмотри карту xash_demo, на улице и на 2 этаже. Там приборная панель пол-зала стала засвечивать.