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)
Отправлено Дядя Миша 13-09-2023 в 16:05:
Цитата:
a1batross писал:
Это баг, там всего нужно false на true поменять в cl_cmds.c.
атпередил!__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Decay 13-09-2023 в 20:47:
У меня получилось сделать освещение моделек от солнца как в Голдсорсе!
Смотрим gl_studio.c: R_StudioDynamicLight
C++ Source Code:
1 | if( FBitSet( ent->model->flags, STUDIO_FORCE_SKYLIGHT ) || ( psurf && FBitSet( psurf->flags, SURF_DRAWSKY ))) |
3 | VectorSet( lightDir, mv->skyvec_x, mv->skyvec_y, mv->skyvec_z ); |
5 | light.r = LightToTexGamma( bound( 0, mv->skycolor_r, 255 )); |
6 | light.g = LightToTexGamma( bound( 0, mv->skycolor_g, 255 )); |
7 | light.b = LightToTexGamma( bound( 0, mv->skycolor_b, 255 )); |
В Ксаше они белые - значения урезаются до 255. Я посмотрел как сделано ниже в этой же функции, и сделал по аналогии:
C++ Source Code:
2 | if( FBitSet( ent->model->flags, STUDIO_FORCE_SKYLIGHT ) || ( psurf && FBitSet( psurf->flags, SURF_DRAWSKY ))) |
4 | VectorSet( lightDir, mv->skyvec_x, mv->skyvec_y, mv->skyvec_z ); |
6 | total = Q_max( Q_max( mv->skycolor_r, mv->skycolor_g ), mv->skycolor_b ); |
10 | light_aaa.r = (mv->skycolor_r * ( 1.0f / total )) * 255; |
11 | light_aaa.g = (mv->skycolor_g * ( 1.0f / total )) * 255; |
12 | light_aaa.b = (mv->skycolor_b * ( 1.0f / total )) * 255; |
21 | light.r = LightToTexGamma( bound( 0, light_aaa.r, 255 )); |
22 | light.g = LightToTexGamma( bound( 0, light_aaa.g, 255 )); |
23 | light.b = LightToTexGamma( bound( 0, light_aaa.b, 255 )); |


Upd:
https://imgur.com/a/jhKmmCs
https://ibb.co/xDPKsR5
https://ibb.co/Cz968xb
Добавлено 14-09-2023 в 03:47:
Хотя это не совсем по теме, извините
Отправлено a1batross 13-09-2023 в 20:53:
The image cannot be displayed because it contains errors.
Это ваш Imgur.
__________________
Xash3D FWGS форк
Отправлено Decay 13-09-2023 в 21:01:
Обновил пост.
И bound() по-моему больше не нужен здесь.
Отправлено Decay 14-09-2023 в 02:31:
Кажется я поторопился с выводами. Это может работать правильно не во всех случаях. Имеет смысл проверять total > 0 и total > 255. Сейчас не могу проверить
Отправлено FiEctro 14-09-2023 в 06:07:
Decay
Почему цвет освещения отличается на модели и лайтмапе?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Отправлено Decay 14-09-2023 в 06:41:
Для модели цвет берется из sv_skycolor_*, а там значение из light_environment скорее всего. Компилятор светлее делает видимо. Тут наверное кому как -- мне нравится как модельки заливаются солнечным светом, а не просто белые. Там и солдат в тени тоже желтоватый, потом скрин покажу.
Добавлено 14-09-2023 в 13:41:
Предполагаю, если для r_lightmap сделать тот сдвиг >>8, там будет желтый цвет.
Отправлено Decay 14-09-2023 в 15:10:
Цитата:
Decay писал:
солдат в тени тоже желтоватый
Цитата:
Decay писал:
Предполагаю, если для r_lightmap сделать тот сдвиг >>8, там будет желтый цвет.
Ни то, ни другое оказалось не так. И проблем с новым освещением не заметил.
Немного переписал:
C++ Source Code:
1 | colorVec skycolorN = {0,0,0,0}; |
2 | if( FBitSet( ent->model->flags, STUDIO_FORCE_SKYLIGHT ) || ( psurf && FBitSet( psurf->flags, SURF_DRAWSKY ))) |
4 | VectorSet( lightDir, mv->skyvec_x, mv->skyvec_y, mv->skyvec_z ); |
5 | total = Q_max( Q_max( mv->skycolor_r, mv->skycolor_g ), mv->skycolor_b ); |
8 | skycolorN.r = (mv->skycolor_r * ( 1.0f / total )) * 255.0f; |
9 | skycolorN.g = (mv->skycolor_g * ( 1.0f / total )) * 255.0f; |
10 | skycolorN.b = (mv->skycolor_b * ( 1.0f / total )) * 255.0f; |
12 | light.r = LightToTexGamma( skycolorN.r ); |
13 | light.g = LightToTexGamma( skycolorN.g ); |
14 | light.b = LightToTexGamma( skycolorN.b ); |
Для сравнения, освещенность в GoldSrc:

