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

HLSL и вызов функций (2 стр)

Страницы: 1 2 3 49 Следующая »
#15
15:51, 5 фев. 2016

gammaker
> > > Начиная с SM 4.0 есть точно.
> > Оно для shader subroutines, не?!
> Subroutines - это SM 5.0.

Оно ещё с SM2.0 есть


#16
15:56, 5 фев. 2016

-Eugene-

Если  [flatten] if не создаёт ветвлений , то как он анализирует что выполнить if или else от этого if ?

- что, проще выполнить параллельно и ту ветвь и ту чем "ветвить" ?

#17
15:57, 5 фев. 2016

bykabak
> Если  [flatten] if не создаёт ветвлений , то как он анализирует что выполнить
> if или else от этого if ?
Ты сам процитировал парой постов выше ответ на этот вопрос:

> Evaluate both sides of the if statement and choose between the two resulting values

#18
15:59, 5 фев. 2016

неужели в GPU быстрее выполнить много кода из if и else сразу параллельно, чем проверить и выполнить нужную ветку ?

#19
16:00, 5 фев. 2016

bykabak
Когда как - поэтому у тебя и есть выбор.

#20
16:01, 5 фев. 2016

Спасибо. Теперь всё ясно.

#21
16:09, 5 фев. 2016

bykabak
> неужели в GPU быстрее выполнить много кода из if и else сразу параллельно, чем
> проверить и выполнить нужную ветку ?
Если кода в ветке много, то обычно дешевле избежать его исполнения с помощью ветвления. Если в каждой ветке маленькие формулы, то лучше сделать считать обе и выбирать с помощью step, mix (lerp в HLSL), min, max и других функций. Но тоже всё может сильно от видеокарты зависеть.

#22
16:13, 5 фев. 2016

Главное, что я осознал суть - как это работает. :)  - Всё в руках писателя шейдера.

Всем спасибо.

#23
16:27, 5 фев. 2016

-Eugene-
> А инструкция call?

Да, ты прав. Не сталкивался я с таким.

#24
17:10, 5 фев. 2016

innuendo
> Ещё один любитель скорости ? Ты ещё спроси про загрузку констант за 1 вызов :)
Да ладно уже :) OpenGL Убог по передачи констант, и массив uniform это уродливо выглядит (nVidia (C)) . Но передавать лучше все таки пачками, И не всегда необходимо разбивать по группам, если этого не требует задача. Но тебе тебе пофиг, ты все цепляешь и будешь за то, что за 1 вызов невыгодно, но лишь иногда, и продолжаешь тролить при каждом удобном случае. Начинай снова. :)

#25
17:20, 5 фев. 2016

Andrey
> Да ладно уже

Есть игры, где не стоят регистры в uniforms  и используют Effects... И эти игры вышли и принесли бабло ( это для любителей скорости )

#26
18:06, 5 фев. 2016

innuendo
> Оно ещё с SM2.0 есть
Это где? Subroutines появились только в GL 4.0, и аналог Dynamic Shader Linkage - в DX11.

#27
18:24, 5 фев. 2016

gammaker
> Это где?

VS 

#28
18:42, 5 фев. 2016

bykabak
> неужели в GPU быстрее выполнить много кода из if и else сразу параллельно, чем проверить и выполнить нужную ветку ?
В SIMD архитектурах по типу GPU "branch if" физически невозможен.
За исключением случая, когда весь варп идет по одной ветке.

Так что единственная возможная разница между "branch" и "flatten" состоит в дополнительной проверке, идут ли все потоки варпа по одной ветке или нет.
Я почти уверен, что такая проверка на современных GPU реализована в железе (т. е. задействует скалярную управляющую логику в параллель к SIMD ALU) и не вносит оверхеда в вычисления.

#29
18:46, 5 фев. 2016

пока тут все кидаются тапками... расскажите еще про static branching
я хз как оно в DX :) и вопрос наверное оффтопик потому что интересует OGL

но сильно ли будет плохо если

#if DEFINE
#endif
заменить на
if (DEFINE) {
}
и тоже самое с юниформами
if (some_uniform) {
}
будет ли разрулено статически?
а так?
if (some_ubo_uniform) {
}

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