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

HLSL и вызов функций

Страницы: 1 2 38 9 Следующая »
#0
11:59, 5 фев. 2016

Как влияет на скорость выполнения разделение кода пиксельного шейдера на функции ?

Лучше писать всё одной функцией или деление кода на функции не особо похищает скорость выполнения ?


#1
12:11, 5 фев. 2016

bykabak

Ещё один любитель скорости ? Ты ещё спроси про загрузку констант за 1 вызов :)

#2
12:39, 5 фев. 2016

В HLSL функции инлайнятся, так что
>деление кода на функции не особо похищает скорость выполнения

#3
14:41, 5 фев. 2016

У меня раньше были шейдеры, где всё было в 1 main'е, а потом я разбил шейдер на кучу функций (штук 15-20), чтобы можно было взять любую комбинацию функций и получить любой шейдер, не трогая main. Производительность вообще не изменилась. Правда это был OpenGL, но неважно.
Как уже написали, всё инлайнится.

#4
14:47, 5 фев. 2016

bykabak
> Как влияет на скорость выполнения разделение кода пиксельного шейдера на функции ?

Никак не влияет. В АСМе шейдеров нет такого как на CPU call, там всё заинлайнится.
Можешь проверить на GPU Shader Analyzer к примеру, что в итоге получается.

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

Executor
> Никак не влияет. В АСМе шейдеров нет такого как на CPU call, там всё
> заинлайнится.
А инструкция call?

#6
15:22, 5 фев. 2016

Тогда ещё вопрос про if  и  оператор  ? 

Есть ли разница в скорости между if и ?    ?

#7
15:26, 5 фев. 2016

bykabak
> Есть ли разница в скорости между if и ? ?

Умеешь читать доки ?

#8
15:27, 5 фев. 2016

bykabak
Ты задаешь такой вопрос не смотря на то, что ?: - по определению спецификации сокращенная форма if/else?

#9
15:32, 5 фев. 2016

-Eugene-
> А инструкция call?
А в D3D Asm есть такая инструкция?

#10
15:37, 5 фев. 2016

prowkan
> А в D3D Asm есть такая инструкция?
Начиная с SM 4.0 есть точно.

#11
15:42, 5 фев. 2016

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

#12
15:43, 5 фев. 2016

В MSDN как-то непонятно описано про if и использование [flatten]

MSDN

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

1) "Выбирает из двух полученных значений" - это чем отличается от простого if ?

2) Почему скорость [flatten] if  должна быть выше чем у [branch] if ?

#13
15:45, 5 фев. 2016

StiX
> Оно для shader subroutines, не?!
Да я вообще хз зачем оно там...

bykabak
> 1) "Выбирает из двух полученных значений" - это чем отличается от простого if ?
Не существует простого if. Есть flatten if и есть branch if.

> 2) Почему скорость [flatten] if  должна быть выше чем у [branch] if ?
Потому что ветвления это медленно. Не всегда, но лучше пока просто избегать условий.

#14
15:46, 5 фев. 2016

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

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