https://imgur.com/U3UYjiF
Отправлено Дядя Миша 14-09-2023 в 16:14:
В голдсорсе точно есть команда для отключения диффузных текстур на модельках. Только она дико неинтуитивная. Помню что какой-то квар, имеющий непосредственное отношение к студиомоделям надо переставить на 2. А вот какой именно - не помню 
Добавлено 14-09-2023 в 19:14:
Хмм. А попробуйте r_fullbright 2.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Decay 14-09-2023 в 17:43:
Цитата:
Дядя Миша писал:
r_fullbright 2
Работает. Но перекрывает r_lightmap — получаются безтекстурные модели на фоне fullbright-карты.
Еще раз проверил освещение моделей в GoldSrc. Он все-таки не нормализует цвета, не превышающие 255. Думаю, это будет финальная версия. Дополнительная переменная больше не требуется.
code:
if( FBitSet( ent->model->flags, STUDIO_FORCE_SKYLIGHT ) || ( psurf && FBitSet( psurf->flags, SURF_DRAWSKY )))
{
VectorSet( lightDir, mv->skyvec_x, mv->skyvec_y, mv->skyvec_z );
total = Q_max( Q_max( mv->skycolor_r, mv->skycolor_g ), mv->skycolor_b );
if( total > 255.0f)
{
light.r = LightToTexGamma( (mv->skycolor_r * ( 1.0f / total )) * 255.0f );
light.g = LightToTexGamma( (mv->skycolor_g * ( 1.0f / total )) * 255.0f );
light.b = LightToTexGamma( (mv->skycolor_b * ( 1.0f / total )) * 255.0f );
}
else
{
light.r = LightToTexGamma( (mv->skycolor_r ) );
light.g = LightToTexGamma( (mv->skycolor_g ) );
light.b = LightToTexGamma( (mv->skycolor_b ) );
}
}
На c4a1 rgb=103,164,145. Для соответствия с Голдом должно быть как на левом скриншоте


https://imgur.com/a/hmwz9Fg
Отправлено Crystallize 14-09-2023 в 18:16:
Decay лучше бзать тег code внесто cpp.
Отправлено Дядя Миша 14-09-2023 в 18:29:
Цитата:
Decay писал:
Но перекрывает r_lightmap — получаются безтекстурные модели на фоне fullbright-карты.
В голдсорсе много нелогичного, да. Именно поэтому я и создал ксаш.
Добавлено 14-09-2023 в 21:29:
Цитата:
Decay писал:
Для соответствия с Голдом должно быть как на левом скриншоте
Но ведь правый более корректен.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Crystallize 14-09-2023 в 18:31:
А если нет скайлайта? И где там вообще происходит лукап в лайтмапу?
Отправлено Decay 14-09-2023 в 19:20:
Цитата:
Дядя Миша писал:
Но ведь правый более корректен.
Согласен. Но получается что у любого цвета солнца будет подниматься яркость до предела (оно вроде так происходит?), то есть поднимается value в терминах HSV(?). И я думаю — а вдруг маппер хочет сделать именно темное освещение моделей от темного солнца?
Цитата:
Crystallize писал:
А если нет скайлайта? И где там вообще происходит лукап в лайтмапу?
По-моему работает трассировка до неба по sv_skyvec_x/y/z, точно не в курсе
Добавлено 15-09-2023 в 01:46:
Меня еще вот это удивляет (как и многое другое...
). Не знаю зачем и для чего это
code:
j = sscanf( pkvd->szValue, "%d %d %d %d\n", &r, &g, &b, &v );
if (j == 1)
{
g = b = r;
}
else if (j == 4)
{
r = r * (v / 255.0);
g = g * (v / 255.0);
b = b * (v / 255.0);
}
// simulate qrad direct, ambient,and gamma adjustments, as well as engine scaling
r = pow( r / 114.0, 0.6 ) * 264;
g = pow( g / 114.0, 0.6 ) * 264;
b = pow( b / 114.0, 0.6 ) * 264;
Добавлено 15-09-2023 в 02:20:
Еще остается вопрос, почему это на c4a1 и gasworks, например, sv_skycolor в пределах 0-255, а на c2a5w — нет.
Отправлено FiEctro 14-09-2023 в 19:39:
Цитата:
Дядя Миша писал:
Но ведь правый более корректен.
Ну да, на левом как баг освещения выглядит.__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!