HLFX.Ru Forum Страницы (7): « 1 2 3 [4] 5 6 7 »
Показать все 104 сообщений этой темы на одной странице

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 )))
2
{
3
  VectorSet( lightDir, mv->skyvec_x, mv->skyvec_y, mv->skyvec_z );
4
 
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 ));
8
}


В Ксаше они белые - значения урезаются до 255. Я посмотрел как сделано ниже в этой же функции, и сделал по аналогии:

C++ Source Code:
1
colorVec light_aaa;
2
if( FBitSet( ent->model->flags, STUDIO_FORCE_SKYLIGHT ) || ( psurf && FBitSet( psurf->flags, SURF_DRAWSKY )))
3
{
4
  VectorSet( lightDir, mv->skyvec_x, mv->skyvec_y, mv->skyvec_z );
5
  ///////
6
  total = Q_max( Q_max( mv->skycolor_r, mv->skycolor_g ), mv->skycolor_b );
7
 
8
  if( total > 0.0f )
9
  {
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;
13
  }
14
  else
15
  {
16
    light_aaa.r = 0;
17
    light_aaa.g = 0;
18
    light_aaa.b = 0;
19
  }
20
  ///////
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 ));
24
}


https://i.imgur.com/sPrruVh.pnghttps://i.imgur.com/6IkfMO3.png

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 )))
3
{
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 );
6
  if( total > 0.0f )
7
  {
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;
11
  }
12
  light.r = LightToTexGamma( skycolorN.r );
13
  light.g = LightToTexGamma( skycolorN.g );
14
  light.b = LightToTexGamma( skycolorN.b );
15
}

Для сравнения, освещенность в GoldSrc:
https://i.imgur.com/U3UYjiF.png
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://i.imgur.com/KKl3WGU.pnghttps://i.imgur.com/0Z4Dywi.png
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:

Цитата:
Дядя Миша писал:
Но ведь правый более корректен.


Ну да, на левом как баг освещения выглядит.

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!


Временная зона GMT. Текущее время 17:29. Страницы (7): « 1 2 3 [4] 5 6 7 »
Показать все 104 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024