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

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- XashXT (https://hlfx.ru/forum/forumdisplay.php?forumid=30)
-- XashXT/3D [Вопросы и ответы] (https://hlfx.ru/forum/showthread.php?threadid=3689)


Отправлено Aynekko 13-11-2021 в 15:07:

Цитата:
Aynekko писал:
Теперь пытаюсь разобраться со скейлом моделей (их освещения фонариком).

Значит так, освещение починилось на 98% (см. аттач - слева "после", справа "до"). Путем метода тыка и такой-то матери что-то получилось. Что сделал конкретно:
C++ Source Code:
m_pModelInstance->m_plightmatrix = matrix3x4( origin, angles, Vector( 1,1,1 ) );// было m_pModelInstance->m_protationmatrix;

То есть сделал, чтобы лайтматрица всегда была со скейлом 1.

C++ Source Code:
1
tr.modelorg = m_pModelInstance->m_plightmatrix.VectorITransform( RI->vieworg );
2
Vector right = m_pModelInstance->m_plightmatrix.VectorIRotate( RI->vright );
3
Vector lightorg = m_pModelInstance->m_plightmatrix.VectorITransform( pl->origin );
4
 
5
// было:
6
//	tr.modelorg = m_pModelInstance->m_protationmatrix.VectorITransform( RI->vieworg );
7
//	Vector right = m_pModelInstance->m_plightmatrix.VectorIRotate( RI->vright );
8
//	Vector lightorg = m_pModelInstance->m_protationmatrix.VectorITransform( pl->origin );


В шейдере убрал spot attenuation, и финальный цвет умножил на скейл модели (двойка просто для яркости):
C++ Source Code:
gl_FragColor = 2 * diffuse * shadow * MeshScale;


Стало практически идеально, только на очень мелких или очень огромных моделях (<0.2 или >5) начинает что-то не так проявляться, похоже что-то с дистанцией от центра модели.
Дошел до этого, когда стал проверять, как влияет изменение скейла в матрицах на освещение.

__________________
Мой мод на Xash


Отправлено Aynekko 14-11-2021 в 15:27:

Для чего конкретно используются m_flPoseParameter? Которые подмяли под себя все векторы vuser. В каких сценариях?

__________________
Мой мод на Xash


Отправлено Дядя Миша 14-11-2021 в 16:58:

Новая система блендинга в студиомоделях, как в сорсе.
При помощи этих параметров можно в моделях гибко управлять программной анимацией. Это как боне-контроллеры, только гораздо круче.
Можно смешивать разные анимации, а контроллер определяет степень смешивания, можно меняя значение контроллера промотать все кадры в анимации, да много чего можно.
У в хл2 багги, к примеру колёса крутятся через эти контроллеры, подвеска на них, стрелки приборов. У персов эта штука управляет блендингом, причём кол-во смешиваемых анимаций может превышать 3х3.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Aynekko 14-11-2021 в 17:12:

А в последнем билде ксашмода есть какие-то примеры посмотреть? Где-то используется? Или это просто задел для мододелов

__________________
Мой мод на Xash


Отправлено SNMetamorph 14-11-2021 в 17:38:

Цитата:
Дядя Миша писал:
Новая система блендинга в студиомоделях, как в сорсе.
При помощи этих параметров можно в моделях гибко управлять программной анимацией. Это как боне-контроллеры, только гораздо круче.
Можно смешивать разные анимации, а контроллер определяет степень смешивания, можно меняя значение контроллера промотать все кадры в анимации, да много чего можно.
У в хл2 багги, к примеру колёса крутятся через эти контроллеры, подвеска на них, стрелки приборов. У персов эта штука управляет блендингом, причём кол-во смешиваемых анимаций может превышать 3х3.

А как это всё вообще юзать? И есть ли это в п2шном студиомодель рендере?

__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord


Отправлено Дядя Миша 14-11-2021 в 18:11:

Цитата:
Aynekko писал:
Где-то используется? Или это просто задел для мододелов

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

Цитата:
SNMetamorph писал:
И есть ли это в п2шном студиомодель рендере?

естественно

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

Машинку я на этой системе, к слову сделал. Но увидели её не только лишь все.

__________________
My Projects: download page

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

Цитата:

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


Отправлено SNMetamorph 14-11-2021 в 18:38:

Цитата:
Дядя Миша писал:
Машинку я на этой системе, к слову сделал. Но увидели её не только лишь все.

Кстати исходники этого билда можно получить за оплату?

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

И есть ли вообще видос с этими машинками? Чобы поглядеть хоть. А то пока это лишь легенда.

__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord


Отправлено Дядя Миша 14-11-2021 в 18:50:

Цитата:
SNMetamorph писал:
А то пока это лишь легенда.

О, это прямо тема для конспирологических рассуждений.
1. С какой стати мне врать?
2. я не произвожу впечатление человека, который может их сделать?

__________________
My Projects: download page

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

Цитата:

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


Отправлено SNMetamorph 14-11-2021 в 18:59:

Цитата:
Дядя Миша писал:
1. С какой стати мне врать?
2. я не произвожу впечатление человека, который может их сделать?

Я не про это. Я же видел остатки кода в ксашмоде, очевидно, что они были. Вопрос в том, как они вообще работают, потому что поведение/управление можно сделать по-всякому и вариативность в этом бесконечная.

__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord


Отправлено Дядя Миша 15-11-2021 в 07:14:

Цитата:
SNMetamorph писал:
Вопрос в том, как они вообще работают

SetPoseParamter\GetPoseParameter как и в сорсе.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Aynekko 17-11-2021 в 10:59:

Обратил внимание, что на некоторых моделях некоторые фейсы не освещаются. Светишь на модель ящика, под углом, одна сторона светлая, другая темная. Только если светить на сторону ящика под очень маленьким углом (менее 10 градусов где-то), видно, что сторона начинает освещаться. В параное смотрю это пофикшено.
И такое происходит только с некоторыми моделями. Куда копать, чтобы пофиксить это?

Добавлено 17-11-2021 в 12:02:

Нашел примерное место, если var_Normal сделать равным не N, a -N, то эти фейсы освещаются нормально, а те, которые освещались - наоборот. Как я и предполагал... Теперь как бы пофиксить это.

Добавлено 17-11-2021 в 13:59:

Вроде получилось. Поставил vec3 L = normalize( var_Normal ) вместо vec3 L = normalize( u_LightDir.xyz )

__________________
Мой мод на Xash


Отправлено Дядя Миша 17-11-2021 в 12:22:

Цитата:
Aynekko писал:
Поставил vec3 L = normalize( var_Normal ) вместо vec3 L = normalize( u_LightDir.xyz )

__________________
My Projects: download page

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

Цитата:

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


Отправлено ncuxonaT 17-11-2021 в 12:50:

Цитата:
Дядя Миша писал:
vec3 L = normalize( u_LightDir.xyz )

Вот это так-то тоже


Отправлено Aynekko 17-11-2021 в 13:41:

Да я как бы и не спорю, я так вообще слабо в этом понимаю, но результат

Добавлено 17-11-2021 в 16:41:

Вообще да. Фонарик починился, а вот обычный env_dynlight так и не освещает эту модель.

__________________
Мой мод на Xash


Отправлено Aynekko 17-11-2021 в 21:37:

Цитата:
Aynekko писал:
а вот обычный env_dynlight так и не освещает эту модель.

Динлайт точно так же починился заменой L с LightDir на Normal. Я хз как это работает. Может изначально что-то было перепутано. Сейчас все нормально освещается за исключением слишком маленьких или слишком больших моделей. И с этими странными моделями проблем тоже не стало.

P.S. и не надо фейспалмить. Сам не доделал, вот и приходится чинить по мере своих сил. Я больше маппер, нежели кодер. Меня вся это возня за пределами моего мода не особо интересует. Просто у себя хочется сделать хорошо. Люди играли и репортили, что модели не освещаются как надо. Значит надо фиксить.

__________________
Мой мод на Xash


Отправлено Aynekko 05-12-2021 в 17:45:

С какой целью у прожектора выставлено это?

C++ Source Code:
pl->frustum.DisablePlane( FRUSTUM_FAR ); // only use plane.normal

__________________
Мой мод на Xash


Отправлено Aynekko 15-12-2021 в 05:35:

Цитата:
Aynekko писал:
Теперь пытаюсь разобраться со скейлом моделей (их освещения фонариком)

Продолжаю банкет. Думаю, пока его не починю, не смогу успокоиться. Но пока увы.
Так вот. Вчера я перенес из паранои успешно тени от точечных источников. И выяснилось вот что. Когда у моделей скейл отличный от 1, проекция теней на них съедет (причем от обычного прожектора все норм).
Но самое интересное - не учитывается поворот модели (angles). Если модель повернута на 45 градусов, то тень от игрока не ней отбросится, только если игрок продвинется на 45 градусов дальше по радиусу источника.

Сколько в параною не смотрю, так и не врублюсь чего же не хватает. Rotationmatrix вроде правильно строится. Самое главное отличие, что все эти lightdir, modelorg пишутся через vectoritranform, а не напрямую. Зачем - не понимаю. Переписать как в параное, тогда все вообще ломается.

__________________
Мой мод на Xash


Отправлено Aynekko 21-12-2021 в 13:55:

Пишу здесь, т.к. тут по теме, а там затеряется. Алилуя. Кажется, лайты практически починились.
Вот скрины. Модель одна и та же, скейл 0.2, 1.0 и 16.0.
Динлайт: http://aynekko.pw/temp/test1.jpg
Фонарик: http://aynekko.pw/temp/test2.jpg
Решилось вот так:

C++ Source Code:
var_LightVec = ( u_LightOrigin.xyz - worldpos.xyz ) * MeshScale;

Самое забавное, что я раньше это уже делал, но тогда не было обратной матрицы.

Осталась одна-единственная проблема. Тени от точечных источников. Они не учитывают точно так же скейл и поворот модели. Напомню, как считаются:
C++ Source Code:
shadow = ShadowOmni( -var_LightVec, u_ShadowParams );

где из u_ShadowParams используются только компоненты z и w, которые в свою очередь равны
C++ Source Code:
-pl->projectionMatrix[2][2], pl->projectionMatrix[3][2]

Т.к. в параное точно так же, я предполагаю, что эту проекцию нужно тоже развернуть в координаты модели…а как?

__________________
Мой мод на Xash


Отправлено Дядя Миша 21-12-2021 в 15:33:

Это не решение, а загон проблемы еще глубже.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Aynekko 21-12-2021 в 15:38:

А внешне выглядит вроде как надо

__________________
Мой мод на Xash


Отправлено Дядя Миша 21-12-2021 в 16:04:

Начнём с того, что var_LightVec вообще должен быть еденичным.
А ты его зачем-то наоборот удлиняешь.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Aynekko 21-12-2021 в 16:07:

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

__________________
Мой мод на Xash


Отправлено ncuxonaT 21-12-2021 в 16:10:

Цитата:
Дядя Миша писал:
Начнём с того, что var_LightVec вообще должен быть еденичным.

не должен, из него затухание вычисляется


Отправлено Дядя Миша 21-12-2021 в 18:03:

Я тут обратил внимание, что в оригинале в шейдере у меня

C++ Source Code:
var_LightVec = ( u_LightOrigin.xyz - position.xyz );

Т.е. в локальном пространстве. А вот u_LightOrigin в коде
C++ Source Code:
Vector lightorg = m_pModelInstance->m_protationmatrix.VectorITransform( pl->origin );

Я там выше сказал - есть две проблемы. Первая в том, что m_plightmatrix нужно проинициализировать с инверсным скейлом, а вторая, что преобразования в локальное пространство (т.е. такие где используется буква I - VectorITransform, VectorIRotate выполнить при помощи m_plightmatrix).
Разумеется, я предполагал, что у тебя шейдеры оригинальные.
И тут я вижу, что у тебя что?
C++ Source Code:
var_LightVec = ( u_LightOrigin.xyz - worldpos.xyz ) * MeshScale;

worldpos!!! Откуда он там нахрен взялся? Это Психопат тебе посоветовал?

__________________
My Projects: download page

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

Цитата:

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


Отправлено ncuxonaT 21-12-2021 в 18:13:

var_LightVec единичный что ли?

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

C++ Source Code:
var_LightVec = ( u_LightOrigin.xyz - worldpos.xyz );

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


Отправлено Aynekko 21-12-2021 в 18:14:

Цитата:
Дядя Миша писал:
worldpos

А, это я вчера баловался глядя на параною. Психопат не причем. Потом понял, что там просто "подмена понятий", а по факту перестановки не было. Просто запись была по-другому.
Сейчас вернул шейдер обратно, перепроверил. Единственное изменение на данный момент в этом шейдере:
C++ Source Code:
float MeshScale = u_MeshScale;
var_LightVec = ( u_LightOrigin.xyz - position.xyz ) * MeshScale;

__________________
Мой мод на Xash


Отправлено Дядя Миша 21-12-2021 в 18:19:

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


Отправлено Aynekko 21-12-2021 в 18:30:

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

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


Отправлено Дядя Миша 21-12-2021 в 19:05:

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


Отправлено Aynekko 21-12-2021 в 19:13:

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

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

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

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

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

__________________
Мой мод на Xash


Отправлено Дядя Миша 21-12-2021 в 19:34:

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


Отправлено ncuxonaT 21-12-2021 в 21:16:

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

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


Отправлено Дядя Миша 22-12-2021 в 07:13:

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


Отправлено Aynekko 22-12-2021 в 07:41:

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

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

__________________
Мой мод на Xash


Отправлено Дядя Миша 22-12-2021 в 07:45:

Нет, надо вспомнить, почему свет именно в локальном пространстве.
На кол-во юниформов это никак не влияет. Возможно это как-то связано с хромом.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Aynekko 22-12-2021 в 15:48:

Сейчас кое-что понял насчет теней от динлайта. Т.к. проекция не учитывает 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] );

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

