summaryrefslogtreecommitdiff
path: root/src/modules/ray/ray_color.h
blob: 9fe62c11e95a369f332c54a3c2b0b6ef4e5d604c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#ifndef _RAY_COLOR_H
#define _RAY_COLOR_H

#include <stdint.h>

#include "ray_3f.h"

typedef ray_3f_t ray_color_t;

/* convert a vector into a packed, 32-bit rgb pixel value */
static inline uint32_t ray_color_to_uint32_rgb(ray_color_t color) {
	uint32_t	pixel;

	/* doing this all per-pixel, ugh. */

	if (color.x > 1.0f) color.x = 1.0f;
	if (color.y > 1.0f) color.y = 1.0f;
	if (color.z > 1.0f) color.z = 1.0f;

	pixel = (uint32_t)(color.x * 255.0f);
	pixel <<= 8;
	pixel |= (uint32_t)(color.y * 255.0f);
	pixel <<= 8;
	pixel |= (uint32_t)(color.z * 255.0f);

	return pixel;
}

#endif
© All Rights Reserved