/*
*  Copyright (C) 2004   Robert Nowotniak <rnowotniak@gmail.com>
*
*  Meger sponge
*
*/

#include "colors.inc"
#include "metals.inc"
#include "finish.inc"
#include "skies.inc"


#declare Cam2 = camera {
	location <-1.9, -0.4, -5> * 1.1
	look_at <-1, 0, -3>
	angle 130
};

#declare Cam1 = camera {
	location <-2.5, 2.5, -1.6> * 3
	look_at 0
};

#declare Cam3 = camera {
	location <0.8, -0.8, -5>
	look_at 0
};

sky_sphere { S_Cloud1 }

camera { Cam3 }

light_source {
	<5, 5, -5>
	color White
}

light_source {
	<5, 5, 5>
	color White
}

light_source {
	<-5, 5, -5>
	color White
}

light_source {
	<-5, 5, -5>
	color White
}

light_source {
	0
	rgb <.4, .4, 1>
}


// światło z przodu
light_source {
	<0, 0, -500>
	color Red
}

#macro Meger(baza, n, m)
	#if (m = 0)
		difference {
			box {
				baza + <n / 2, n / 2, n /2>,
				baza + -<n / 2, n / 2, n /2>
			}
			box {
				baza + <-n / 5, -n / 5, -n>,
				baza + <n / 5, n / 5, n>
			}
			box {
				baza + <-n, -n / 6, -n / 6>,
				baza + <n, n / 6, n / 6>
			}
			box {
				baza + <-n / 6, -n, -n / 6>,
				baza + <n / 6, n, n / 6>
			}
			pigment {
				White
			}
			finish {
				phong 1
				ambient .17
				diffuse .6
				specular 0.9
				roughness 0.0005
			}
		}
	#else
		Meger(baza + <n / 3, n / 3, n / 3>, n / 3, m - 1)

		Meger(baza + <-n / 3, n / 3, n / 3>, n / 3, m - 1)
		Meger(baza + <n / 3, -n / 3, n / 3>, n / 3, m - 1)
		Meger(baza + <n / 3, n / 3, -n / 3>, n / 3, m - 1)

		Meger(baza + <-n / 3, -n / 3, n / 3>, n / 3, m - 1)
		Meger(baza + <-n / 3, n / 3, -n / 3>, n / 3, m - 1)
		Meger(baza + <n / 3, -n / 3, -n / 3>, n / 3, m - 1)

		Meger(baza + <0, n / 3, n / 3>, n / 3, m - 1)
		Meger(baza + <0, -n / 3, n / 3>, n / 3, m - 1)
		Meger(baza + <0, -n / 3, -n / 3>, n / 3, m - 1)
		Meger(baza + <0, n / 3, -n / 3>, n / 3, m - 1)

		Meger(baza + <n / 3, 0, n / 3>, n / 3, m - 1)
		Meger(baza + <n / 3, 0, -n / 3>, n / 3, m - 1)
		Meger(baza + <-n / 3, 0, n / 3>, n / 3, m - 1)
		Meger(baza + <-n / 3, 0, -n / 3>, n / 3, m - 1)

		Meger(baza + <n / 3, n / 3, 0>, n / 3, m - 1)
		Meger(baza + <n / 3, -n / 3, 0>, n / 3, m - 1)
		Meger(baza + <-n / 3, n / 3, 0>, n / 3, m - 1)
		Meger(baza + <-n / 3, -n / 3, 0>, n / 3, m - 1)

		Meger(baza - <n / 3, n / 3, n / 3>, n / 3, m - 1)

	#end
#end



plane {
	y, -3
	texture {
		pigment { SkyBlue }
		normal { bumps 0.4 scale 0.2 }
	}
}


Meger(<0, 0, 0>, 6, 2)