__________________
Мой мод на Xash


Отправлено Дядя Миша 22-12-2021 в 17:02:

Метод тыка можно использовать, когда у тебя 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'


Отправлено Aynekko 22-12-2021 в 17:30:

Ну вот я уже понял, что мне надо повернуть эту 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


Отправлено Ku2zoff 22-12-2021 в 18:52:

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

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


Отправлено Aynekko 22-12-2021 в 19:14:

Цитата:
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 году, когда я учился этому и даже что-то соображал. Уже забыл абсолютно все, за ненадобностью. Кто ж знал, что это сейчас пригодится. Я и в кодинг не лез никогда до прошлого года-то.

__________________
Мой мод на Xash


Отправлено ncuxonaT 22-12-2021 в 20:12:

Дядя Миша


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


Отправлено Aynekko 22-12-2021 в 20:21:

Цитата:
ncuxonaT писал:
переводи всё в мировое пространство

Ох если бы я знал как это сделать почему и стал тогда из паранои копипастить.

__________________
Мой мод на Xash


Отправлено Дядя Миша 22-12-2021 в 20:22:

ncuxonaT ты сам пробовал так бороться или только другим советуешь?

__________________
My Projects: download page

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

Цитата:

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


Отправлено Aynekko 23-12-2021 в 10:49:

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

