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

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

Рейтинг



Цитата:
ncuxonaT писал:
var_LightVec единичный что ли?

нет, он действительно используется для затухания.

Цитата:
ncuxonaT писал:
было в паранойе, если что


В параное по другому устроено, если вы неспособны из кода понять, в каком пространстве осуществляются те или иные операции, это еще не повод бездумно копипастить в надежде, что заработает.

Aynekko сделай именно так, как я сказал. Вот почему-то уверен, что ты опустил какую-то часть операций по принципу - если станет лучше, то доделаю. А может у тебя кэши шейдеров не обновились (редко, но бывает).

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 21-12-2021 18:19
-
Aynekko
Маппер

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

Рейтинг



Второй шейдер, с небольшими моими изменениями

C++ Source Code:
1
void main( void )
2
{
3
  float dist = length( var_LightVec );
4
  float atten = 1.0 - saturate( pow( dist * u_LightOrigin.w, u_LightDiffuse.a ));
5
  if( atten <= 0.0 ) discard; // fast reject
6
    vec3 L = vec3( 0.0 );
7
 
8
#if defined( STUDIO_LIGHT_PROJECTION )
9
  L = normalize( var_LightVec );
10
 
11
  // spot attenuation
12
  float spotDot = dot( normalize( u_LightDir.xyz ), L );
13
  float fov = ( u_LightDir.w * FOV_MULT * ( M_PI / 180.0 ));
14
  float spotCos = cos( fov + fov );
15
  if( spotDot < spotCos ) discard;
16
#elif defined( STUDIO_LIGHT_OMNIDIRECTIONAL )
17
  L = normalize( var_LightVec );
18
#endif
19
  vec3 N = normalize( var_Normal );
20
 
21
  // compute the diffuse term
22
  vec4 diffuse = texture2D( u_ColorMap, var_TexDiffuse );
23
 
24
  if( diffuse.a < 0.5 ) discard; // no glowing on tex with alpha
25
 
26
  vec3 light = vec3( 1.0 );
27
  float shadow = 1.0;
28
 
29
#if defined( STUDIO_LIGHT_PROJECTION )
30
  light = u_LightDiffuse.rgb;	// light color
31
 
32
  // texture or procedural spotlight
33
  light *= texture2DProj( u_ProjectMap, var_ProjCoord ).rgb;
34
  //	atten *= smoothstep( spotCos, spotCos + 0.1, spotDot ) * 0.5;
35
#if defined( STUDIO_HAS_SHADOWS )
36
  shadow = ShadowProj( var_ShadowCoord, u_ShadowParams.xy, dot( N, L ));
37
  if( shadow <= 0.0 ) discard; // fast reject
38
#endif
39
#elif defined( STUDIO_LIGHT_OMNIDIRECTIONAL )
40
  light = u_LightDiffuse.rgb;
41
  light *= textureCube( u_ProjectMap, -var_LightVec ).rgb;
42
  //	light *= textureCube( u_ProjectMap, -normalize( var_LightVec )).rgb;
43
 
44
#if defined( STUDIO_HAS_SHADOWS )
45
  // fix shadows!!!
46
  shadow = ShadowOmni( -var_LightVec, u_ShadowParams );
47
  if( shadow <= 0.0 ) discard; // fast reject
48
#endif
49
#endif
50
 
51
#if defined( STUDIO_FOG_EXP )
52
  float fogFactor = saturate( exp2( -u_FogParams.w * ( gl_FragCoord.z / gl_FragCoord.w )));
53
  atten = Q_mix( 0.0, atten, fogFactor );
54
#endif
55
  // do modified hemisperical lighting
56
    float NdotL = max( (dot( N, L ) + ( SHADE_LAMBERT - 1.0 )) / SHADE_LAMBERT, 0.0 );
57
  diffuse.rgb *= light.rgb * NdotL * atten * DLIGHT_SCALE;
58
 
59
  float Brightness = u_DynLightBrightness;
60
  if( Brightness <= 0 ) Brightness = 1;
61
 
62
  // compute final color
63
  gl_FragColor = 2.5 * Brightness * diffuse * shadow;
64
}


Добавлено 21-12-2021 в 21:21:

Цитата:
Дядя Миша писал:
Aynekko сделай именно так, как я сказал.

Я сделал все, что ты вчера сказал про матрицы. И вот добавил скейл в var_lightvec. Пока все.

Добавлено 21-12-2021 в 21:30:

