HLFX.Ru Forum
Показать все 53 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Наши проекты (https://hlfx.ru/forum/forumdisplay.php?forumid=1)
-- Кастомный VRAD, исправление освещения в HL2: Update (https://hlfx.ru/forum/showthread.php?threadid=5442)


Отправлено Crystallize 25-01-2020 в 17:48:

Кастомный VRAD, исправление освещения в HL2: Update

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

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

Предполагается что лайт, спот и проп вблизи друг друга связаны по смыслу, поэтому создаются списки энтитей которые затем фильтруются так чтобы у пропа был либо просто лайт либо просто спот. Спот потом выравнивается по направлению пропа.

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


Отправлено Crystallize 25-01-2020 в 18:33:

Было


Отправлено Crystallize 25-01-2020 в 18:34:

Стало


Отправлено Дядя Миша 25-01-2020 в 18:44:

Афтар маладец за проделаную работу!

__________________
My Projects: download page

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

Цитата:

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


Отправлено Crystallize 06-04-2020 в 17:44:

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


Отправлено Дядя Миша 06-04-2020 в 18:43:

Так, а это вообще зачем?

__________________
My Projects: download page

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

Цитата:

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


Отправлено Crystallize 06-04-2020 в 19:41:

Вальвовское освещение выглядит странно.
Да и я думал, вдруг будет какой-то вау-эффект в результате.
Ну и практика кодинга. Ради геймплея это не так интересно, а вот ради графона поприкольнее.


Отправлено Дядя Миша 06-04-2020 в 21:05:

Там же линеар, квадратик и кубик затухание. Может надо было просто их настроить?

__________________
My Projects: download page

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

Цитата:

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


Отправлено Crystallize 07-04-2020 в 01:27:

Дядя Миша Ну ты глянь самую первую картинку: лампа дневного света которая по своей природе должна иметь внешний угол распространения градусов 200-250, изображена спотом у которого внешний конус в 2-3 раза меньше. Как ты такое затуханием исправишь? В тоннелях они натыкали лайтов на ровном месте (толи чтобы темноты не было толи у них якобы кислота светится), в канализации в каждом отверстии наружу - у них поставлен спот светящий вертикально вниз, толи чтобы сэмитировать адаптицию зрения, толи для красоты просто.
Т.е. дизайн помещений и расстановка пропов-лампочек диктовали некие рамки того каким получится освещение на локации, но Валв видимо не хотели от этого зависеть. В большинстве случаев, видимо, локации получались для них слишком тёмными. Но они не стали, там, менять квадратичное затухание на линейное, а просто втыкали спот в каждый угол который казался им слишком тёмным. Ну и в результате получилось такое пресное, унылое освещение.


Отправлено Дядя Миша 07-04-2020 в 07:31:

Ты сам-то будешь это использовать?

__________________
My Projects: download page

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

Цитата:

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


Отправлено Crystallize 07-04-2020 в 09:48:

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


Отправлено Crystallize 08-04-2020 в 17:59:

Сабж


Отправлено Crystallize 11-10-2020 в 18:38:

трейс в враде не такой продвинутый как в хл1, возвращает только 0 и 1 поэтому приходится выкручиваться

C++ Source Code:
1
AngleVectors( QAngle( 0, relocpropang[i].y, 0 ), &relocnormal );
2
VectorMA( relocproporg[i], 50, relocnormal, start );
3
start4.DuplicateVector( start );
4
stop4.DuplicateVector( start + Vector( 0, 0, 4096 ) );
5
// returns 1 if the ray sees the sky
6
TestLine_DoesHitSky ( start4, stop4, &fractionVisible );
7
 
8
if( TestSignSIMD( CmpGtSIMD( fractionVisible, Four_Zeros ) ) )
9
{
10
  // fiv: traced to sky;
11
  //relocpropang[i].x = -89; // 90 will be confused with fluors!
12
  printf( "reloc %i pos %.f %.f outside: %.4f\n", i, relocproporg[i].x, relocproporg[i].y, fractionVisible.m128_f32[0] );
13
}
14
else
15
{
16
  printf( "reloc %i pos %.f %.f %.f inside: %.4f\n", i, relocproporg[i].x, relocproporg[i].y, relocproporg[i].z, fractionVisible.m128_f32[0] );
17
  start4.DuplicateVector( relocproporg[i] );
18
  //trace fwd
19
  float ln=0;
20
  for( ln=0; ln<999; ln++ )
21
  {
22
    //outputs 1 in fractionVisible if no occlusion
23
    VectorMA( relocproporg[i], ln, relocnormal, stop );
24
    stop4.DuplicateVector( stop );
25
    TestLine ( start4, stop4, &fractionVisible );
26
    if( !TestSignSIMD( CmpGtSIMD( fractionVisible, Four_Zeros ) ) ) break;
27
  }
28
  printf( "reloc %i traced for %.f fwd to %.f %.f %.f\n", i, ln, stop.x, stop.y, stop.z );
29
 
30
  // and now trace up
31
  start += ( stop - start ) / 2;
32
  start4.DuplicateVector( start );
33
  stop=start;
34
  for( ln=0; ln<999; ln++ )
35
  {
36
    //outputs 1 in fractionVisible if no occlusion
37
    stop.z += ln;
38
    stop4.DuplicateVector( stop );
39
    TestLine ( start4, stop4, &fractionVisible );
40
    //printf( "reloc %i traced for %.f up to %.f %.f %.f\n", i, ln, stop.x, stop.y, stop.z );
41
    if( !TestSignSIMD( CmpGtSIMD( fractionVisible, Four_Zeros ) ) ) break;
42
  }
43
  printf( "reloc %i traced for %.f up to %.f %.f %.f\n", i, ln, stop.x, stop.y, stop.z );
44
  relocproporg[i] = stop-Vector( 0, 0, 10 );
45
 
46
  //printf( "reloc %i pos %.f %.f fwd wall: %.4f\n", i, relocproporg[i].x, relocproporg[i].y, fractionVisible.m128_f32[0] );
47
 
48
  //relocpropang[i].x = -89; // 90 will be confused with fluors!
49
}


Добавлено 12-10-2020 в 01:35:

вот эта замута с ln<999 нужна чтобы for вообще работал. Я не могу указать там 2 параметра или вставить TestSignSIMD в условие.

Добавлено 12-10-2020 в 01:38:

Кстати если указать define LOL = 0 а потом проверить if( LOL ) то тоже пошлёт, нужна именно проверка на цифру. Но если значение не 0 то проблем не возникает.


Отправлено Дядя Миша 11-10-2020 в 20:17:

Цитата:
Crystallize писал:
трейс в враде не такой продвинутый как в хл1, возвращает только 0 и 1 поэтому приходится выкручиваться

трасса по определению бинарна, либо 0, либо 1. Ну да, в халфе еще возвращается тип контентса - SKY, это очень удобно.

А ты что сделал?

Добавлено 11-10-2020 в 23:17:

Цитата:
Crystallize писал:
вот эта замута с ln<999 нужна чтобы for вообще работал


while( 1 ) не?

ну или for( ;; ) если тебе while( 1 ) не нравится.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Crystallize 12-10-2020 в 04:28:

Цитата:
Дядя Миша писал:
трасса по определению бинарна, либо 0, либо 1. Ну да, в халфе еще возвращается тип контентса - SKY, это очень удобно.

В халфе ещё был fraction.

Цитата:
Дядя Миша писал:
А ты что сделал?

Да ищу середину потолка в комнате, трейс горизонтально по yaw и потом от половины этого расстояния-вверх. Габариты текущего лифа как-то можно найти?

Цитата:
Дядя Миша писал:
while( 1 ) не?

с for можно в ту же строчку запихнуть как минимум скорость инкремента ну и условие выхода в идеале.


Отправлено nemyax 12-10-2020 в 05:01:

Цитата:
Crystallize писал:
с for можно в ту же строчку запихнуть как минимум скорость инкремента ну и условие выхода в идеале

Тебе непременно в ту же строчку надо? Можешь опустить проверочное выражение (только не забудь надёжно брейкнуться): for (int i = 0;;i += скоканада) {...}


Отправлено Crystallize 12-10-2020 в 06:49:

А, так ";;" это так и пишется, хех. Прикол в том что можно написать хоть (i=0;i++) и оно скомпилится без ворнингов, вот только работать не будет.


Отправлено nemyax 12-10-2020 в 07:29:

Цитата:
Crystallize писал:
скомпилится без ворнингов

Странно. Я думал, что без второго разделителя не скомпилится. Но я никада такого не пробовал.
Цитата:
Crystallize писал:
работать не будет

Отработает как раз корректно. Условие i++ никогда не выполнится при i==0 и уйдёт в бесконечный цикл (ну вернее упрётся в потолок инта) при положительном i, потому что i++ значит "прибавь один, но верни старое значение".


Отправлено XaeroX 12-10-2020 в 07:37:

Цитата:
Crystallize писал:
Прикол в том что можно написать хоть (i=0;i++) и оно скомпилится без ворнингов

Шта?

__________________

xaerox on Vivino


Отправлено Дядя Миша 12-10-2020 в 08:07:

Цитата:
Crystallize писал:
В халфе ещё был fraction.

на кой он тебе в рейтрейсере?

Цитата:
Crystallize писал:
Да ищу середину потолка в комнате



Цитата:
Crystallize писал:
Габариты текущего лифа как-то можно найти?

leaf->mins, leaf->maxs

ты чем-то капитально не тем занимаешься. Еще и 999 итераций.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Crystallize 12-10-2020 в 15:50:

XaeroX воттакое вот

C++ Source Code:
for( ln=0; ln++; )


Отправлено Crystallize 26-10-2020 в 03:38:

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

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

Цитата:
Дядя Миша писал:
leaf->mins, leaf->maxs

А в сорсе?


Отправлено Дядя Миша 26-10-2020 в 06:06:

Везде.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Crystallize 28-10-2020 в 18:23:

Perfection


Отправлено Crystallize 28-10-2020 в 18:25:

Стоило занулить дикие вальвовские значения для константной аттенюации и картинка сразу стала нормальной.


Отправлено Crystallize 31-10-2020 в 13:10:

Paskuda! Целый вечер и утро мучался с зависанием в начале FinalLightFace. Погуглил, убрал свои NULL где мог, не помогло. Дебажу-указывает куда-то на распределитель тредов, а я туда вообще не лез. Потом заметил: у меня стоит галочка на Direct Lightmap, т.е. директ и индирект в разные слои. Это она была виновата.


Отправлено Дядя Миша 31-10-2020 в 14:28:

В мультипоточном коде в первую очередь надо проверять работу в одном потоке, особенно если не понимаешь что делаешь. -threads 1 в батнике.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Crystallize 31-10-2020 в 15:39:

Дядя Миша я делал thread 1, всё равно висло.


Отправлено Crystallize 22-11-2020 в 17:36:

больше всего времени убито на то чтобы задетектить группы env_fire и каждый из них подсветить несколькими лайтами

Добавлено 23-11-2020 в 00:36:

По большому счёту различия небольшие: цвет солнца более холодный, лайты стали темнее за счёт того что затухание всегда квадратичное, (финалку я отрендерю вообще с симуляцией текслайтов). Солнце по возможности светит из env_sun, лайты-из пропов и костров, широкие лампы изображаются цепочкой лайтов.

Мне интересно, как можно из врада прочитать битмапу скайбокса чтобы выставить соответствующие значения цвета для солнца и амбиента. Но я не знаю на какой кобыле к этой проблеме подъехать: если подключаешь материалсистем к враду то он просит 100500 хидеров и всё равно что-то не находит.

Но самой безумной идеей у меня было бы спавнить вокруг карты по лайту на каждый пиксель скайбокса))