C++ Source Code:
ShadowOmni(-var_LightVec, u_ShadowParams);

Я попробовал повернуть вектор. Нашел формулу, правда она для 2д (для 3д матрицы что ли надо юзать?) и поигрался с числами:
C++ Source Code:
1
vec3 ang = u_MeshAngles;
2
float xx = u_test; // gl_test консольное значение
3
vec3 rot = vec3( -var_LightVec.x*cos(-ang.y + xx) + var_LightVec.y * sin(-ang.y+xx), -var_LightVec.x*sin(-ang.y + xx) - var_LightVec.y*cos(-ang.y + xx), var_LightVec.z);
4
shadow = ShadowOmni( -rot, u_ShadowParams);

Повторюсь, это просто тест и попытка повернуть вектор хотя бы в 2д. Выяснилось, что при определенных значениях gl_test шадоумапа ложится идеально на конкретную модель (которая повернута). Только почему идет прибавка к углу angles я пока не понимаю.

TL: DR нужно в shadowomni повернуть вектор var_LightVec в зависимости от angles модели. Вот только как это сделать я пока не разобрался. Есть идеи у кого-нибудь?

Добавлено 23-12-2021 в 13:49:

Нашел прямую зависимость. Горизонтальный поворот шадоумапы для всех моделей адекватный. Остался вертикальный.
C++ Source Code:
1
vec3 ang = u_MeshAngles;
2
vec3 rot = vec3( -var_LightVec.x*cos(ang.y * 0.0175 + M_PI) + var_LightVec.y * sin(ang.y * 0.0175 + M_PI), -var_LightVec.x*sin(ang.y * 0.0175 + M_PI) - var_LightVec.y*cos(ang.y * 0.0175 + M_PI), var_LightVec.z);
3
4
4
shadow = ShadowOmni( -rot, u_ShadowParams);

