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

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

Страницы: 1 2 3 4 5 6
#75
(Правка: 13:29) 13:22, 11 фев. 2020

0xc0de
> (VNCVNCVNCVNC)
если тебе не нужно постоянно обновлять какой-то отдельный атрибут.

#76
13:25, 11 фев. 2020

Aroch
> (VNCVNCVNCVNC)
> если тебе нужно постоянно обновлять какой-то отдельный атрибут.

Предположим, что данные не обновляются.

#77
13:30, 11 фев. 2020

0xc0de
> Предположим, что данные не обновляются.
там опечатка была. Так что в твоем случае VNC вариант оптимальный.

#78
14:35, 11 фев. 2020

(VVVVNNNNCCCC) - такой вариант вроде бы лучше для кэша. Шейдер выполняется параллельно, поэтому сначала прочитается 32 (размер варпа) вершины, умножится на матрицу, потом прочитаются 32 текстурные координаты и тд.

Но как там написано все зависит от железа и драйвера.
У самсунга есть оптимизация, где они сначала рассчитывают позицию, делают кулинг, а потом уже остальную часть вершинного шейдера выполняют, поэтому рекомендуют позицию хранить отдельно от остальных атрибутов (VVVV) (NNNNCCCC)

#79
(Правка: 14:43) 14:42, 11 фев. 2020
CPU: Intel(R) Core(TM) i7-6950X CPU @ 3.00GHz
GPU: GeForce GTX 980 Ti/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.55
FBO_CHANGE_TEST                  1.54
SHADERS_CHANGE_TEST              2.15
VBO_CHANGE_TEST                  0.63
ARRAY_OF_TEXTURES_TEST           1.57
TEXTURES_ARRAY_TEST              0.69
UNIFORMS_SIMPLE_CHANGE_TEST      0.95
UNIFORMS_SSBO_TEST               0.56

---API call cost:
glBindFramebuffer:               7.15   1300% 
glUseProgram:                    1.60   290% 
glBindVertexArray:               0.08   13% 
glBindTexture:                   0.17   30% 
glDrawRangeElements:             0.55   100% 
glUniform4fv:                    0.04   7% 

---Instancing time:
cpu time (gpu time)
num instances                       50            100           200
UBO_INSTANCING                   0.56 (0.06)   0.69 (0.11)   0.82 (0.20)
TBO_INSTANCING                   2.47 (2.28)   2.56 (2.34)   2.73 (2.49)
SSBO_INSTANCING                  0.58 (0.06)   0.69 (0.11)   0.84 (0.20)
VBO_INSTANCING                   0.56 (0.06)   0.66 (0.11)   0.82 (0.20)
TEXTURE_INSTANCING               0.60 (0.06)   0.71 (0.11)   0.85 (0.20)
UNIFORMS_INSTANCING              0.57 (0.06)   0.75 (0.11)   0.99 (0.44)
MULTI_DRAW_INDIRECT_INSTANCING   0.53 (0.33)   0.56 (0.44)   0.72 (0.61)
#80
(Правка: 14:59) 14:58, 11 фев. 2020

/A\
> (VVVVNNNNCCCC) - такой вариант вроде бы лучше для кэша. Шейдер выполняется
> параллельно, поэтому сначала прочитается 32 (размер варпа) вершины, умножится
> на матрицу, потом прочитаются 32 текстурные координаты и тд.
>
> Но как там написано все зависит от железа и драйвера.
> У самсунга есть оптимизация, где они сначала рассчитывают позицию, делают
> кулинг, а потом уже остальную часть вершинного шейдера выполняют, поэтому
> рекомендуют позицию хранить отдельно от остальных атрибутов (VVVV) (NNNNCCCC)

(VVVV) (NNNNCCCC)

Такое еще кажется логично для геометрии, отбрасывающей тени, поскольку для рендера в shadowmap нужны только позиции (иногда еще и текстурные координаты).

#81
(Правка: 17:47) 17:45, 12 фев. 2020

Хряп.
Изображение
Win7-64/Intel HD 3000

#82
17:47, 12 фев. 2020

widows осуществляет поиск способа устранения этой ошибки ...
ага, так мы и поверили

#83
14:46, 13 фев. 2020

Оправдано ли использование GS для рендера меша сразу в несколько теневых каскадов (слоев в texture array)? GS здесь чисто для установки gl_layer. Или все равно быстрее будет отрендерить по отдельности в каждый слой, нежели чем instancing+GS?

#84
14:49, 13 фев. 2020

0xc0de

тесты покажут

#85
16:56, 13 фев. 2020

0xc0de
> Или все равно быстрее будет отрендерить по отдельности в каждый слой, нежели
> чем instancing+GS?
Зависит от ботлнека. Без GS и с большим количеством слоёв можно легко упереться в CPU на дроуколлах.

Страницы: 1 2 3 4 5 6
ПрограммированиеФорумГрафика