HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > XashXT > XashXT/3D [Вопросы и ответы] 2 голосов
Страницы (52): « Первая ... « 40 41 42 43 [44] 45 46 47 48 » ... Последняя »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
Aynekko
Маппер

Дата регистрации: Jun 2016
Проживает: г. Подольск, Россия
Сообщений: 1002
Возраст: 31

Рейтинг



Цитата:
Crystallize писал:
По-моему они обе неправильно освещаются

Маленькая справа со скейлом 0.5. Маленькая слева 1. А большие ящики я не помню. Факт в том, что освещение адекватное только на скейле 1. Любой +\- и оно ломается в зависимости от того, насколько новое число далеко от единицы.
Трудно сказать, в шейдере это нужно делать или в коде… Может там сами кости изначально неправильно работают. С другой стороны, тогда бы и скейл не работал. Эхх

__________________
Мой мод на Xash

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

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

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

Рейтинг



Я когда-то во время возни с обновлённым рендерером так и написал: не завидую тому, кто будет это разгребать

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

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

Старое сообщение 03-09-2021 11:23
-
ncuxonaT
каков стол, таков и стул

Группа: Опытный
Дата регистрации: Oct 2009
Проживает: город/село/деревня
Сообщений: 1626
Возраст: 33

Рейтинг



Aynekko покажи код шейдера

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

Старое сообщение 03-09-2021 14:50
- За что?
Aynekko
Маппер

Дата регистрации: Jun 2016
Проживает: г. Подольск, Россия
Сообщений: 1002
Возраст: 31

Рейтинг



Вот, в архиве оригиналы ксашмодовские, и моя неудачная попытка что-то поправить.

Вложение: shader.zip (5.9 кб)
Этот файл был скачан 92 раз.

__________________
Мой мод на Xash

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

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

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

Рейтинг



Там поидее скейл матрицы ориентации модели почему-то не применяется при рендеринге освещения, хотя и должен. Т.е. дело вообще не в шейдерах.
Я пару недель назад быстро код глянул, но сходу ничего такого не заметил.

Добавлено 03-09-2021 в 18:49:

Кстати. Там может еще куллинг неверно работать, например в

AddStudioToLightList( plight_t *pl )

C++ Source Code:
1
Vector modelpos = m_pModelInstance->m_protationmatrix.GetOrigin();
2
float dist = (pl->origin - modelpos).Length();
3
 
4
if( !dist || dist > ( pl->radius + m_pModelInstance->radius ))
5
  return;
6
 
7
if( pl->frustum.CullBox( m_pModelInstance->absmin, m_pModelInstance->absmax ))
8
  return;

Может absmins и absmax не предумножены на скейл. Закоментить этот участок и проверить еще раз всё.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

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

Старое сообщение 03-09-2021 15:49
-
Aynekko
Маппер

Дата регистрации: Jun 2016
Проживает: г. Подольск, Россия
Сообщений: 1002
Возраст: 31

Рейтинг



Увы, не помогло

Цитата:
Дядя Миша писал:
дело вообще не в шейдерах.

Я вот тоже так думаю…сколько ни возился с шейдерами, так или иначе приходил к исходному результату. Может где-то в DrawLightForMeshList что-то не так? В параное там все по-другому обставлено, не получилось разобраться.

