Войти
Blend4WebФорум

Вышла новая версия Blend4Web 14.09 (комментарии)

#0
22:41, 2 окт. 2014

Вышла новая версия Blend4Web 14.09 (комментарии)

Это сообщение сгенерировано автоматически.

#1
22:41, 2 окт. 2014

Там в патче функция:

void alpha_spec_correction(vec3 spec, float spectra, float alpha, out float outalpha)
{
    if (spectra > 0.0) {
        float t = clamp(max(max(spec.r, spec.g), spec.b) * spectra, 0.0, 1.0);
        outalpha = (1.0 - t) * alpha + t;
    }
    else {
        outalpha = alpha;
    }
}

Этот бранч не будет соптимизирован компилятором. Его желательно убрать, потому что бранчи на ГПУ - вещь довольно дорогостоящая (и в данном случае не нужная).

#2
1:58, 3 окт. 2014

bazhenovc
> Этот бранч не будет соптимизирован компилятором. Его желательно убрать, потому
> что бранчи на ГПУ - вещь довольно дорогостоящая (и в данном случае не нужная).
Спасибо за замечание!
Почему вы считаете, что код не будет оптимизирован?
В данном случае под условием находится юниформ. Современное (и не очень) железо оптимизирует такие выражения, насколько мне известно.

#3
12:22, 3 окт. 2014

Spinal
В данном случае компилятор не будет оптимизировать этот бранч, потому что с точки зрения компилятора ветки выполнения слишком разные вещи делают.

Это, скорее всего, не будет настоящий динамический бранч - тут может быть выполнение обеих веток с маскировкой результата. Но тут уже можно только гадать - в драйвер Intel я вообще не верю, он даже динбранч может сделать.
Но в том, что этот бранч не будет полностью выкинут (будет либо динбранч либо маскировка результата) - я уверен на 100%.

Blend4WebФорум

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