Отправлено Crystallize 22-11-2020 в 17:51:




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

Сто раз говорил, не склеивайте картинки для сравнения в одну.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Crystallize 22-11-2020 в 21:07:

там ракурс очень разный, все равно перекликивать будешь?
можно написать плагин который будет расклеивать эти картинки обратно)


Отправлено Дядя Миша 23-11-2020 в 06:34:

1. компилишь карту старым радом
2. выбираешь ракурс
3. делаешь сейв
4. делаешь скриншот
5. компилишь карту новым радом
6. грузишь сейв
7. делаешь скриншот

Правда сложно?

__________________
My Projects: download page

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

Цитата:

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


Отправлено Crystallize 25-11-2020 в 17:50:

Дядя Миша щёлкай


Отправлено Crystallize 25-11-2020 в 17:51:

похоже рад не находит модельки статиков


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

Слишком свежий рар. Я его принципиально не ставлю, он берёт за моду имена автобэкапов делать русским языком. Кто бы его просил.

__________________
My Projects: download page

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

Цитата:

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


Отправлено ncuxonaT 25-11-2020 в 19:00:

Crystallize твой рад тот, где лампы дневного света стену под собой освещают?


Отправлено Crystallize 25-11-2020 в 19:23:

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

Добавлено 26-11-2020 в 02:23:

