// doubleのRGB要素を.hdrフォーマット用に変換
HDRPixel get_hdr_pixel(const Color &color) {
	double d = std::max(color.x, std::max(color.y, color.z));
	if (d <= 1e-32)
		return HDRPixel();
	int e;
	double m = frexp(d, &e); // d = m * 2^e
	d = m * 256.0 / d;
	return HDRPixel(color.x * d, color.y * d, color.z * d, e + 128);
}
Esempio n. 2
0
// doubleのRGB要素を.hdrフォーマット用に変換
HDRPixel get_hdr_pixel(const Color &color)
{
	double d = max(color.x, max(color.y, color.z));
	if (d <= 1e-32){
		return HDRPixel();
	}
	int e;
	double m = frexp(d, &e); // d = m * 2^e
	d = m * 256.0 / d;
	return HDRPixel((unsigned char)(color.x*d),
					(unsigned char)(color.y*d),
					(unsigned char)(color.z*d),
					e + 128);
}