Войти
ПрограммированиеФорумГрафика

Архитектура рендеринга сцены - что уменьшает FPS? (4 стр)

Страницы: 1 2 3 4 5 Следующая »
#45
18:53, 8 окт. 2010

Подскажите, пожалуйста, можно ли повысить производительность таким способом?


#46
19:17, 8 окт. 2010

gammaker
> //Следующий фрагмент кода будет выполняться в 100 раз дольше предыдущего?
Я не уверен, ибо компилятор должен оптимизировать сию ересь.

#47
19:17, 8 окт. 2010

gammaker, отвечая на твой вопрос - не буду говорить за GL, но в DX9 не отрабатывает повторная установка стейтов, если они уже стоят.

#48
19:43, 8 окт. 2010

> Следует ли писать так: if(!lighting) {glEnable(GL_LIGHTING); lighting=true;}
Ты же сам писал программу. Разве ты сам не знаешь, когда у тебя включен lighting а когда нет? Такой ситуации в игровом движке быть не может.

#49
7:17, 9 окт. 2010

-Eugene-
> Я не уверен, ибо компилятор должен оптимизировать сию ересь.
Компилятор не знает, что внутри функции glColor3f, и изменится ли что-нибудь от того, что ты вызовешь её один раз или сто. Поэтому он это оптимизировать не будет.

#50
20:35, 9 окт. 2010

> if(!lighting) {glEnable(GL_LIGHTING); lighting=true;}
это, вроде, на уровне дров учитывается

#51
22:39, 9 окт. 2010

Try
>> if(!lighting) {glEnable(GL_LIGHTING); lighting=true;}
> это, вроде, на уровне дров учитывается
Это же вендорозависимо. На это не стоит полагаться.

#52
22:56, 9 окт. 2010

Andrey
> > > f(!lighting) {glEnable(GL_LIGHTING); lighting=true;}
> > это, вроде, на уровне дров учитывается
> Это же вендорозависимо. На это не стоит полагаться.
кэш стейтов неплох - но не думаю что именно это просаживает

#53
22:59, 9 окт. 2010

А стоит ли вообще оптимизировать таким образом включение освещение в текущем контексте? Зачем оптимизировать тут? Пример некорректный.

#54
10:19, 16 окт. 2010

>Ты же сам писал программу. Разве ты сам не знаешь, когда у тебя включен lighting а когда нет?
Не знаю. Ну может не lighting, я имел ввиду вообще состояния все. У меня много материалов, каждый из них устанавливает свои состояния. А если попадётся материал, который устанавливает некоторые состояния так же, как и предыдущий? Для этого я и думал сделать проверки. Значит проверки в DX не нужны, а в GL неизвестно?

#55
12:34, 16 окт. 2010

Сделай сортировку по материалам :) установи стейты, рисуй, потом другой материал, снова рисуй

#56
17:28, 16 окт. 2010

Недавно делал эксперименты. Вывод такой- все зависит от компа. У меня например, больше фпс при большом количестве дипов и малом размере батча, от смены буферов ничего не меняется в скорости. Короче, есть размер батча, после которого начинает сильно падать производительность.
Вывод - сделать функцию теста компа.

#57
17:56, 16 окт. 2010

А если ещё при этом нужно сортировать по расстоянию, например, для смешивания? Как тогда быть?

#58
0:43, 22 окт. 2010

Проводил тесты

  g_pD3DDevice->SetTexture(0,p_Texture1); 
  MyMesh1.SetVB();
  MyMesh1.SetIB();
  for(int i=0; i<5; i++)
  {//g_pD3DDevice->SetTexture(0,p_Texture1);
      
  
    g_pD3DDevice->SetTexture(0,p_Texture2);
    g_pD3DDevice->SetTexture(0,p_Texture1);
    MyMesh1.DIP();
      //MyMesh1.m_pMesh->DrawSubset(0);
  }

pTexture1 текстура 1024х1024. Пробовал менять размер текстуры. Заметил, что 256х256, что 1024х1024 текстура fps тот же. А вот сильно падает с увеличением DIP, а после некоторого размера батча падение fps уже зависит и от него. Кто тестировал разные текстуры на предмет зависимости fps от размера текстур? Какие у вас показатели?
Раньше я делал тест и у меня была сильная зависимость от размера текстур(похоже я ошибся и у меня съедали fps DIPы).

#59
14:26, 22 окт. 2010

Зачем ты устанавливаешь обе текстуры на один и тот же семплер?
Я на личном опыте убедился, что адекватное тестирование можно проводить только в условиях, максимально приближенных к релизным - конкретно на тех объектах и сценах, которые будут задействованы в программе. Если объектов еще пока не имеется, можно воспользоваться каким-нибудь похожим контентом.
Как говорится в различных пейперах, добится максимальной скорости можно только при минимизации всего - дипов, переключений шейдеров, текстур и стейтов. И таки да, надо сортировать. Например, можно задать каждому объекту сцены 64-битный индекс, куда упаковать все характеристики объекта (шейдера, текстуры, стейты, расстояние до камеры), а потом сортировать список объектов по этим индексам.

Страницы: 1 2 3 4 5 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.