HLFX.Ru Forum
Показать все 15 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- OpenGL (https://hlfx.ru/forum/forumdisplay.php?forumid=7)
-- HLBSP, VBO и типы фейсов (https://hlfx.ru/forum/showthread.php?threadid=1852)


Отправлено axer 04-06-2009 в 18:10:

Half-Life HLBSP, VBO и типы фейсов

Вопрос скорей теоретический, касается скорости обработки геометрии из HLBSP с помощью использования VBO. Меня смущает, что BSP как правило содержит фейсы разного типа (GL_TRIANGLES, GL_QUADS, GL_POLYGON). Т.е. для их рендеринга одним вызовом glDrawArrays или аналогичных функций не обойтись. А с GL_POLYGON и вовсе придётся каждый фейс рендерить отдельно (как например и сделано в программе BSP View).
В связи с этим возникает сложность связать HLBSP с VBO, а точнее, не упадёт ли производительность от того, что фейсы будут рендериться не сразу все (видимые разумеется), а по одному (или небольшими группами до 10 штук)?
Может это и является причиной, что HL начинает тормозить даже с 1000 wpoly?


Отправлено XaeroX 04-06-2009 в 18:16:

Цитата:
axer писал:
не упадёт ли производительность от того, что фейсы будут рендериться не сразу все (видимые разумеется), а по одному

Разумеется, упадет, причем сильно.
Сразу все и так не получится - на них ведь разные текстуры. Ну разве что если ты используешь texture arrays...

Лучше преобразовать все типы фейсов в GL_TRIANGLES при загрузке, это в общем-то простая процедура.

Цитата:
axer писал:
Может это и является причиной, что HL больше начинает тормозить даже с 1000 wpoly?

Маловероятно. Скорее всего, HL тоже делает преобразование всего в треугольники. А тормоза - из-за расчетов на ЦПУ (по крайней мере я уже очень давно не видел видеокарту, на которой халфа тормозит при 1000 вполи).

__________________

xaerox on Vivino


Отправлено axer 04-06-2009 в 18:30:

Цитата:
XaeroX писал:
Сразу все и так не получится - на них ведь разные текстуры. Ну разве что если ты используешь texture arrays...

Можно отсортировать фейсы по одинаковым текстурам и рендерить за относительно небольшое количество вызовов glBindTexture + glDrawArrays. Всё равно это будет быстрее, чем каждый фейс отдельно.
Цитата:
XaeroX писал:
Лучше преобразовать все типы фейсов в GL_TRIANGLES при загрузке, это в общем-то простая процедура.

А вот это уже интересно. Получается, увеличение количества полигонов засчёт разбиения на треугольники менее критично, чем описаная мной проблема?
Цитата:
XaeroX писал:
(по крайней мере я уже очень давно не видел видеокарту, на которой халфа тормозит при 1000 вполи).

Может разные представления про "тормозит". У меня 1000 wpoly - примерно 60 фпс, и мне этого мало Ну это не столь важно в данном случае...


Отправлено XaeroX 04-06-2009 в 18:34:

Цитата:
axer писал:
Можно отсортировать фейсы по одинаковым текстурам и рендерить за относительно небольшое количество вызовов glBindTexture + glDrawArrays

Да, разумеется, так все и делают
Цитата:
axer писал:
Получается, увеличение количества полигонов засчёт разбиения на треугольники менее критично, чем описаная мной проблема?

Никакого увеличения не происходит. Видеокарта ведь оперирует только с треугольниками, поэтому рисуя примитив QUAD или, не дай Бог, POLYGON, ты заставляешь драйвер выполнять триангуляцию (хотя и простую, но все же - в реальном времени).
Цитата:
axer писал:
У меня 1000 wpoly - примерно 60 фпс, и мне этого мало

Может быть, когда прикрутишь шейдеры и динамический свет, ты изменишь свое представление о низком фпс... И "мало" будет 9-10

__________________

xaerox on Vivino


Отправлено axer 04-06-2009 в 18:51:

Цитата:
XaeroX писал:
Никакого увеличения не происходит. Видеокарта ведь оперирует только с треугольниками, поэтому рисуя примитив QUAD или, не дай Бог, POLYGON, ты заставляешь драйвер выполнять триангуляцию (хотя и простую, но все же - в реальном времени).

Спасибо, не знал. Это вобщем-то снимает проблему. Я боялся, что увеличение количества полигонов негативно скажется на производительности...
Цитата:
XaeroX писал:
Может быть, когда прикрутишь шейдеры и динамический свет, ты изменишь свое представление о низком фпс... И "мало" будет 9-10

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


Отправлено XaeroX 04-06-2009 в 18:56:

Цитата:
axer писал:
Да и динамический свет для моей видеокарты - убийство

Буду признателен, если отпишешься здесь.

__________________

xaerox on Vivino


Отправлено axer 04-06-2009 в 19:02:

Отписался


Отправлено Дядя Миша 05-06-2009 в 06:55:

Цитата:
У меня 1000 wpoly - примерно 60 фпс, и мне этого мало

Это в окошке 60 фпс или в полном экране?
Вообще на большинстве халфовских карт, отрисованных при помощи VBO фпс должен быть порядка 500-600.

__________________
My Projects: download page

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

Цитата:

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


Отправлено axer 05-06-2009 в 09:42:

Цитата:
Дядя Миша писал:
Это в окошке 60 фпс или в полном экране?

В полном экране на 1024х768 разрешении.
Цитата:
Дядя Миша писал:
Вообще на большинстве халфовских карт, отрисованных при помощи VBO фпс должен быть порядка 500-600.

Ну в HL то нет VBO. А вообще я думаю так и будет


Отправлено XaeroX 05-06-2009 в 10:53:

Цитата:
axer писал:
Ну в HL то нет VBO

Почему ты так думаешь?
Халфа на самом деле юзает многие расширения, например, EXT_paletted_texture, просто не пишет ничего об этом в консоли, в отличие от квак.

__________________

xaerox on Vivino


Отправлено axer 05-06-2009 в 11:20:

XaeroX
Неужели в 98 году уже было GL_ARB_vertex_buffer_object? Тогда кажется только OpenGL 1.1 был...


Отправлено XaeroX 05-06-2009 в 11:45:

axer
EXT_paletted_texture тогда тоже не было, между прочим
Посмотри на дату изменения hw.dll. У меня, например, он датируется 2003 годом.

Добавлено 05-06-2009 в 18:44:

Хотя, EXT_paletted_texture возможно уже и был на каком-нибудь Voodoo3.
Ну, скажем, 3-TMU мультитекстурирования не было, а детальные текстуры работают, по ходу, именно так.

Добавлено 05-06-2009 в 18:45:

Цитата:
Дядя Миша писал:
Вообще на большинстве халфовских карт, отрисованных при помощи VBO фпс должен быть порядка 500-600.

Мы, вероятно, должны догадываться, какую видеокарту ты имеешь в виду, когда называешь конкретные цифры?

__________________

xaerox on Vivino


Отправлено Дядя Миша 05-06-2009 в 12:24:

XaeroX то что сейчас некоторыми товарищами относится к low-end:
Radeon 9800, geForce 6600GT и им подобные, у которых отличие только в поддержке третьей модели шойдеров.

__________________
My Projects: download page

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

Цитата:

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


Отправлено XaeroX 05-06-2009 в 12:49:

Дядя Миша
Я с тобой не соглашусь. Волатила2 на радеоне Х1600 с вбо, драв_ранже_елементс и прочими оптимизациями на более или менее сложной карте (без бампа и теней, разумеется - чисто уровень хл1) выдаст не более 400 фпс. И это - без студиомоделек (которые я еще не прикрутил )

__________________

xaerox on Vivino


Отправлено Дядя Миша 05-06-2009 в 16:57:

XaeroX без моделек, совершенно верно.

__________________
My Projects: download page

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

Цитата:

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


Временная зона GMT. Текущее время 23:04.
Показать все 15 сообщений этой темы на одной странице

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