HLFX.Ru Forum Страницы (52): « Первая ... « 44 45 46 47 [48] 49 50 51 52 »
Показать все 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)


Отправлено Дядя Миша 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


Временная зона GMT. Текущее время 09:48. Страницы (52): « Первая ... « 44 45 46 47 [48] 49 50 51 52 »
Показать все 769 сообщений этой темы на одной странице

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