2
爲了使長話短說,我是不是更好做這樣的:在GLSL中,分支還是從虛擬紋理中查找更好?
if (normalMappingEnabled)
{
normal = calculateBumpedNormalFromTexture();
}
else
{
normal = somethingMuchEasierToCalculate();
}
凡normalMappingEnabled是一個統一的,calculateBumpedNormalFromTexture需要一個紋理查找和所有其他數學的需要法線貼圖,並somethingMuchEasierToCalculate要求沒有質感查找,並簡單地吐出插值的每頂點法線。
或該:
normal = calculateBumpedNormalFromTexture();
凡在這種情況下,如果我不需要正常映射,正常的紋理是1x1的,包含該點的單個紋素直線上升,產生相同的結果,如果我剛剛使用了插值的每頂點法線。
這是哪種最先進的設備也比較快?有沒有其他的解決方案我沒有考慮過(除了使用2種不同的着色器)?
條件(normalMappingEnabled)只會在繪製調用之間發生變化 - 它是一個統一的變量。 –
是的 - 正如我所說的,在這種情況下,應該沒有性能損失。 –
謝謝,這是很好的知道。這也適用於switch語句和循環嗎?如何使用統一的緩衝區對象? –