diff --git a/include/bx/inline/math.inl b/include/bx/inline/math.inl index 26c4cd2..cb8cb26 100644 --- a/include/bx/inline/math.inl +++ b/include/bx/inline/math.inl @@ -942,4 +942,20 @@ namespace bx _result[3] = -vec3Dot(normal, _va); } + inline BX_CONST_FUNC float toLinear(float _a) + { + const float lo = _a / 12.92f; + const float hi = pow( (_a + 0.055f) / 1.055f, 2.4f); + const float result = lerp(hi, lo, _a <= 0.04045f); + return result; + } + + inline BX_CONST_FUNC float toGamma(float _a) + { + const float lo = _a * 12.92f; + const float hi = pow(abs(_a), 1.0f/2.4f) * 1.055f - 0.055f; + const float result = lerp(hi, lo, _a <= 0.0031308f); + return result; + } + } // namespace bx diff --git a/include/bx/math.h b/include/bx/math.h index 07e8a79..470ed8d 100644 --- a/include/bx/math.h +++ b/include/bx/math.h @@ -567,6 +567,12 @@ namespace bx /// void hsvToRgb(float _rgb[3], const float _hsv[3]); + /// + float toLinear(float _a); + + /// + float toGamma(float _a); + } // namespace bx #include "inline/math.inl"