Вот чую, уже совсем близко подобрался...

__________________
Мой мод на Xash


Отправлено FiEctro 23-12-2021 в 11:08:

А в чём прикол теней и света в локальном пространстве, зачем оно вообще используется?

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


Отправлено Дядя Миша 23-12-2021 в 12:56:

Цитата:
FiEctro писал:
А в чём прикол теней и света в локальном пространстве, зачем оно вообще используется?

Вот это я и пытаюсь воспомнить.

Добавлено 23-12-2021 в 15:56:

Скорее всего это как-то связано с хромом.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Aynekko 23-12-2021 в 18:58:

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

C++ Source Code:
1
vec3 ang = u_MeshAngles;
2
 
3
mat3 m;
4
m[0][0] = -var_LightVec.x*cos(ang.y * 0.0175 + M_PI);
5
m[1][0] = var_LightVec.y * sin(ang.y * 0.0175 + M_PI);
6
m[2][0] = 0;
7
m[0][1] = -var_LightVec.x*sin(ang.y * 0.0175 + M_PI);
8
m[1][1] = -var_LightVec.y*cos(ang.y * 0.0175 + M_PI);
9
m[2][1] = 0;
10
m[0][2] = 0;
11
m[1][2] = 0;
12
m[2][2] = var_LightVec.z;
13
 
