Нашёл у себя в закромах старую DX9-демку. И точно, всё совпадает, с поверхностью 2048*2048 (8.3 млн) - 66 FPS. 8.3 млн на DX9
(кол-во полигонов там не переключается)
invis
А они гоняются через весь пайп дроколами?
у меня 6 фпс
На которой демке 6? На последней? Попробуй тогда ещё OpenGL-ную с нажатием 4 (будет столько же полигонов, как в DX).
Дроколл везде 1. Поскольку это 1 меш.
Во всех демках меш заранее загоняется в VB/VBO, ничего лишнего гоняться не должно. Но если это интегрированная карта, тогда от VB толку чуть.
О, кстати об интегрированных. Проверил на HD630 (CoffeeLake) с 8.3 млн. треугольников, DX9 реабилитировался:
Mikle: 76-80
Моя OpenGL: 47 без текстуры, 41 с текстурой
Моя DX9: 81
Самое смешное, что DX9 на интеграшке быстрее, чем на GeForce. Но как, Холмс? Может оно через процессор на самом деле работает? (который там действительно быстрее).
invis
> Самое смешное, что DX9 на интеграшке быстрее, чем на GeForce. Но как, Холмс?
CPU driver overhead?
invis
> Может оно через процессор на самом деле работает?
У меня есть возможность включить софт вертекспроцессинг.
А твоя OpenGL демка как раз в 4 раза быстрее моей, я даже подумал, может ты где-то с размером вдвое напутал. Но, вижу по твоим результатам, не в этом дело.
Может рендериться не через ту карточку, если их более одной. Одна рендерит, другая только буфер готовый на экран кидает.
И не всегда легко настроить какая будет работать, особенно на старых системах.
А почему вас волнует DX9? Систем, которые не поддерживают ничего более позднего, уже не осталось. Работать с DX9 сложнее, чем с десяткой. Если какой юзер до сих пор на XP сидит, у него проблем море, одни сплошные проблемы, ни софта нет, ни по интернету не поползать, ни магазины не работают, ни скайп. То, что какая-то игра не так работает - мелочь, на фоне того, что не работает почти ничего.
У меня есть возможность включить софт вертекспроцессинг.
Пробовал, стало хуже, на интегрированной до 1 fps упало. Помнится, буфер для этого рекомендовали создавать со специальным флагом (в системной памяти). Или можно попробовать managed-буфер.
А в обычном режиме проц не грузит, так что похоже всё-таки на видеокарте работает.
Вообще я и раньше замечал, что OGL хорошо работает на NVidia, а больше нигде хорошо не работает :)
Когда переходил с DX9 на OGL, сравнивал пример с отображением сложной "не-для-игр" модели (50 текстур, сотни субмешей). Фактически это тест на эффективность переключения текстур/материалов. И OGL был медленнее, мне пришлось сортировать субмеши по текстуре, чтобы хотя бы догнать DX9. Это было на Radeon 7750.
Сейчас проверил этот пример на NVidia - как и ожидалось, OGL в целом быстрее чем на Радеоне, но без сортировки всё-таки остаёт от DX, хотя и ненамного.
DX9 (без сортировки) - 3000
OGL без сортировки - 2700
OGL с сортировкой - 3800
В общем, если считать, что в кадре реальной игры наберётся 50 текстур и сотни дроколлов - однозначного преимущества у OGL нет.
Короче некоторые результаты с реальной моделью города.
Модель состоит из примерно 1000 мешей, общее количество треугольников около 3 миллионов. Отбраковку по фрустуму на CPU отключил.
Время рендера на AMD R9 Nano (примерно соответствует 970) составляет 10 мс. Да... Хреново.
Это 45 fps а нужно 90. Значит фокус не удался, нужно или модель упрощать или как то по другому выкручиваться...
DX9 (без сортировки) - 3000
OGL без сортировки - 2700
OGL с сортировкой - 3800
Добавил сортировку в DX-демку - в результате на NVidia DX победил, 5200 на 3900.
А на Intel внезапно проиграл, 1700 на 2300. Там, правда, на скорость влияет положение камеры, которое несколько разное (в DX-демке модель крутится мышкой), но всё равно GL явно быстрее.
Ладно, я понял, что нет смысла искать закономерности в сумрачных разумах драйверописателей :)
https://drive.google.com/file/d/1s_RgtVkbskFRxU_naUNIpqnl29PcuA7A… w?usp=sharing
По умолчанию сортировка везде включена, но можно отключить (S). W - wireframe.
san
А сколько получается если сделать culling на CPU?
san
С какими шейдерами 10мс (вертексный/пиксельный)?
phridrich
Ну пиксельный там очень простой, переключений текстур нет (пока все серенькое), так что можно сказать что он даёт только постоянную задержку в пару миллисекунд.
Ranma
Когда включаешь отбраковку фрустумом, т.е. вместо всей геометрии рендерится только ее часть, то карта начинает справляться. Т.е. задержка именно на вершинном шейдере. Рассчитывать на фрустум нельзя - когда камера поднимается высоко, то виден почти весь город. Тут нужно что-то хитрее, например с какого-то расстояния вместо точной модели рендерить ее упрощенный вариант.
san
> Тут нужно что-то хитрее, например с какого-то расстояния вместо точной модели рендерить ее упрощенный вариант.
Эм, то есть про Level of Detail ты до этого самого момента даже не думал? Офигеть.
Вроде про это не то что во всех букварях пишут, это первое что вообще приходит на ум и что бросается в глаза при игре в практически любые трехмерные игры.
Даже школьник Кирилл из известной копипасты про корованы об этой технике додумался. Ну как так то?
nonamezerox
>Даже школьник Кирилл из известной копипасты про корованы об этой технике додумался. Ну как так то?
Ну я же додумался :) И даже без "букваря".
Когда я "буквари" читал то там был только Фортран. Так что все постигаю только на практике.
Раньше у меня такая проблема не стояла. Потом делать кастрированные версиии 1000 моделей это работа еще та...
Тема в архиве.