HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > gl_overbright
Страницы (7): « 1 2 3 [4] 5 6 7 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
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'

Сообщить модератору | | IP: Записан
Сообщение: 215854

Старое сообщение 13-09-2023 16:05
-
Decay
Житель форума

Дата регистрации: Mar 2010
Проживает: N/A
Сообщений: 231

Рейтинг



У меня получилось сделать освещение моделек от солнца как в Голдсорсе!

Смотрим 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:

Хотя это не совсем по теме, извините

Отредактировано Decay 13-09-2023 в 20:54

Сообщить модератору | | IP: Записан
Сообщение: 215870

Старое сообщение 13-09-2023 20:47
- За что?
a1batross
Житель форума

Дата регистрации: May 2016
Проживает: Москва
Сообщений: 516
Возраст: 26

Рейтинг



The image cannot be displayed because it contains errors.

Это ваш Imgur.

__________________
Xash3D FWGS форк

Сообщить модератору | | IP: Записан
Сообщение: 215872

Старое сообщение 13-09-2023 20:53
- За что?
Decay
Житель форума

Дата регистрации: Mar 2010
Проживает: N/A
Сообщений: 231

Рейтинг



Обновил пост.
И bound() по-моему больше не нужен здесь.

Сообщить модератору | | IP: Записан
Сообщение: 215873

Старое сообщение 13-09-2023 21:01
- За что?
Decay
Житель форума

Дата регистрации: Mar 2010
Проживает: N/A
Сообщений: 231

Рейтинг



Кажется я поторопился с выводами. Это может работать правильно не во всех случаях. Имеет смысл проверять total > 0 и total > 255. Сейчас не могу проверить

Отредактировано Decay 14-09-2023 в 02:41

Сообщить модератору | | IP: Записан
Сообщение: 215875

Старое сообщение 14-09-2023 02:31
- За что?
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 12901
Возраст: 32

Рейтинг



Decay
Почему цвет освещения отличается на модели и лайтмапе?

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

Сообщить модератору | | IP: Записан
Сообщение: 215878

Старое сообщение 14-09-2023 06:07
- За что?
Decay
Житель форума

Дата регистрации: Mar 2010
Проживает: N/A
Сообщений: 231

Рейтинг



Для модели цвет берется из sv_skycolor_*, а там значение из light_environment скорее всего. Компилятор светлее делает видимо. Тут наверное кому как -- мне нравится как модельки заливаются солнечным светом, а не просто белые. Там и солдат в тени тоже желтоватый, потом скрин покажу.

Добавлено 14-09-2023 в 13:41:

Предполагаю, если для r_lightmap сделать тот сдвиг >>8, там будет желтый цвет.

Сообщить модератору | | IP: Записан
Сообщение: 215881

Старое сообщение 14-09-2023 06:41
- За что?
Decay
Житель форума

Дата регистрации: Mar 2010
Проживает: N/A
Сообщений: 231

Рейтинг



Цитата:
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

Сообщить модератору | | IP: Записан
Сообщение: 215960

Старое сообщение 14-09-2023 15:10
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



В голдсорсе точно есть команда для отключения диффузных текстур на модельках. Только она дико неинтуитивная. Помню что какой-то квар, имеющий непосредственное отношение к студиомоделям надо переставить на 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'

Сообщить модератору | | IP: Записан
Сообщение: 215965

Старое сообщение 14-09-2023 16:14
-
Decay
Житель форума

Дата регистрации: Mar 2010
Проживает: N/A
Сообщений: 231

Рейтинг



Цитата:
Дядя Миша писал:
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

Отредактировано Decay 14-09-2023 в 17:44

Сообщить модератору | | IP: Записан
Сообщение: 215969

Старое сообщение 14-09-2023 17:43
- За что?
Crystallize
Житель форума

Дата регистрации: Jul 2007
Проживает: Новосибирск
Сообщений: 4423
Возраст: 34

Рейтинг



Decay лучше бзать тег code внесто cpp.

Сообщить модератору | | IP: Записан
Сообщение: 215970

Старое сообщение 14-09-2023 18:16
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
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'

Сообщить модератору | | IP: Записан
Сообщение: 215971

Старое сообщение 14-09-2023 18:29
-
Crystallize
Житель форума

Дата регистрации: Jul 2007
Проживает: Новосибирск
Сообщений: 4423
Возраст: 34

Рейтинг



А если нет скайлайта? И где там вообще происходит лукап в лайтмапу?

Сообщить модератору | | IP: Записан
Сообщение: 215972

Старое сообщение 14-09-2023 18:31
- За что?
Decay
Житель форума

Дата регистрации: Mar 2010
Проживает: N/A
Сообщений: 231

Рейтинг



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

Согласен. Но получается что у любого цвета солнца будет подниматься яркость до предела (оно вроде так происходит?), то есть поднимается 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 — нет.

Отредактировано Decay 14-09-2023 в 19:23

Сообщить модератору | | IP: Записан
Сообщение: 215973

Старое сообщение 14-09-2023 19:20
- За что?
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 12901
Возраст: 32

Рейтинг



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


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

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

Сообщить модератору | | IP: Записан
Сообщение: 215976

Старое сообщение 14-09-2023 19:39
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 22:42. Новая тема    Ответить
Страницы (7): « 1 2 3 [4] 5 6 7 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > gl_overbright
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

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