На всякий случай
C++ Source Code:
1
m_pModelInstance->m_plightmatrix = matrix3x4( origin, angles, Vector( 1.0f / scale.x, 1.0f / scale.y, 1.0f / scale.z ) );
2
......
3
......
4
tr.modelorg = m_pModelInstance->m_plightmatrix.VectorITransform( RI->vieworg );
5
Vector right = m_pModelInstance->m_plightmatrix.VectorIRotate( RI->vright );
6
Vector lightorg = m_pModelInstance->m_plightmatrix.VectorITransform( pl->origin );
7
Vector lightdir = m_pModelInstance->m_plightmatrix.VectorIRotate( pl->frustum.GetPlane( FRUSTUM_FAR )->normal );
8
 
9
matrix4x4 lightView = pl->modelviewMatrix.ConcatTransforms( m_pModelInstance->m_protationmatrix );
10
matrix4x4 projectionView = pl->projectionMatrix.Concat( lightView );
11
projectionView.CopyToArray( gl_lightViewProjMatrix );

__________________
Мой мод на Xash

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

Старое сообщение 21-12-2021 18:30
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
Aynekko писал:
matrix4x4 lightView = pl->modelviewMatrix.ConcatTransforms( m_pModelInstance->m_protationmatrix );

И вот здесь еще попробуй заменить на m_plightmatrix.
Я надеюсь саму матрицу ты проинициализировал, как я говорил?
С инверсным скейлом.

Добавлено 21-12-2021 в 22:05:

И после всего сделанного ты утверждаешь, что ВООБЩЕ ничего не поменялось, вот абсолютно?

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 21-12-2021 19:05
-
Aynekko
Маппер

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

Рейтинг



Цитата:
Дядя Миша писал:
И вот здесь еще попробуй заменить на m_plightmatrix.

Так все ломается. Свой скейл из шейдера убрал - тоже.
Цитата:
Дядя Миша писал:
С инверсным скейлом.

Да, в предыдущем посте внизу перечислил все изменения.
Цитата:
Дядя Миша писал:
И после всего сделанного ты утверждаешь

Ну где же я утверждаю? Я наоборот сказал, что очень помогло. Просто после твоих изменений по матрицам я дополнительно дописал скейл в шейдер, в этот вектор. Результат всего вот этого вот показал на скринах.
Цитата:
Aynekko писал:
Динлайт: http://aynekko.pw/temp/test1.jpg
Фонарик: http://aynekko.pw/temp/test2.jpg

По сути осталось разобраться с тенями от точечного. Но т.к. я их сам притащил, мог где-то ошибиться... Но проблема исключительно на моделях. Трава, браши - норм.

__________________
Мой мод на Xash

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

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

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

Рейтинг



Цитата:
Aynekko писал:
Но проблема исключительно на моделях

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

Цитата:
Aynekko писал:
я дополнительно дописал скейл в шейдер, в этот вектор.

Странно. Если позиция лайта уже в локальном пространстве с учётом скейла, то ничего этого просто не нужно. А она именно что с учётом.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 21-12-2021 19:34
-
ncuxonaT
каков стол, таков и стул

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

Рейтинг



Цитата:
Дядя Миша писал:
Странно. Если позиция лайта уже в локальном пространстве с учётом скейла, то ничего этого просто не нужно. А она именно что с учётом.

Затухание обратно пропорционально квадрату расстояния в мировом пространстве. Если переводить лайт в локальное пространство модели, разве расстояние получится равным мировому?

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

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

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

Рейтинг



Цитата:
ncuxonaT писал:
Если переводить лайт в локальное пространство модели, разве расстояние получится равным мировому?

с учётом того, что мы инвертировали скейл - да, должно получиться тоже самое расстояние.
Но тут дело в другом. Надо радиус перевести в локальное пространство модели и пересчитать фаллофф заново. Это всё усложняет, теряется смысл.
Надо вспомнить, почему свет считается именно в локальном пространстве, для начала. Потому что изначально в P2 он считался в мировом, а тут я его переделал на локальное. Вот надо вспомнить почему.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 22-12-2021 07:13
-
Aynekko
Маппер

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

Рейтинг



Цитата:
Дядя Миша писал:
Вот надо вспомнить почему

Ты же вроде сам сказал, что это было сделано для экономии юниформов?

__________________
Мой мод на Xash

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

Старое сообщение 22-12-2021 07:41
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 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: Записан
Сообщение: 206159

Старое сообщение 22-12-2021 07:45
-
Aynekko
Маппер

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

Рейтинг



Сейчас кое-что понял насчет теней от динлайта. Т.к. проекция не учитывает angles, я пытался нарыть хоть что-то и обнаружил вот такую прямую зависимость (см. аттач). Со скейлом проблем нет, только angles.
Координаты проекции теней берутся из (-pl->projectionMatrix[2][2], pl->projectionMatrix[3][2]), я стал крутить ее и так и сяк, но нужного результата не получил. Как мне ее повернуть на angles модели? Или что-то еще сделать, чтобы она это учитывала?
Я пробовал делать так

