HLFX.Ru Forum Страницы (32): « Первая ... « 25 26 27 28 [29] 30 31 32 »
Показать все 473 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Paranoia 2:Savior (https://hlfx.ru/forum/forumdisplay.php?forumid=38)
-- Полный исходный код P2:Savior 1.51, включая компиляторы и модельвьювер (https://hlfx.ru/forum/showthread.php?threadid=5552)


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

Для того же, для чего и в Халфе - сохранять информацию между уровнями.

__________________
My Projects: download page

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

Цитата:

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


Отправлено ncuxonaT 26-08-2021 в 13:46:

Цитата:
Дядя Миша писал:
Вещественное с плавающей точкой хранит не значение, а выражение, грубо говоря. Ну чтобы тебе было понятнее, 4 * 12 = 48 и 6 * 8 = 48.

Согласно стандарту, одно и то же число всегда будет записано одинаково.

"Некоторые числа могут иметь несколько представлений в формате, в котором они были только что описаны. Например, если b = 10 и р = 7, то число −12,345 может быть представлено как: −12345 × 10−3, −123450 × 10−4 или −1234500 × 10−5.

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

Для бинарных форматов представление делается уникальным путём выбора наименьшего представляемого показателя. Для чисел с показателем в нормальном диапазоне (не все из них или все нули), ведущий бит мантиссы всегда будет равен 1. Следовательно, ведущий 1 бит может подразумеваться, а не сохраняться явно в памяти. Это правило называется ведущей битной конвенцией или скрытой битной конвенцией. Правило позволяет сберечь 1 бит памяти, чтобы иметь ещё один бит точности. Ведущий бит конвенции не используется для субнормальных чисел; их показатель находится за пределами нормального диапазона значений. "


Отправлено SNMetamorph 26-08-2021 в 15:46:

Цитата:
Дядя Миша писал:
Для того же, для чего и в Халфе - сохранять информацию между уровнями.

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

__________________
SNMetamorph's Personal Blog
Xash3D Modding Discord


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

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

__________________
My Projects: download page

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

Цитата:

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


Отправлено ncuxonaT 26-08-2021 в 18:25:

Цитата:
Дядя Миша писал:
Это вероятно тот самый гейзенбаг, о котором так долго твердили большевики. Вылет в движке, как-то связан с логом.
Условия появления:
1. Только на P2
2. Только в режиме -dev (без -dev или в режиме -dev 2 не проявляется).
Возникает на самом начальном этапе инициализации.
Я так и не понял, что это такое, и откуда взялось, но это точно связано с ведением лога.

Поймал вылет на ванильной паранойе, запускал с параметрами -console -log +sv_cheats 1 -dev 7

code:
================================================================================= Xash3D 0.99 (build 4511) started at Aug26 2021 [21:22.42] ================================================================================= Console initialized. Mem_Free: not allocated or double freed (free at D:\Xash3D\src_main\engine\common\filesystem.c:1261)


Отправлено SNMetamorph 27-08-2021 в 17:37:

Зачем в шейдерах в texfetch.h в функции normalmap2D инвертируется Y-координата нормали?

Cg Pixel Shader:
N.y = -N.y; // !!!
N = normalize( N );


Добавлено 27-08-2021 в 21:37:

Цитата:
SNMetamorph писал:
Зачем в шейдерах в texfetch.h в функции normalmap2D инвертируется Y-координата нормали?
Cg Pixel Shader:
N.y = -N.y; // !!!
N = normalize( N );

Ага. Без этой инверсии нормалка начинает выглядеть неправильно.
Также, параллакс маппинг не заработал нормально, пока я в viewDir векторе не инвертировал Y координату. Это уже получается какая-то проблема типа SQB, только с TBN в шейдерах. Получается, TBN как-то не совсем правильно строится?

__________________
SNMetamorph's Personal Blog
Xash3D Modding Discord


Отправлено Дядя Миша 27-08-2021 в 17:58:

Цитата:
SNMetamorph писал:
Получается, TBN как-то не совсем правильно строится?



Из hlrad->lightmap.cpp:3773
C++ Source Code:
VectorNegate( directionnormals[1], directionnormals[1] );

Это еще с даркплейса тянется. Для паранои первую версию компиляторов делал китаец (Кастомный VHLT). Я предложил ему взять имплементацию делюкс-маппинга из Darkplaces. Просто, чтобы иметь возможность контролировать контент под сторонним движком (и кстати я этим активно пользовался на начальных этапах). А там тангента инвертирована почему-то была. Ну вот и пришлось так всё оставить.

__________________
My Projects: download page

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

Цитата:

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


Отправлено ncuxonaT 27-08-2021 в 18:15:

SNMetamorph потому что в паранойе нормалмапы были вразнобой, половина в директикс спейсе, половина в опенгл спейсе.
https://hsto.org/webt/vt/f_/bo/vtf_botw_8tazlodtepbgp0zyvk.png
Инвертирование было попыткой сделать так, чтобы большая часть нормалмап выглядела правильно.
Плюс у моделей неправильно строится TBN в случае отзеркаленной развертки.
Вроде я это исправил, в gl_studio_init.cpp строчки 1524 и далее:

C++ Source Code:
1
if( !smooth_tbn )
2
{
3
  Vector tmpVect = CrossProduct( sVect, tVect );
4
  bool leftHanded = DotProduct( tmpVect, normal ) < 0.0f;
5
 
6
  if( !leftHanded )
7
  {
8
    tVect = CrossProduct( normal, sVect );
9
    sVect = CrossProduct( tVect, normal );
10
  }
11
  else
12
  {
13
    tVect = CrossProduct( sVect, normal );
14
    //sVect = CrossProduct( normal, tVect );
15
    //nc fix?
16
    sVect = CrossProduct( tVect, normal );
17
  }
18
}


И для нормалмап в опенгл спейсе инвертирование игрека не нужно, если что.


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

ncuxonaT Элбер текстуры брал с разных игр. Во всех этих играх совпадает стандарт? Или тоже вразнобой?

__________________
My Projects: download page

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

Цитата:

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


Отправлено SNMetamorph 27-08-2021 в 18:26:

Цитата:
ncuxonaT писал:
SNMetamorph потому что в паранойе нормалмапы были вразнобой, половина в директикс спейсе, половина в опенгл спейсе.
https://hsto.org/webt/vt/f_/bo/vtf_botw_8tazlodtepbgp0zyvk.png
Инвертирование было попыткой сделать так, чтобы большая часть нормалмап выглядела правильно.
Плюс у моделей неправильно строится TBN в случае отзеркаленной развертки.
Вроде я это исправил, в gl_studio_init.cpp строчки 1524 и далее:
C++ Source Code:
1
if( !smooth_tbn )
2
{
3
  Vector tmpVect = CrossProduct( sVect, tVect );
4
  bool leftHanded = DotProduct( tmpVect, normal ) < 0.0f;
5
 
6
  if( !leftHanded )
7
  {
8
    tVect = CrossProduct( normal, sVect );
9
    sVect = CrossProduct( tVect, normal );
10
  }
11
  else
12
  {
13
    tVect = CrossProduct( sVect, normal );
14
    //sVect = CrossProduct( normal, tVect );
15
    //nc fix?
16
    sVect = CrossProduct( tVect, normal );
17
  }
18
}


И для нормалмап в опенгл спейсе инвертирование игрека не нужно, если что.

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

__________________
SNMetamorph's Personal Blog
Xash3D Modding Discord


Отправлено ncuxonaT 27-08-2021 в 19:05:

Дядя Миша Элбер большую часть нормалмап генерировал сам из диффуза каким-то суперуродским способом, что всё покрывалось мерзким шумом. А из тех игр, откуда он брал, только в параграфе 78 нормали вразнобой, в остальных вроде бы всё прилично.

SNMetamorph на мировых полигонах TBN тоже как-то не так считается при отзеркаленной развертке, возможно, параллакс к этому чувствителен. Можешь сделать карту с двумя стенами, чтобы на одной текстура была слева направо, а на другой справа налево? Параллакс на обеих будет одинаково работать, или на одной чудить?


Отправлено Дядя Миша 27-08-2021 в 19:13:

Разница в освещении будет заметна, естественно. Но на рельеф нормалмапа не влияет.

__________________
My Projects: download page

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

Цитата:

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


Отправлено SNMetamorph 27-08-2021 в 19:57:

Цитата:
ncuxonaT писал:
Параллакс на обеих будет одинаково работать, или на одной чудить?

Ну работает хорошо на обоих.

Добавлено 27-08-2021 в 23:57:

А вот нормали видно что по-разному отображаются.

__________________
SNMetamorph's Personal Blog
Xash3D Modding Discord


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

Хм, будем думать.


Отправлено SNMetamorph 28-08-2021 в 06:49:

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

__________________
SNMetamorph's Personal Blog
Xash3D Modding Discord


Временная зона GMT. Текущее время 15:36. Страницы (32): « Первая ... « 25 26 27 28 [29] 30 31 32 »
Показать все 473 сообщений этой темы на одной странице

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