HLFX.Ru Forum Страницы (255): « Первая ... « 117 118 119 120 [121] 122 123 124 125 » ... Последняя »
Показать все 3825 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Наши проекты (https://hlfx.ru/forum/forumdisplay.php?forumid=1)
-- XashNT: блог разработчика (https://hlfx.ru/forum/showthread.php?threadid=5297)


Отправлено XaeroX 29-10-2020 в 15:55:

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

Выглядит как будто куллинг инвертирован.

__________________

xaerox on Vivino


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

На кордоне - десять тысяч кусочков моделей. Я в этой карте собрал около трёх тысяч.

Вот еще какая мысль мне в голову пришла, кстати Ксер и тебе тоже советую поэкспериментировать. BSP при построении, проверяет размер ноды на максимально допустимый. И если он превышает 1024 юнита, то делает дополнительный разруб. Но как она его делает?! Просто берёт плоскость с этим отступом в 1024 юнита. А что если эту часть дерева строить по классическому AABB-разбиению? Тогда у нас уровень до определённых размеров будет делиться точно поровну. В моём понимании это хорошо способствует пространственной балансировке дерева и выравнивает время доступа к нему.

C++ Source Code:
1
int SelectPartition( tree_t *tree, node_t *node, bface_t *list )
2
{
3
  if( tree->blocksize > 0 )
4
  {
5
    dvec3	halfSize = dvec3( node->bounds[1] - node->bounds[0] ) * 0.5;
6
    dvec3	normal;
7
    double	dist;
8
#if 0
9
    if( halfSize.x > tree->blocksize || halfSize.y > tree->blocksize || halfSize.z > tree->blocksize )
10
    {
11
      int	axis;
12
 
13
      if( halfSize.x >= halfSize.y && halfSize.x >= halfSize.z )
14
        axis = PLANE_X;
15
      else if( halfSize.y >= halfSize.x && halfSize.y >= halfSize.z )
16
        axis = PLANE_Y;
17
      else axis	= PLANE_Z;
18
 
19
      normal = dvec3( 0.0 );
20
      normal[axis] = 1.0;
21
      dist = ( node->bounds[1][axis] + node->bounds[0][axis] ) * 0.5;
22
 
23
      return FindHashPlane( dplane( normal, dist ));
24
    }
25
#else
26
    // if it is crossing a 1k block boundary, force a split
27
      for( int i = 0; i < tree->blockdimensions; i++ )
28
      {
29
        if( halfSize[i] > tree->blocksize )
30
          dist = tree->blocksize * ( floor( ( node->bounds[0][i] + halfSize[i] ) / tree->blocksize ) + 1.0 );
31
        else dist = tree->blocksize * ( floor( node->bounds[0][i] / tree->blocksize ) + 1.0 );
32
 
33
      if( dist > ( node->bounds[0][i] + 1.0 ) && dist < ( node->bounds[1][i] - 1.0 ))
34
      {
35
        normal = dvec3( 0.0 );
36
        normal[i] = 1.0;
37
        return FindHashPlane( dplane( normal, dist ));
38
      }
39
    }
40
#endif
41
  }
42
 
43
  if( tree->optimized )
44
    return SelectPartitionVL( node, list );
45
  return SelectPartitionQ3( node, list );
46
}

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

Добавлено 31-10-2020 в 11:53:

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

Добавлено 31-10-2020 в 11:55:

А потом эти куски попадают в соответствующие ячейки octree. Т.е. octree ессно ничего не режет, его вообще нет в компиляторе. Но зато в этом дереве находится всё сразу - и статическая геометрия и динамическая. Дерево достраивается по мере заполнения уровня мобами. Мне лично этот момент не нравится, т.к. октри довольно жрущее по памяти и может во время игры давать вот те самые лаги и фризы. Но это пока что предположение.

__________________
My Projects: download page

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

Цитата:

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


Отправлено KorteZZ 03-11-2020 в 07:48:

А что насчет лимитов всяких? Не получится ли так, что если чел захочет сделать опенворлд, он уткнется тупо в лимиты чего-нибудь и у него получится в лучшем случае просто пустой мир?

__________________

Killing Floor: Horzine Outbreak


Отправлено Aynekko 03-11-2020 в 08:06:

У меня такой же вопрос. В ксаше я обратил внимание, что если поставить 30 солдат модельками как env_static, фпс не проседает, а если 30 реальных - то сильно падает. Это из-за их кода или бсп-дерева? Не совсем понимаю, как это работает.

__________________
Мой мод на Xash


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

KorteZZ лимитов в новом ксаше особо нету. Лимиты только в аппаратном обеспечении.

Цитата:
Aynekko писал:
Это из-за их кода или бсп-дерева?

поиск по большому дереву, да. Писал об этом.

__________________
My Projects: download page

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

Цитата:

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


Отправлено thambs 03-11-2020 в 10:53:

Дядя Миша
Есть планы по выносу AI в отдельный поток?

__________________
http://www.moddb.com/mods/monorail-quest


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

Есть планы по оптимизации, а не по выносу.

Добавлено 03-11-2020 в 16:04:

Мне сейчас надо определиться с типом коллизии, вот оно что.
Представлять каждый треугольник в виде плоскости со скосами, довольно эффективно в плане скорости работы, но занимает чудовищно много места.
На какой-нибудь ЧАЭС легко может быть 10-15 миллионов плоскостей.
А ведь она по современным меркам довольно таки лоу-поли.

Впрочем там вылезает еще одна проблемка. У видеокарт оказывается, существует лимит на максимальный размер VBO - обычно миллион вертексов.
Самое поганое, что и на индексы точно такой же лимит - 1 миллион.
Это немного нелогично, к тому же превышение лимита далеко не всегда приводит к каким-то последствиям, на моих карточках.
Так что придётся еще и геометрию разбивать на небольшие батчи.
Наверное сделаю куски по 65 киловертексов с локальными оффсетами, чёб индексы хранить в 16-битном диапазоне.

Но повторюсь, главная задача, это определиться с коллизией. Коллизия будет по треугольникам, но надо решить с какими фигурами. Можно сделать просто triangle vs bbox. Можно как в третьем дууме - набирать произвольные простенькие фигуры из конечного числа вертексов - обычно 32-64. В том же физиксе лимит на активное тело - 256 вертексов, но как правило это даже избыточно.

__________________
My Projects: download page

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

Цитата:

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


Отправлено kotar.sys 05-11-2020 в 06:48:

А в сталкере разве нет упрощенной модели геометрии для коллизии? Может строить/подгружать из 3д пакета её в компиляторе моделей, как это делает сорс?

__________________
Ржака


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

Цитата:
kotar.sys писал:
А в сталкере разве нет упрощенной модели геометрии для коллизии?

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

__________________
My Projects: download page

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

Цитата:

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


Отправлено kotar.sys 05-11-2020 в 12:16:

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

__________________
Ржака


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

Да нет никаких "сталкеровских" методов.

Загрузил недостающие части ландшафта. Обратите внимание на поликаунт.



На машинках почему-то текстуры съехали, на всех. Но я пока не разбирался.

Ну вот, прекрасная сцена для тестирования и оптимизации отрисовки и коллизии. Ну и для оптимального хранения данных тоже. Разумеется, я потом буду тестировать и другие сцены, вероятно и из эксодуса, надо получить вменяемую производительность.
Но тут конечно без вариантов - точного ответа нет. Только тестировать и сравнивать. Лоды проверю, размеры батчей, оптимальные размеры VBO, помощь дерева в отрисовке, и так далее.
Это вот как раз такой тип сцены, что нихрена не спрячешь и не укроешь, всё как на ладони.

Добавлено 05-11-2020 в 18:35:

По сути с этой сценой даже мой компилятор не справляется - ему не хватает памяти, выручает только ключ /3Gb в boot.ini
Предвидя советы "ну почему бы не сделать как в сталкере", напоминаю, что новый движок должен уметь как активно использовать полностью брашевые карты, так и полностью полигональные. Т.е. задачка несколько сложнее, чем представляется на первый взгляд.
Нет, не в оптимизации, конечно дело. А в выборе наилучших методов.
А чтобы что-то выбрать, надо многое протестить. Это время.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Ku2zoff 05-11-2020 в 16:29:

Цитата:
Дядя Миша писал:
Обратите внимание на поликаунт.

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


Отправлено Cybermax 05-11-2020 в 18:08:

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


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

Цитата:
Ku2zoff писал:
Вот пейсатели форков X-Ray кипятком обоссутся, если у тебя получится показать Кордон со всеми деталями на полной динамике с фпс выше, чем выдают их форки на твоей видекарте

X-Ray очень хорошо оптимизирован. Но можно еще лучше, т.к. он точился под преведущее поколение карточек.

Цитата:
Cybermax писал:
Мне уже больше нравится то что на скриншутах, чем в оригинале

без лайтмап-то?

__________________
My Projects: download page

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

Цитата:

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


Отправлено ncuxonaT 06-11-2020 в 01:04:

Почему коллизия по треугольникам? Ты хочешь строить какую-то единую структуру для всей карты со всеми елками?


Временная зона GMT. Текущее время 14:42. Страницы (255): « Первая ... « 117 118 119 120 [121] 122 123 124 125 » ... Последняя »
Показать все 3825 сообщений этой темы на одной странице

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