X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fcolor.cc;fp=src%2Fcolor.cc;h=ae27f89fa6c0530bb0a1f13d511c85837f10d4f4;hb=05cc7dce02b656e633c880dcc55acdf370cb25c1;hp=0000000000000000000000000000000000000000;hpb=b7ea5b1ae3f0f0a5eba13b49e303b49876ee209e;p=vrfileman diff --git a/src/color.cc b/src/color.cc new file mode 100644 index 0000000..ae27f89 --- /dev/null +++ b/src/color.cc @@ -0,0 +1,19 @@ +#include "color.h" +#include "opt.h" + +Color color(float r, float g, float b) +{ + return opt.srgb ? Color(r, g, b) : linear_to_srgb(Color(r, g, b)); +} + +Color linear_to_srgb(const Color &c) +{ + const float inv_gamma = 1.0f / 2.2f; + return Color(pow(c.x, inv_gamma), pow(c.y, inv_gamma), pow(c.z, inv_gamma)); +} + +Color srgb_to_linear(const Color &c) +{ + const float gamma = 2.2f; + return Color(pow(c.x, gamma), pow(c.y, gamma), pow(c.z, gamma)); +}