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 ); |
8 | if( TestSignSIMD( CmpGtSIMD( fractionVisible, Four_Zeros ) ) ) |
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] ); |
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] ); |
20 | for( ln=0; ln<999; ln++ ) |
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; |
28 | printf( "reloc %i traced for %.f fwd to %.f %.f %.f\n", i, ln, stop.x, stop.y, stop.z ); |
31 | start += ( stop - start ) / 2; |
32 | start4.DuplicateVector( start ); |
34 | for( ln=0; ln<999; ln++ ) |
36 | //outputs 1 in fractionVisible if no occlusion |
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; |
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 ); |
46 | //printf( "reloc %i pos %.f %.f fwd wall: %.4f\n", i, relocproporg[i].x, relocproporg[i].y, fractionVisible.m128_f32[0] ); |
48 | //relocpropang[i].x = -89; // 90 will be confused with fluors! |
Добавлено 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 можно в ту же строчку запихнуть как минимум скорость инкремента ну и условие выхода в идеале.