Вышла новая версия Blend4Web 14.09 (комментарии)
Это сообщение сгенерировано автоматически.
Там в патче функция:
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; } }
Этот бранч не будет соптимизирован компилятором. Его желательно убрать, потому что бранчи на ГПУ - вещь довольно дорогостоящая (и в данном случае не нужная).
bazhenovc
> Этот бранч не будет соптимизирован компилятором. Его желательно убрать, потому
> что бранчи на ГПУ - вещь довольно дорогостоящая (и в данном случае не нужная).
Спасибо за замечание!
Почему вы считаете, что код не будет оптимизирован?
В данном случае под условием находится юниформ. Современное (и не очень) железо оптимизирует такие выражения, насколько мне известно.
Spinal
В данном случае компилятор не будет оптимизировать этот бранч, потому что с точки зрения компилятора ветки выполнения слишком разные вещи делают.
Это, скорее всего, не будет настоящий динамический бранч - тут может быть выполнение обеих веток с маскировкой результата. Но тут уже можно только гадать - в драйвер Intel я вообще не верю, он даже динбранч может сделать.
Но в том, что этот бранч не будет полностью выкинут (будет либо динбранч либо маскировка результата) - я уверен на 100%.
Тема в архиве.