Don’t ask me. Ask Microsoft and Khronos Group. It is how shaders work.
If you’re talking why Epic changed it. So it’s to avoid spiking when negative base is used.
I think it is clear that optimization made not by Epic.
Wen you type pow(x,2)
it will be interpreted by the driver as x*x
. Shader code will be the same.
But that creates major issue. pow(x,y)
is defined as pow(x,y) = exp2 (y * log2 (x))
and it is not defined when X < 0
. So even values of Y produce “errors” when Y defined explicitly.