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:
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 вполи).__________________
Отправлено 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 __________________
Отправлено axer 04-06-2009 в 18:51:
Цитата:
XaeroX писал:
Никакого увеличения не происходит. Видеокарта ведь оперирует только с треугольниками, поэтому рисуя примитив QUAD или, не дай Бог, POLYGON, ты заставляешь драйвер выполнять триангуляцию (хотя и простую, но все же - в реальном времени).
Спасибо, не знал. Это вобщем-то снимает проблему. Я боялся, что увеличение количества полигонов негативно скажется на производительности...
Цитата:
XaeroX писал:
Может быть, когда прикрутишь шейдеры и динамический свет, ты изменишь свое представление о низком фпс... И "мало" будет 9-10
Может быть. Но я это говорю скорей с точки зрения пользователя, а не разработчика. Да и динамический свет для моей видеокарты - убийство...
Отправлено XaeroX 04-06-2009 в 18:56:
Цитата:
axer писал:
Да и динамический свет для моей видеокарты - убийство
Буду признателен, если отпишешься здесь.__________________
Отправлено 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, просто не пишет ничего об этом в консоли, в отличие от квак.__________________
Отправлено 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.
Мы, вероятно, должны догадываться, какую видеокарту ты имеешь в виду, когда называешь конкретные цифры? __________________
Отправлено Дядя Миша 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 фпс. И это - без студиомоделек (которые я еще не прикрутил )
__________________
Отправлено Дядя Миша 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'