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

Стоимость OpenGL команд (комментарии) (4 стр)

Страницы: 1 2 3 4 5 6 Следующая »
#45
13:33, 22 фев 2017

CD
что происходит)
у меня на Атишке только drawIndirect поправился... с дебагом и без - нет никакой разницы
ок - надо видимо замерять кадр целиком

#46
17:00, 22 фев 2017

CPU:        Intel(R) Core(TM) i7-3770K CPU @ 3.50GHz
GPU: Intel(R) HD Graphics 4000

Parameters: CURRENT_NUM_INSTANCES 1000 NUM_FBO_CHANGES 200

---States changing time:
SIMPLE_DIPS_TEST 0.22
FBO_CHANGE_TEST 0.54
SHADERS_CHANGE_TEST 2.34
VBO_CHANGE_TEST 0.56
ARRAY_OF_TEXTURES_TEST 2.41
TEXTURES_ARRAY_TEST 0.36
UNIFORMS_SIMPLE_CHANGE_TEST 0.61
UNIFORMS_SSBO_TEST 0.23

---API call cost:
glBindFramebuffer: 2.48  1150%
glUseProgram: 2.12  984%
glBindVertexArray: 0.34  159%
glBindTexture: 0.37  169%
glDrawRangeElements: 0.22  100%
glUniform4fv: 0.04  18%

---Instancing time:
UBO_INSTANCING 0.04
TBO_INSTANCING 0.24
SSBO_INSTANCING 0.06
VBO_INSTANCING 0.09
TEXTURE_INSTANCING 0.07
UNIFORMS_INSTANCING 24.99
MULTI_DRAW_INDIRECT_INSTANCING 79.11

#47
18:20, 22 фев 2017

Andrey
> UBO_INSTANCING 0.04
> TBO_INSTANCING 0.24
> SSBO_INSTANCING 0.06
> VBO_INSTANCING 0.09

UBO быстрее VBO в два раза ?

#48
19:46, 22 фев 2017