14
vec3 ShadowVec = m * vec3(1.0);
15
 
16
shadow = ShadowOmni( -ShadowVec, u_ShadowParams);

Как результат, тени ложатся всегда идеально на модели в горизонтальном повороте. А вот дальше я пока не совсем понимаю. Сейчас я сделал поворот шадоумапы по одной из осей. Мне нужно получается сделать еще 2 матрицы, а в конце записать так:
vec3 ShadowVec = m * m1 * m2 * vec3(1.0);

Я хоть на правильном пути? Подскажите.

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

Так, вот сделал все 3 матрицы. Для каждой из осей.
Та первая, вот еще две.
C++ Source Code:
1
mat3 m2;
2
m2[0][0] = -var_LightVec.x*cos(ang.x * 0.0175 + M_PI);
3
m2[1][0] = 0;
4
m2[2][0] = -var_LightVec.z * sin(ang.x * 0.0175 + M_PI);
5
m2[0][1] = 0;
6
m2[1][1] = var_LightVec.y;
7
m2[2][1] = 0;
8
m2[0][2] = var_LightVec.x * sin(ang.x * 0.0175 + M_PI);
9
m2[1][2] = 0;
10
m2[2][2] = -var_LightVec.z * cos(ang.x * 0.0175 + M_PI);
11
 
12
mat3 m3;
13
m3[0][0] = var_LightVec.x;
14
m3[1][0] = 0;
15
m3[2][0] = 0;
16
m3[0][1] = 0;
17
m3[1][1] = -var_LightVec.y * cos(ang.z * 0.0175 + M_PI);
18
m3[2][1] = var_LightVec.z * sin(ang.z * 0.0175 + M_PI);
19
m3[0][2] = 0;
20
m3[1][2] = -var_LightVec.y * sin(ang.z * 0.0175 + M_PI);
21
m3[2][2] = -var_LightVec.z * cos(ang.z * 0.0175 + M_PI);

Ну и финальный аккорд. Как их соединить?!
m * m2 * m3 * vec3(1.0) к сожалению не сработало

P.S. Все матрицы проверил. Если задать вектор как матрица * vec3(1.0) то тень ложится как надо на модель, повернутую в этой оси.

__________________
Мой мод на Xash


Отправлено Дядя Миша 24-12-2021 в 07:17:

Aynekko перестань тратить время на ерунду

__________________
My Projects: download page

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

Цитата:

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


Отправлено Aynekko 24-12-2021 в 08:03:

Цитата:
Дядя Миша писал:
Aynekko перестань тратить время на ерунду

Знаю. Но уж очень интересно. Я уже почти дошел.

http://aynekko.pw/temp/test3.jpg

Я вчера ошибся в том, что каждую матрицу считал из изначального вектора. А надо было брать вектор, посчитанный предыдущей матрицей. Но есть проблема - модель может быть повернута только в одной плоскости, чтобы тень не съезжала. Кажется, я был прав, что для омни-теней нужно повернуть var_lightvec и загнать его в shadow.

__________________
Мой мод на Xash


Отправлено Crystallize 24-12-2021 в 08:04:

