// Alex Kluchikov, 2003 // mailto: klkspa[at]ukr.net, aklk[at]mail.ru // Feel free to modify/use in any form sky_sphere{pigment{gradient y color_map{[0,color rgb <0.8,0.83,1>][1,color rgb <0.4,0.7,1>]}scale 2 translate -y}} sphere{0,1000 texture{ pigment{average pigment_map{ #declare gr=.8; #declare ge=3/(1+gr+gr); #declare t1=.3; #declare t2=.8; #declare tr1=.1; #declare tr2=.1; [1,bozo translate 5*y color_map{ [t1,color rgbt < 1,gr,gr,tr1>*ge] [t2,color rgbt < 0, 0, 0,tr2>*ge] }] [1,bozo translate 5*z color_map{ [t1,color rgbt < gr, 1,gr,tr1>*ge] [t2,color rgbt < 0, 0, 0,tr2>*ge] }] [1,bozo translate 5*x color_map{ [t1,color rgbt < gr,gr, 1,tr1>*ge] [t2,color rgbt < 0, 0, 0,tr2>*ge] }] }}scale 0.25 finish{ambient 1 diffuse 0}scale 3000}no_shadow no_image hollow //no_reflection double_illuminate scale 100} #declare glass=texture{pigment{color rgbt 1//<0.83,0.82,0.87>//.8 transmit 1.0 } finish{diffuse 0.0 ambient 0 specular 0.8 roughness 0.03 phong 1.0 brilliance 8 phong_size 80 metallic 0.5 reflection{.2,.4 fresnel} conserve_energy } } #declare st=texture{pigment{color rgb<0.83,0.82,0.84>*1.2} finish{diffuse 0.85 ambient 0 specular 0.9 roughness 0.03 phong 1.0 brilliance 7.3 phong_size 80 metallic .5 reflection{0.6,1.0 metallic}} } camera{ location -8*z look_at 0 angle 50 } #declare area=0; #declare areacount=2; #declare areasize=2.5; light_source{ -35*z, color rgb <1.0,0.8,0.6>*0.55 #if(area) area_light x*areasize,y*areasize,areacount,areacount jitter adaptive 1 circular orient #else parallel #end rotate x*55 rotate -y*45 } light_source{ -35*z, color rgb <0.6,0.8,1>*0.55 #if(area) area_light x*areasize,y*areasize,areacount,areacount jitter adaptive 1 circular orient #else parallel #end rotate x*25 rotate y*25 } #declare m2=texture{ pigment{color rgb <.9,.6,.3>} finish{diffuse 1 phong 1 phong_size 80} normal{bozo .5 scale .01} } #macro ph(R,R2,r,alph) union{ #local l=r*sin(alph*pi/180); #local h=(r+R)*sin(alph*pi/180); #local w=(r+R)*cos(alph*pi/180); #local h2=pow(pow(r+R2,2)-pow(w,2),1/2); #local l2=(h2*r)/(R2+r); #if(((l-l2)!=0)&(w>r)) difference{ cylinder{-y*l,y*l2,w} torus{w,r} translate y*h } sphere{y*(h+h2),R2} #end } #end #macro rack(X) union{ #local r=seed(X); #local i=0; #while(i<1) object{ph(1,.05+rand(r)*.2,.1+rand(r)*.5,80-rand(r)*50) rotate *360 } #local i=i+1/150; #end sphere{0,1} texture{st} } #end #local i=0; #local r=seed(876745); #while(i<1) union{rack(345325+i*4536+rand(r)) scale .4 translate (*2-1)*2 } #local i=i+1/10; #end