Дядя Миша


Отправлено Crystallize 25-11-2020 в 19:23:

Дядя Миша


Отправлено ncuxonaT 25-11-2020 в 19:38:

Crystallize у тебя какие-то дикие пересветы. Какая формула квадратичного затухания? 1.0/r^2 или 1.0/max(1.0, r^2)?


Отправлено Crystallize 25-11-2020 в 19:53:

ncuxonaT я формулу не трогал. я даже снижаю яркость чтобы скомпенсировать увеличение угла разброса.


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

Ну вот теперь я ясно вижу, что ты испортил рад

Цитата:
Crystallize писал:
там трейсер какой-то неточный чтоли.

во первых трейсер там хороший. Во вторых трейсер отвечает только за тени.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Crystallize 26-11-2020 в 01:37:

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

Добавлено 26-11-2020 в 08:37:

Цитата:
Дядя Миша писал:
во первых трейсер там хороший. Во вторых трейсер отвечает только за тени.

реальные люксели почему-то вечно лезут за границу которая рисуется через r_drawlights -1, а после суперсэмплинга лезут ещё дальше.


Отправлено Дядя Миша 26-11-2020 в 06:02:

Crystallize выключи рейтрейсер вообще и увидишь, что всё останется по прежнему.

Цитата:
Crystallize писал:
лампочка ильича которая в оригинале каким-то чудом светит как прожектор-это лютая дичь