Вот еще в шейдере я находил такое, что float dist = length( var_LightVec ) напрямую влияет на освещение (картинка в аттаче. Вектор этот var_LightVec = ( u_LightOrigin.xyz - position.xyz ). Я так понимаю lightorigin это фонарик. А вот position!
C++ Source Code:
vec4 position = boneMatrix * vec4( attr_Position, 1.0 );

Из чего я и сделал тогда вывод, что что-то с bonematrix.

Добавлено 03-09-2021 в 19:11:

Аттач

[ Вложение ]
Безымянный.jpg

__________________
Мой мод на Xash

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

Старое сообщение 03-09-2021 16:11
- За что?
ncuxonaT
каков стол, таков и стул

Группа: Опытный
Дата регистрации: Oct 2009
Проживает: город/село/деревня
Сообщений: 1626
Возраст: 33

Рейтинг



В шейдере написано, что u_LightOrigin и u_LightDir в локальном пространстве модели. Когда они из мировых координат переводятся в локальные, скейл учитывается?
И в пиксельном шейдере замени

Cg Pixel Shader:
1
L = normalize( u_LightDir.xyz );
2
 
3
// spot attenuation
4
float spotDot = dot( normalize( var_LightVec ), L );

на
Cg Pixel Shader:
1
L = normalize( var_LightVec );
2
 
3
// spot attenuation
4
float spotDot = dot( normalize( u_LightDir.xyz ), L );

К скейлу это, правда, не относится, но всё же.

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

Старое сообщение 03-09-2021 17:43
- За что?
Aynekko
Маппер

Дата регистрации: Jun 2016
Проживает: г. Подольск, Россия
Сообщений: 1002
Возраст: 31

Рейтинг



Цитата:
ncuxonaT писал:
И в пиксельном шейдере замени

Вроде что-то поменялось, а что-то и нет. Баг остался, но как будто повернулся на 90 градусов.

Насчет лайторигин, вот что в коде идет, может так понятнее будет:
C++ Source Code:
1
m_pModelInstance = &m_ModelInstances[RI->currententity->modelhandle];
2
 
3
tr.modelorg = m_pModelInstance->m_protationmatrix.VectorITransform(RI->vieworg);
4
Vector right = m_pModelInstance->m_plightmatrix.VectorIRotate(RI->vright);
5
Vector lightorg = m_pModelInstance->m_protationmatrix.VectorITransform(pl->origin);
6
Vector lightdir = m_pModelInstance->m_plightmatrix.VectorIRotate(pl->frustum.GetPlane(FRUSTUM_FAR)->normal);
7
 
8
matrix4x4 lightView = pl->modelviewMatrix.ConcatTransforms(m_pModelInstance->m_protationmatrix);
9
matrix4x4 projectionView = pl->projectionMatrix.Concat(lightView);
10
projectionView.CopyToArray(gl_lightViewProjMatrix);

И далее:
C++ Source Code:
1
// write constants
2
pglUniformMatrix4fvARB(RI->currentshader->u_LightViewProjectionMatrix, 1, GL_FALSE, &gl_lightViewProjMatrix[0]);
3
float shadowWidth = 0.5f / (float)RENDER_GET_PARM(PARM_TEX_WIDTH, pl->shadowTexture);
4
float shadowHeight = 0.5f / (float)RENDER_GET_PARM(PARM_TEX_HEIGHT, pl->shadowTexture);
5
 
6
// depth scale and bias and shadowmap resolution
7
pglUniform4fARB(RI->currentshader->u_LightDir, lightdir.x, lightdir.y, lightdir.z, pl->fov);
8
pglUniform4fARB(RI->currentshader->u_LightDiffuse, pl->color.r / 255.0f, pl->color.g / 255.0f, pl->color.b / 255.0f, pl->lightFalloff);
9
pglUniform4fARB(RI->currentshader->u_ShadowParams, shadowWidth, shadowHeight, -pl->projectionMatrix[2][2], pl->projectionMatrix[3][2]);
10
pglUniform4fARB(RI->currentshader->u_LightOrigin, lightorg.x, lightorg.y, lightorg.z, (1.0f / pl->radius));
11
pglUniform3fARB(RI->currentshader->u_ViewOrigin, tr.modelorg.x, tr.modelorg.y, tr.modelorg.z);
12
pglUniform3fARB(RI->currentshader->u_ViewRight, right.x, right.y, right.z);
13
pglUniform4fARB(RI->currentshader->u_FogParams, tr.fogColor[0], tr.fogColor[1], tr.fogColor[2], tr.fogDensity);

__________________
Мой мод на Xash

Отредактировано Aynekko 03-09-2021 в 19:33

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

Старое сообщение 03-09-2021 19:30
- За что?
ncuxonaT
каков стол, таков и стул

Группа: Опытный
Дата регистрации: Oct 2009
Проживает: город/село/деревня
Сообщений: 1626
Возраст: 33

Рейтинг



В ксашмоде меши трансформируются через матрицу модели что ли? По-моему, в паранойе это сделано через кости.
Я не вижу в этом коде скейла, он включен в m_protationmatrix?

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

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

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

Рейтинг



Цитата:
ncuxonaT писал:
он включен в m_protationmatrix?

Да. Вся эта замута для экономии юниформов.
Ксаш мод запускается там, где Параное их уже не хватает.

Добавлено 04-09-2021 в 22:23:

Если вдруг непонятно - вспоминайте. я вас спрашивал тогда.
Можно хранить матрицу кости, это 12 флоатов или 3 vec4.
Можно хранить кватернион + позицию, это 7 флоатов.
Я их пишу в линейный массив из vec4.
Но. Скейл при таком подходе уже не передать. Zhopa!
Но можно сделать следующее - скейл у нас только в руте, значит мы можем передать его вместе с рутовой матрицей, а трансформацию связки кватернион + оригин выполнить прямо в шейдере.
Что я собственно и проделал. Но где-то недоглядел.
В параное этот патч тоже есть, к слову.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

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

Старое сообщение 04-09-2021 19:23
-
ncuxonaT
каков стол, таков и стул

Группа: Опытный
Дата регистрации: Oct 2009
Проживает: город/село/деревня
Сообщений: 1626
Возраст: 33

Рейтинг



Че-т я подумал, неправильно это. Не надо оригин лайта умножать на скейл модели.

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

Старое сообщение 08-09-2021 15:20
- За что?
Aynekko
Маппер

Дата регистрации: Jun 2016
Проживает: г. Подольск, Россия
Сообщений: 1002
Возраст: 31

Рейтинг



Еще обратил внимание на параноевский шейдер

C++ Source Code:
1
#if !defined( LIGHT_PROJ )
2
float dist = length( var_LightVec );
3
float atten = 1.0 - saturate( pow( dist * u_LightOrigin.w, LIGHT_FALLOFF ));
4
if( atten <= 0.0 ) discard; // fast reject
5
#else
6
// directional light has no attenuation
7
float atten = 1.0;

если НЕ light_proj тут идет. В то время, как в ксашмоде
C++ Source Code:
1
#if defined( STUDIO_LIGHT_PROJECTION )
2
L = normalize( u_LightDir.xyz );
3
 
4
// spot attenuation
5
float spotDot = dot( normalize( var_LightVec ), L );
6
float fov = ( u_LightDir.w * FOV_MULT * ( M_PI / 180.0 ));
7
float spotCos = cos( fov + fov );
8
if( spotDot < spotCos ) discard;
9
#elif defined( STUDIO_LIGHT_OMNIDIRECTIONAL )
10
L = normalize( var_LightVec );
11
#endif

Странно все это. Если сделать, как в параное, то освещение всех моделей будет нормальным, только яркость не будет меняться на всем расстоянии фонарика (оно и понятно, аттенюацию же убрал). Как-то по-другому там считается, похоже, я пока не понял как.

__________________
Мой мод на Xash

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

Старое сообщение 12-09-2021 13:03
- За что?
ncuxonaT
каков стол, таков и стул

Группа: Опытный
Дата регистрации: Oct 2009
Проживает: город/село/деревня
Сообщений: 1626
Возраст: 33

Рейтинг



LIGHT_PROJ в паранойе - это солнце, STUDIO_LIGHT_PROJECTION в ксашмоде - это прожектор.
Аттенюация получается неправильной из-за умножения оригина лайта на скейл модели. Надо как-то иначе сделать применение скейла. Убрать его из rotationmatrix, передавать в шейдер юниформом и сначала умножать на него, потом уже на все матрицы. Наверное.

Отредактировано ncuxonaT 12-09-2021 в 13:43

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

Старое сообщение 12-09-2021 13:39
- За что?
Holego|Noobito
Всё потерянно

Дата регистрации: Oct 2020
Проживает: Урал
Сообщений: 10

Рейтинг



Вопрос, не так давно начал разбираться в Ксаше и возникли проблема, когда я компилировал обычный хл всё было хорошо получал в папке релис длл файл... но с ксашам возникли проблемы, может я вообще не то делаю, но за ранние прошу не ругать за глупость, ошибка в картинке, когда открываю бат релисе да даже бекап и дебаг, на винду не смотрите она немецкая. Вообщем как комплилировать ксаш?

[ Вложение ]
756765.png

__________________
Здравомысле - удел слабых.

Отредактировано Holego|Noobito 14-09-2021 в 12:44

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

Старое сообщение 14-09-2021 12:24
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



Holego|Noobito у тебя в переменных среды отсутствуют необходимые пути. Собирай не батником, а из самой студии. Ну либо пропиши пути.

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

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



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


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

Временная зона GMT. Текущее время 00:56. Новая тема    Ответить
Страницы (52): « Первая ... « 40 41 42 43 [44] 45 46 47 48 » ... Последняя »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > XashXT > XashXT/3D [Вопросы и ответы] 2 голосов
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

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

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

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

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