Цитата:
Дядя Миша писал:
Скорее всего это как-то связано с хромом.

На брашах?


Отправлено Дядя Миша 24-12-2021 в 08:18:

Цитата:
Aynekko писал:
Знаю. Но уж очень интересно. Я уже почти дошел.

У нас был один чудик, он три года углы Эйлера складывал. И ему тоже всё время казалось, что он "почти дошёл".

Цитата:
Crystallize писал:
На брашах?

на моделях

__________________
My Projects: download page

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

Цитата:

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


Отправлено Aynekko 24-12-2021 в 08:22:

Цитата:
Дядя Миша писал:
У нас был один чудик, он три года углы Эйлера складывал.

Я так и знал, что ты его упомянешь.

__________________
Мой мод на Xash


Отправлено Дядя Миша 24-12-2021 в 09:46:

Если ты понимаешь что делаешь - ты и знаешь, что ты получишь.
Если не понимаешь - у тебя миллионы вариантов перебора. Жизни не хватит.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Aynekko 24-12-2021 в 10:01:

Ну что, все пофикшено. Оказалось, нужно было просто матрицы записать в обратном порядке. Наконец-то проблема со светотенью полностью разрешилась. Правильно или нет - у меня уже нет ни сил, ни желания притрагиваться. Несколько месяцев попыток прошли не зря. Однако ж, без Дяди Миши и советом про матрицу с обратным скейлом я бы еще долго сидел.

__________________
Мой мод на Xash


Отправлено Дядя Миша 24-12-2021 в 10:51:

Ну вообщем вернул обратно всё в мировое пространство?

__________________
My Projects: download page

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

Цитата:

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


Отправлено Aynekko 24-12-2021 в 10:54:

Получается так? Но я сделал это в шейдере. Сделал копию var_LightVec перед тенями и повернул его в зависимости от angles модели. Я долго делал то же самое в коде, но почему-то ничего не получалось. Почем и решил взять уже вектор, который был трансформирован в вертексном шейдере. Не прогадал однакось!

__________________
Мой мод на Xash


Отправлено FiEctro 24-12-2021 в 11:00:

Цитата:
Дядя Миша писал:
Если ты понимаешь что делаешь - ты и знаешь, что ты получишь.
Если не понимаешь - у тебя миллионы вариантов перебора. Жизни не хватит.


Ну не миллионы, 80% вариантов как правило настолько абсурдно что и не стоит даже рассматривать. К тому же никто сразу с пониманием работы шейдеров в ксаше не рождается, так что с ковырянием как раз и приходит понимание. Другое дело, если у тебя время и желание с этим возьться.

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


Отправлено Дядя Миша 24-12-2021 в 13:40:

Я твой код не видел, откуда я знаю. Ну получилось случайно, теперь не трогай, что уж.

Добавлено 24-12-2021 в 16:40:

Цитата:
FiEctro писал:
80% вариантов как правило настолько абсурдно что и не стоит даже рассматривать

Ну не скажи некоторые абсурдные варианты очень даже неплохо справляются. Я вот к примеру недавно обнаружил, что если добавить амбиент в радиосити, то получим очень-очень интересный эффект, но сам уровень амбиента должен быть минимальным, не более еденицы.
Нечто вроде bias для алгоритма.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Next Day 30-12-2021 в 17:26:

Как отключить кровь на моделях от выстрела

Всех с наступающим!
Как отключить кровь на моделях от выстрела в мультиплеере , какой командой или что то нужно закоментить в коде?


Отправлено Crystallize 30-12-2021 в 18:01:

Цитата:
Дядя Миша писал:
если добавить амбиент в радиосити, то получим очень-очень интересный эффект, но сам уровень амбиента должен быть минимальным, не более еденицы.
Нечто вроде bias для алгоритма.

Покажешь?


Отправлено Дядя Миша 30-12-2021 в 18:28:

Crystallize так обнова же скоро, сам увидишь.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Aynekko 13-02-2022 в 15:29:

Сейчас ставил порталы, и очень долго снова вкатывался, как их располагать. По итогу оказалось, что браш нужно ставить с текстурой определенным образом, а уже в angles задавать поворот, как он должен быть в игре. И вопрос, а почему так? Почему к примеру зеркала работают просто на брашевом полигоне, а с порталами такие странные извраты?

