Seit geraumer Zeit habe ich vermieden worden durch, stattProfil Grafiken Shadern
in meinem Shader-Code Verzweigungfloat invert_value(in float value)
{
if(value == 0.0)
return 0.0;
else
return 1.0/value;
}
wie diese
float invert_value_ifless(in float value)
{
float sign_value = sign(value);
float sign_value_squared = sign_value*sign_value;
return sign_value_squared/(value + sign_value_squared - 1.0);
}
Dies gibt genau ‚klug‘ Code zu schreiben, was Die erste Funktion hat keine Verzweigungen und ist daher schneller.
Oder ist es? Kämpfe ich hier mit Geistern?
Wie Grafik Shader für Geschwindigkeit zu profilieren? Ich interessiere mich am meisten für die neuesten mobilen Plattformen (Android), aber jeder Hinweis auf Grafik-Profiling im Allgemeinen wäre willkommen!
"* Kämpfe ich hier mit Geistern? *" [Ja, bist du.] (Http://stackoverflow.com/q/37827216/734069) –
Ausgezeichnete Antwort dort Nicol. – Leszek
Fliegt das auch mit Geistern? Anstatt if (a> 0) b = (1-a)/(2-a) else b = (1 + a)/(2 + a) Schreib Signa = sign (a); b = (1-ZeichenA * a)/(2-ZeichenA * a); ? – Leszek