diff options
Diffstat (limited to 'src/libs/ray/ray_gamma.c')
-rw-r--r-- | src/libs/ray/ray_gamma.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/libs/ray/ray_gamma.c b/src/libs/ray/ray_gamma.c new file mode 100644 index 0000000..21a9afc --- /dev/null +++ b/src/libs/ray/ray_gamma.c @@ -0,0 +1,15 @@ +#include <math.h> + +#include "ray_gamma.h" + +void ray_gamma_prepare(float gamma, ray_gamma_t *res_gamma) +{ + if (res_gamma->gamma == gamma) + return; + + /* This is from graphics gems 2 "REAL PIXELS" */ + for (unsigned i = 0; i < 1024; i++) + res_gamma->table[i] = 256.0f * powf((((float)i + .5f) / 1024.0f), 1.0f/gamma); + + res_gamma->gamma = gamma; +} |