С мониторами тоже не все так просто, нужно отражать текстуру по оси Х (делать отрицательный скейл), а также перевернуть ее на 180 градусов, вверх-ногами.

__________________
Мой мод на Xash


Отправлено Дядя Миша 13-02-2022 в 15:43:

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

Да не страшно, народ всё равно префабов наделает и будет ими пользоваться.

Добавлено 13-02-2022 в 18:43:

ЗЫ, если кому интересно - я на тот момент упорно не вдуплял, что текстурная матрица - не локальная, а в мировом пространстве. Да и не умел я её тогда правильно трансформировать, в отличие от обычной 3х4, там есть одна тонкость.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Aynekko 13-02-2022 в 16:39:

А исправить это как-то можно?

__________________
Мой мод на Xash


Отправлено Дядя Миша 13-02-2022 в 17:12:

Aynekko если умеешь в тройные матричные преобразования - исправь.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Aynekko 26-02-2022 в 14:09:

trigger_camera не смотрит на info_target, если он прикреплен парентом к чем-либо. У камеры есть такой код

C++ Source Code:
Vector vecGoal = UTIL_VecToAngles(m_hTarget->GetLocalOrigin() - GetLocalOrigin());

Поменял локальный на абсолютный:
C++ Source Code:
Vector vecGoal = UTIL_VecToAngles(m_hTarget->GetAbsOrigin() - GetLocalOrigin());

и все вроде бы стало хорошо. Смотрит куда надо. Вопрос, в чем разница между этими оригинами? И ничего, что я так сделал?

__________________
Мой мод на Xash


Отправлено Дядя Миша 26-02-2022 в 15:04:

Всё правильно, да. Не везде нужен локальный оригин.

Локальный - в пространстве родителя, глобальный - в пространстве мира.
Если родителя нет, то они совпадают. Очевидно, что камера нацеливается на объект в мировом пространстве, поскольку его координаты идут на клиент.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Aynekko 29-03-2022 в 19:22:

Подскажите по порталам. Проблема на скрине в аттаче.
Красной линией обозначена граница портала, переступив эту линию игрок переходит на другую сторону. Но, один проход выглядит визуально бесшовным, а другой имеет вот такой видимый шов, что портит визуальность. При всем этом сам механизм перехода бесшовный, то есть если смотреть прямо когда переходишь (значит настроил все правильно).
Карта скомпилена без vis, r_nocull тоже ничего не делает.

__________________
Мой мод на Xash


Отправлено Crystallize 30-03-2022 в 02:19:

попробуй zhlt_worldluxels


Отправлено Aynekko 30-03-2022 в 05:10:

Цитата:
Crystallize писал:
попробуй zhlt_worldluxels

Это тут причем? Это касается именно рендера. Тут лайтмапы вообще нет, карта без света скомпилена.

__________________
Мой мод на Xash


Отправлено Дядя Миша 30-03-2022 в 05:16:

Такое бывает, если неправильно натянуть текстуру портала.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Aynekko 30-03-2022 в 05:53:

Она была натянута криво на обеих порталах. Сейчас попробовал растянуть текстуру ровно на всю сторону браша. Не поменялось вообще ничего.
Вот видео: https://www.youtube.com/watch?v=6a1cCulkhkA

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

__________________
Мой мод на Xash


Отправлено Дядя Миша 30-03-2022 в 06:42:

Текстуру мало просто растянуть. Её надо еще правильно ориентировать.
И браш с текстурой всегда должен смотреть в одном направлении. А переориентировать портал в нужную сторону через angles.
Посмотри как qstyle сделано. Только так это будет работать правильно.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Aynekko 30-03-2022 в 09:13:

Разобрался. Оказывается, центр оригин-браша портала должен быть не в центре самого браша func_portal, а должен быть прямо в плоскости поверхности с portal-текстурой. Капец заморочки лютые конечно...

__________________
Мой мод на Xash


Отправлено Дядя Миша 30-03-2022 в 09:54:

Дело в том, что я портальные браши всегда делал сверхтонкие, вот и не замечал этой особенности.
Ну в NT этого мрака уже не будет.

Да и по сути, в ксаш-моде это единственная заморочка, всё остальное прозрачно.

__________________
My Projects: download page

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

Цитата:

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


Временная зона GMT. Текущее время 02:30. Страницы (2): « 1 [2]
Показать все 769 сообщений этой темы на одной странице

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