ну потому что ей поставили настройки спотлайта. Зачем в код лезть?

__________________
My Projects: download page

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

Цитата:

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


Отправлено Crystallize 26-11-2020 в 07:51:

Цитата:
Дядя Миша писал:
выключи рейтрейсер

HOW

Цитата:
Дядя Миша писал:
ну потому что ей поставили настройки спотлайта. Зачем в код лезть?

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


Отправлено Дядя Миша 26-11-2020 в 12:15:

А как ты ковыряешь сорцы если даже простых вещей не знаешь?

В функции TestLine

C++ Source Code:
1
//	g_RtEnv.Trace4Rays(myrays, Four_Zeros, len, &rt_result, TRACE_ID_STATICPROP | static_prop_index_to_ignore, g_bTextureShadows ? &coverageCallback : 0 );
2
 
3
// Assume we can see the targets unless we get hits
4
float visibility[4];
5
for ( int i = 0; i < 4; i++ )
6
{
7
  visibility[i] = 1.0f;
8
  if ( ( rt_result.HitIds[i] != -1 ) &&
9
  ( rt_result.HitDistance.m128_f32[i] < len.m128_f32[i] ) )
10
  {
11
    //			visibility[i] = 0.0f;
12
  }
13
}

закоментить как я показал.

Цитата:
Crystallize писал:
Я хочу услышать твои претензии к тому как выглядит рад, если ты правда считаешь что стало хуже.

Когда человек лезет в код, предполагается, что там хочет что-то исправить. Ну или сломать, но при этом получить опыт. Во втором случае народу ничего выкладывать не нужно. Поковырялся, поломал, набрался опыту.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Crystallize 08-12-2020 в 10:55:

немного переделал: быдло


Отправлено Crystallize 08-12-2020 в 10:55:

стадло


Отправлено Дикс 08-12-2020 в 11:19:

Лучший скрин, имхо - https://hlfx.ru/forum/showthread.ph...8242#post198242

На последнем скрине потолок засвечен намного сильнее чем стена под лампой.

__________________
igroprom.d3.ru


Отправлено Crystallize 12-12-2020 в 20:21:

Цитата:
Дядя Миша писал:
ну потому что ей поставили настройки спотлайта. Зачем в код лезть?

Я не собираюсь учиться маппингу под сорс как таковому. Там же баг на баге. Да и меня тошнит уже от него.

Цитата:
Дядя Миша писал:
Когда человек лезет в код, предполагается, что там хочет что-то исправить. Ну или сломать, но при этом получить опыт. Во втором случае народу ничего выкладывать не нужно. Поковырялся, поломал, набрался опыту.

Оно бы у меня так и лежало в недоделанном состоянии но мы с другом как-то летом гуляли и он мне сказал: а чего ты бросил, доделай и выложи.
Да и критику принимать тоже надо учиться.


Отправлено Crystallize 18-04-2022 в 03:49:

Похоже функция FormFactorPolyToDiff виновата в том что некоторые длинные и тонкие мировые фейсы остаются темными.


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

Не думаю. Я этот форм-фактор использую в NT и у меня ничего не остаётся ни тонким ни тёмным.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Crystallize 18-04-2022 в 04:40:

Дядя Миша там идет проверка на площадь патча, может в хл2 она не всегда корректно считается?


Временная зона GMT. Текущее время 18:20.
Показать все 53 сообщений этой темы на одной странице

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