innuendo
>> UBO_INSTANCING 0.04
>> TBO_INSTANCING 0.24
>> SSBO_INSTANCING 0.06
>> VBO_INSTANCING 0.09
>UBO быстрее VBO в два раза ?
чет не уверен, там странные цифры - слишком маленькие
это у меня с замерами что-то не так...
я заметил, что малое количество шагов дает сильную погрешность (по крайней мере у меня на GeForce'е)
когда усредняешь 10к шагов - стабильно выдает один и тот же результат
вот мои замеры

CPU:        Intel(R) Core(TM) i5-3570 CPU @ 3.40GHz
GPU: GeForce GTX 660/PCIe/SSE2

Parameters: CURRENT_NUM_INSTANCES 1000 NUM_FBO_CHANGES 200

---States changing time:
SIMPLE_DIPS_TEST 0.21
FBO_CHANGE_TEST 1.88
SHADERS_CHANGE_TEST 1.95
VBO_CHANGE_TEST 0.30
ARRAY_OF_TEXTURES_TEST 1.03
TEXTURES_ARRAY_TEST 0.30
UNIFORMS_SIMPLE_CHANGE_TEST 0.84
UNIFORMS_SSBO_TEST 0.29

---API call cost:
glBindFramebuffer: 9.17  4284%
glUseProgram: 1.74  811%
glBindVertexArray: 0.09  41%
glBindTexture: 0.14  63%
glDrawRangeElements: 0.21  100%
glUniform4fv: 0.06  29%

---Instancing time:
UBO_INSTANCING 2.17
TBO_INSTANCING 2.83
SSBO_INSTANCING 2.19
VBO_INSTANCING 2.17
TEXTURE_INSTANCING 2.25
UNIFORMS_INSTANCING 5.81
MULTI_DRAW_INDIRECT_INSTANCING 2.59

DrawIndirect* съедобным стал с выключенным дебагом
хочу заметить еще раз, что это цифры в ms на 100 повторений... т.е. один DrawIndirect* такой стоит 0.026 ms. на 1к дипов !

'дешевые' относительно АТИ
glBindVertexArray: 0.09  41%
glBindTexture: 0.14  63%

самое дорогое по всем тестам - смена рендер таргета и шейдера
инстансинг - любой: UBO, SSBO, VBO, TEXTURE... TBO дороже
если что - у нас в WarThunder физика через текстуру делается (она везде работает и большая)

#49
21:02, 22 фев 2017

_Wizard_
CPU: AMD FX(tm)-4350 Quad-Core Processor           
GPU: AMD Radeon R7 200 Series

Parameters: CURRENT_NUM_INSTANCES 1000 NUM_FBO_CHANGES 200

---States changing time:
SIMPLE_DIPS_TEST 0.24
FBO_CHANGE_TEST 2.18
SHADERS_CHANGE_TEST 3.99
VBO_CHANGE_TEST 1.35
ARRAY_OF_TEXTURES_TEST 4.86
TEXTURES_ARRAY_TEST 1.11
UNIFORMS_SIMPLE_CHANGE_TEST 1.59
UNIFORMS_SSBO_TEST 1.04

---API call cost:
glBindFramebuffer: 10.68  4424%
glUseProgram: 3.75  1552%
glBindVertexArray: 1.10  457%
glBindTexture: 0.77  319%
glDrawRangeElements: 0.24  100%
glUniform4fv: 0.13  55%

---Instancing time:
UBO_INSTANCING 0.63
TBO_INSTANCING 0.99
SSBO_INSTANCING 0.77
VBO_INSTANCING 0.81
TEXTURE_INSTANCING 0.61
UNIFORMS_INSTANCING 8.64
MULTI_DRAW_INDIRECT_INSTANCING 1.71

Замеры прыгают от запуска к запуску.

#50
21:25, 22 фев 2017

_Wizard_
> если что - у нас в WarThunder

А, у вас же есть клиент под Linux/Mac

#51
21:30, 22 фев 2017

innuendo
>А, у вас же есть клиент под Linux/Mac
есть да - все работает... даже на NVIDIA SHIELD работает !

#52
21:51, 8 мар 2017

Вы сильно не до оценили переключение шейдеров! В моей трассировке это убило около 10-20fps.
Сраная Nvidia со своей политикой... Одни и те же переключает быстро, а на разные требуется около 10ms.

#53
10:01, 9 мар 2017

Без дебага:

CPU: Intel(R) Core(TM) i5 CPU         760  @ 2.80GHz
GPU: GeForce GTX 470/PCIe/SSE2

Parameters: CURRENT_NUM_INSTANCES 1000   NUM_FBO_CHANGES 200   INSTANCING_NUM_ITERATIONS 100. Time in ms.

---States changing time:
SIMPLE_DIPS_TEST                 0.34
FBO_CHANGE_TEST                  2.56
SHADERS_CHANGE_TEST              2.56
VBO_CHANGE_TEST                  0.47
ARRAY_OF_TEXTURES_TEST           1.62
TEXTURES_ARRAY_TEST              0.44
UNIFORMS_SIMPLE_CHANGE_TEST      1.12
UNIFORMS_SSBO_TEST               0.44

---API call cost:
glBindFramebuffer:               12.45   3639% 
glUseProgram:                    2.22   647% 
glBindVertexArray:               0.13   36% 
glBindTexture:                   0.21   62% 
glDrawRangeElements:             0.34   100% 
glUniform4fv:                    0.08   22% 

---Instancing time:
cpu time (gpu time)
num instances                       50            100           200
UBO_INSTANCING                   0.62 (0.10)   0.72 (0.17)   0.94 (0.32)
TBO_INSTANCING                   1.44 (0.85)   1.56 (0.91)   1.75 (1.03)
SSBO_INSTANCING                  0.65 (0.10)   0.75 (0.17)   0.97 (0.32)
VBO_INSTANCING                   0.59 (0.11)   0.72 (0.19)   0.90 (0.33)
TEXTURE_INSTANCING               0.72 (0.10)   0.84 (0.17)   1.03 (0.32)
UNIFORMS_INSTANCING              0.62 (0.12)   0.78 (0.23)   1.12 (0.60)
MULTI_DRAW_INDIRECT_INSTANCING   0.75 (0.63)   0.94 (0.82)   1.28 (1.16)

С дебагом:

---States changing time:
SIMPLE_DIPS_TEST                 0.37
FBO_CHANGE_TEST                  2.50
SHADERS_CHANGE_TEST              2.50
VBO_CHANGE_TEST                  0.47
ARRAY_OF_TEXTURES_TEST           1.50
TEXTURES_ARRAY_TEST              0.47
UNIFORMS_SIMPLE_CHANGE_TEST      1.00
UNIFORMS_SSBO_TEST               0.53

---API call cost:
glBindFramebuffer:               12.11   3236% 
glUseProgram:                    2.12   567% 
glBindVertexArray:               0.09   25% 
glBindTexture:                   0.19   50% 
glDrawRangeElements:             0.37   100% 
glUniform4fv:                    0.06   16% 

---Instancing time:
cpu time (gpu time)
num instances                       50            100           200
UBO_INSTANCING                   0.62 (0.10)   0.72 (0.17)   0.94 (0.32)
TBO_INSTANCING                   1.40 (0.84)   1.53 (0.91)   1.75 (1.04)
SSBO_INSTANCING                  0.66 (0.10)   0.78 (0.17)   0.97 (0.32)
VBO_INSTANCING                   0.59 (0.11)   0.69 (0.18)   0.90 (0.33)
TEXTURE_INSTANCING               0.72 (0.10)   0.84 (0.17)   1.00 (0.32)
UNIFORMS_INSTANCING              0.62 (0.12)   0.78 (0.23)   1.15 (0.61)
MULTI_DRAW_INDIRECT_INSTANCING   1.00 (0.73)   1.00 (0.90)   1.34 (1.24)
#54
17:40, 9 мар 2017

Эти 3 ms сыграли злую шутку

#55
22:31, 9 мар 2017

Zloten
> GeForce GTX 470/PCIe/SSE2
VBO_INSTANCING красота, да еще на nVidia.

#56
7:40, 10 мар 2017

Andrey
> Но не были проведены замеры таких полезных вещей как
> GL_ARB_multibind/GL_ARB_sampler_objects

Ну? Загрузка за 1 вызов ещё не отпустила?
Да, это ну очень полезная вещь ... расскажи про свой опыт оптимизаций на реальных проектах

#57
19:24, 10 мар 2017

Хм... Всё равно не пойму в чем тогда соль glMultidraw[..]Indirect раз она медленнее всех..


Как быть со связкой SSBO Instancing + динамические объекты? 
Насколько "больно" обновлять весь SSBO целиком?

#58
1:59, 11 мар 2017

Laynos
>Хм... Всё равно не пойму в чем тогда соль glMultidraw[..]Indirect раз она медленнее всех.
glMultidraw* наоборот быстрее... это возможность сделать кучу glDrawElementsInstanced за 1 вызов... +можно собирать информацию о дипах на ГПУ
ты сделал 100 * INSTANCING_NUM_ITERATIONS = 10к дипов за 0.94 ms
можно за 1 раз 10к дипов сделать - еще дешевле
на секундочку, в ГТА 5 в кадре +-4,5к дипов на вообще все (на все проходы), с Думе (2016) 1300 дипов

#59
1:59, 11 мар 2017

у меня последний тест выдает

CPU: Intel(R) Core(TM) i5-4460  CPU @ 3.20GHz
GPU: AMD Radeon (TM) R9 380 Series

Parameters: CURRENT_NUM_INSTANCES 1000   NUM_FBO_CHANGES 200   INSTANCING_NUM_ITERATIONS 100. Time in ms.

---States changing time:
SIMPLE_DIPS_TEST                 0.41
FBO_CHANGE_TEST                  1.97
SHADERS_CHANGE_TEST              2.90
VBO_CHANGE_TEST                  0.95
ARRAY_OF_TEXTURES_TEST           3.27
TEXTURES_ARRAY_TEST              0.87
UNIFORMS_SIMPLE_CHANGE_TEST      1.27
UNIFORMS_SSBO_TEST               0.80

---API call cost:
glBindFramebuffer:               9.44   2314% 
glUseProgram:                    2.49   610% 
glBindVertexArray:               0.54   132% 
glBindTexture:                   0.48   116% 
glDrawRangeElements:             0.41   100% 
glUniform4fv:                    0.09   21% 

---Instancing time:
cpu time (gpu time)
num instances                       50            100           200
UBO_INSTANCING                   0.35 (0.10)   0.37 (0.13)   0.36 (0.24)
TBO_INSTANCING                   0.72 (0.11)   0.73 (0.13)   0.73 (0.25)
SSBO_INSTANCING                  0.37 (0.09)   0.40 (0.13)   0.38 (0.24)
VBO_INSTANCING                   0.36 (0.09)   0.37 (0.12)   0.37 (0.24)
TEXTURE_INSTANCING               0.38 (0.10)   0.39 (0.13)   0.39 (0.24)
UNIFORMS_INSTANCING              0.41 (0.13)   0.52 (0.27)   0.74 (0.51)
MULTI_DRAW_INDIRECT_INSTANCING   0.63 (0.53)   1.17 (1.01)   2.10 (1.93)
Страницы: 1 2 3 4 5 6 Следующая »
ПрограммированиеФорумГрафика

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