C++ Source Code:
matrix4x4 OmniShadowMatrix = pl->projectionMatrix.ConcatTransforms( m_pModelInstance->m_protationmatrix );
. . . . . . . .
pglUniform4fARB( RI->currentshader->u_ShadowParams, shadowWidth, shadowHeight, -OmniShadowMatrix[2][2], OmniShadowMatrix[3][2] );

Ну, ничего не вышло. Ну тут метод тыка честно сказать, пытался сделать по подобию...

[ Вложение ]
untitled.jpg

__________________
Мой мод на Xash

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

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

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

Рейтинг



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

Добавлено 22-12-2021 в 20:02:

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

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 22-12-2021 17:02
-
Aynekko
Маппер

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

Рейтинг



Ну вот я уже понял, что мне надо повернуть эту pl->projectionmatrix. Наверное. Пробую еще вариант. Уже полез читать про матрицы и вроде это то что нужно, но не работает. Есть какие-то идеи?

C++ Source Code:
OmniShadowMatrix.ConcatRotate( m_pCurrentEntity->curstate.angles.x, 1, 0, 0 );
OmniShadowMatrix.ConcatRotate( m_pCurrentEntity->curstate.angles.y, 0, 1, 0 );
OmniShadowMatrix.ConcatRotate( m_pCurrentEntity->curstate.angles.z, 0, 0, 1 );


Чуть переделал, вроде так правильно. Но без изменений...
C++ Source Code:
OmniShadowMatrix.ConcatRotate( -m_pCurrentEntity->curstate.angles.z, 1, 0, 0 );
OmniShadowMatrix.ConcatRotate( -m_pCurrentEntity->curstate.angles.x, 0, 1, 0 );
OmniShadowMatrix.ConcatRotate( -m_pCurrentEntity->curstate.angles.y, 0, 0, 1 );

__________________
Мой мод на Xash

Отредактировано Aynekko 22-12-2021 в 17:39

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

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

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

Рейтинг



Цитата:
Aynekko писал:
Уже полез читать про матрицы

Что в эту матрицу пишется? И сколько элементов в массиве? Тема матриц чисто математически не такая уж и сложная, мне сложнее дались пределы и дифференцирование функций. Но, чтобы знать, какие операции и как можно проводить с матрицами, для начала желательно научиться считать детерминанты. И поупражняться на бумаге в транспонировании, расчёте обратных матриц и разных преобразованиях. Можно конечно ничего не учить, а просто нагуглить необходимые операции.

Отредактировано Ku2zoff 22-12-2021 в 18:55

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

Старое сообщение 22-12-2021 18:52
- За что?
Aynekko
Маппер

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

Рейтинг



Цитата:
Ku2zoff писал:
Что в эту матрицу пишется? И сколько элементов в массиве?

C++ Source Code:
pl->projectionMatrix.CreateProjection( 90.0f, 90.0f, Z_NEAR_LIGHT, pl->radius );

Тут fov x, fov y, ближняя и дальняя дистанции. Проблема еще в том, что я пока не до конца уверен, на правильном ли я пути вообще. Но факт в том, что данные из этой матрицы засылаются в шейдер для проецирования теней на модель. Я сделал копию этой матрицы (matrix4x4 OmniShadowMatrix = pl->projectionMatrix) и теперь пытаюсь ее как-то изменить, чтобы заслать в шейдер. Но все без толку пока.

Вот еще скрин прикрепил. У моделей за спиной у нпс angles 0 0 0 и разный скейл. Все идеально. А по бокам дичь…потому что angles нестандартный. Хрен пойми как ее повернуть.

Добавлено 22-12-2021 в 22:14:

Цитата:
Ku2zoff писал:
Можно конечно ничего не учить, а просто нагуглить необходимые операции.

Хех, да было дело в далеком в 2009 году, когда я учился этому и даже что-то соображал. Уже забыл абсолютно все, за ненадобностью. Кто ж знал, что это сейчас пригодится. Я и в кодинг не лез никогда до прошлого года-то.

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

__________________
Мой мод на Xash

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

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

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

Рейтинг



Дядя Миша


Aynekko переводи всё в мировое пространство, с локальным ты задолбаешься.

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

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



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


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

Временная зона GMT. Текущее время 23:29. Новая тема    Ответить
Страницы (52): « Первая ... « 45 46 47 48 [49] 50 51 52 »   Предыдущая тема   Следующая тема
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