HLFX.Ru Forum Страницы (41): « Первая ... « 12 13 14 15 [16] 17 18 19 20 » ... Последняя »
Показать все 608 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Наши проекты (https://hlfx.ru/forum/forumdisplay.php?forumid=1)
-- PrimeXT - логическое продолжение XashXT (https://hlfx.ru/forum/showthread.php?threadid=5371)


Отправлено Дядя Миша 15-03-2021 в 17:38:

Хорошо, будем ждать

__________________
My Projects: download page

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

Цитата:

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


Отправлено Crystallize 15-03-2021 в 17:43:

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


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

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

__________________
My Projects: download page

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

Цитата:

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


Отправлено SNMetamorph 15-03-2021 в 18:53:

Цитата:
SNMetamorph писал:
Это всё есть, но не вижу смысла в данный момент выкладывать т.к. я еще не закончил дела с батчингом. Когда закончу, стопочкой уже всё выложу и распишу.

В общем-то там немного совсем осталось, остается доделать только bindless textures и отключение обхода дерева. И можно будет переносить графоний и материалы из П2.

__________________
Мой сайт
Xash3D Modding Discord


Отправлено SNMetamorph 18-03-2021 в 07:21:

За вчера запилил статик энтити и их батчинг, прикрутил более расширенную статистику в r_speeds и пофиксил несколько багов.

__________________
Мой сайт
Xash3D Modding Discord


Отправлено KiQ 19-03-2021 в 15:46:

Цитата:
SNMetamorph писал:
оно КАЖДУЮ букву рендерит через glBegin/glEnd

Зачем каждую? множественные квады спокойно рисуются внутри одного glBegin/glEnd, вот у меня в движке например метод рисования текста

C++ Source Code:
1
public void onDraw() {
2
  if (text == null) return;
3
  if (text.length() <= 0) return;
4
 
5
  float tmp_x = x - 1;
6
  float tmp_y = y - font.ascent;
7
 
8
  GL11.glBindTexture(GL11.GL_TEXTURE_2D, font.getFontTexture().id);
9
  GL11.glColor4f(color.r, color.g, color.b, color.a);
10
 
11
  GL11.glBegin(GL11.GL_QUADS);
12
  {
13
    for (char c : text.toCharArray()) {
14
      float w = font.charWidth(c);
15
      float h = font.getHeight();
16
 
17
      float u = 1.0F / font.getFontTexture().width * font.getCharX(c);
18
      float v = 0f;
19
      float u2 = u + 1.0F / font.getFontTexture().width * w;
20
      float v2 = 1f;
21
 
22
      GL11.glTexCoord2f(u, v);
23
      GL11.glVertex2f(tmp_x, tmp_y);
24
 
25
      GL11.glTexCoord2f(u2, v);
26
      GL11.glVertex2f(tmp_x + w, tmp_y);
27
 
28
      GL11.glTexCoord2f(u2, v2);
29
      GL11.glVertex2f(tmp_x + w, tmp_y + h);
30
 
31
      GL11.glTexCoord2f(u, v2);
32
      GL11.glVertex2f(tmp_x, tmp_y + h);
33
 
34
      tmp_x += w;
35
    }
36
  }
37
  GL11.glEnd();
38
 
39
  GL11.glColor4f(1f, 1f, 1f, 1f);
40
  GL11.glBindTexture(GL11.GL_TEXTURE_2D, 0);
41
}


Надо бы мне атласы шрифтов замутить для ускорения

Добавлено 19-03-2021 в 18:46:

Кстати, пробовал переводить на glDrawArrays, никакого прироста не получил

__________________
-Brain is dead-


Отправлено Дядя Миша 19-03-2021 в 15:54:

Цитата:
KiQ писал:
множественные квады спокойно рисуются внутри одного glBegin/glEnd

ну да, я про это и говорил.

__________________
My Projects: download page

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

Цитата:

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


Отправлено ncuxonaT 19-03-2021 в 16:50:

KiQ может, там рендер текста сделан на дисплейных списках по старому туториалу NeHe. На каждую букву свой glBegin/glEnd и сдвиг курсора через glTranslatef.


Отправлено SNMetamorph 21-03-2021 в 18:31:

Цитата:
Дядя Миша писал:
Хы. Mod_ResortFaces должен вызываться каждый кадр. Там недоделато.

А почему каждый кадр? Как оно по идее должно было работать?

__________________
Мой сайт
Xash3D Modding Discord


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

SNMetamorph оно ловит изменения кваров. Но сортировка выполняется 1 раз после смены квара.

__________________
My Projects: download page

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

Цитата:

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


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

Цитата:
Дядя Миша писал:
SNMetamorph оно ловит изменения кваров. Но сортировка выполняется 1 раз после смены квара.

Ага, сегодня вот увидел и пофиксил. Там еще была такая проблема что tr.params_changed не обнулялся в R_ClearScene и в итоге сортировка каждый кадр выполнялась, но теперь в функции R_ClearScene если tr.params_changed трушный, то снова происходит сортировка. Вроде бы нормально работает.

Добавлено 08-04-2021 в 22:59:

Еще один фактор всплыл, который влияет на производительность рендеринга: на 74 отрисовки энтить приходится ~280 переключений шейдера, что конечно дофига. Я вручную проверил, что же там так чередуется, в итоге выяснилось что там есть 3 разных шейдера BmodelSolid, один без лайтстилей, второй с лайтстилем 0, и третий с лайтстилями 0 и 1.
Может быть как-то можно сделать чтоб шейдер был либо без лайтстилей, либо со всеми лайтстилями? А то в текущей реализации немало лишних переключений происходит.

Добавлено 08-04-2021 в 23:00:

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

__________________
Мой сайт
Xash3D Modding Discord


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

Цитата:
SNMetamorph писал:
Может быть как-то можно сделать чтоб шейдер был либо без лайтстилей, либо со всеми лайтстилями?

Попробуй, но так ИМХО еще тормознее. У тебя сортировка неправильная, не должно быть столько переключений.

Цитата:
SNMetamorph писал:
Вообще по мере того как я что-то допиливаю, еще и новая информация раскрывается и снова приходится что-то допиливать

Я сумел вовремя остановиться, да.

__________________
My Projects: download page

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

Цитата:

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


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

Цитата:
Дядя Миша писал:
У тебя сортировка неправильная, не должно быть столько переключений.

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

Добавлено 08-04-2021 в 23:06:

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

Добавлено 08-04-2021 в 23:07:

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

Добавлено 08-04-2021 в 23:11:

Цитата:
SNMetamorph писал:
А у непрозрачных каждая энтити рендерится отдельно, сбатчить их не получается из-за того что у каждой своя матрица трансформации.

А что если все матрицы засунуть в uniform buffer object

__________________
Мой сайт
Xash3D Modding Discord


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

Цитата:
SNMetamorph писал:
А у непрозрачных каждая энтити рендерится отдельно

Ты походу не понял. Зачем переключать шейдер при смене энтити?
Вот у тебя 100 энтить и на всех нулевой лайтстиль. Ты что шйдер каждый раз обнуляешь и ставишь заново?

Или ты хочешь сказать, что у каждой энтити используются по нескольку шейдеров?

Цитата:
SNMetamorph писал:
А вообще, конкретно мир сейчас довольно шустро рендерится

сколько полигонов в кадре, сколько FPS, какая видеокарта.

__________________
My Projects: download page

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

Цитата:

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


Отправлено SNMetamorph 09-04-2021 в 06:21:

Цитата:
Дядя Миша писал:

Ты походу не понял. Зачем переключать шейдер при смене энтити?
Вот у тебя 100 энтить и на всех нулевой лайтстиль. Ты что шйдер каждый раз обнуляешь и ставишь заново?

Ну там у каждой энтити все ее сурфейсы отправляются в список tr.draw_surfaces который потом рисуется в R_DrawBrushList. Это так еще в ванильном ксашмоде работало и пока никто это не трогал. Ну да, получается что шейдер там переключаетмя с нуля каждый раз.


Временная зона GMT. Текущее время 13:47. Страницы (41): « Первая ... « 12 13 14 15 [16] 17 18 19 20 » ... Последняя »
Показать все 608 сообщений этой темы на одной странице

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