#pragma once // PowX uses the same amount of instructions as generic pow(), but has 2 advantages: // 1) better instruction pipelining // 2) no need to worry about NaNs half SafePow3(half val) { return val * val * val;; } half SafePow4(half val) { half val2 = val * val; return val2 * val2; } half SafePow5(half val) { half val2 = val * val; return val2 * val2 * val; } half LumByMax(half3 col) { return max(max(col.x, col.y), col.z); } half LumByDot(half3 col) { return dot(col, half3(0.3, 0.6, 0.1)); }