// PoVRay 3.7 Scene File "Giants.pov" // author: Sean Day // date: June 2013 // // Originally rendered at 1440x900 pixels // // if saving the radiosity data using the +RF switches I suggest turning off clouds/spray/fog //-------------------------------------------------------------------------- #version 3.7; global_settings{ assumed_gamma 1.0 } #default{ finish{ ambient 0.1 diffuse 0.9 }} // //-------------------------------------------------------------------------- // HDR Probe used in this scene can be downloaded from http://digitecture.org/products/HDR/HDR-001/HDRI-001_MTM.zip #include "colors.inc" #include "textures.inc" #include "glass.inc" #include "metals.inc" #include "golds.inc" #include "stones.inc" #include "woods.inc" #include "shapes.inc" #include "shapes2.inc" #include "functions.inc" #include "math.inc" #include "transforms.inc" #declare useRad=0; // 1=load 2=save #declare radQuality=4; // 1-10 1=low 10=high // norad tood 36 minutes with rad 2h33m #declare useFocalBlur=0; // 1-10 used 6 #declare showRocks=1; #declare showSpray=1; #declare showSea = 1; #declare useSeaTestTex=0; #declare useGeo = 1; #declare showFog = 1; #declare showMediaClouds = 1; // Sea Parameters #declare SeaOK = 2; #declare SeaSmoothOK = 0; // set viewer's position in the scene camera { location <19, 0.0, 10> // position of camera direction 1*z // which way are we looking & zoom up y // which way is +up (aspect ratio with x) right x*image_width/image_height // which way is +right (aspect ratio with y) look_at <28, -6.0, 30.0> // point center of view at this point #if(useFocalBlur) aperture 0.04 // [0...N] larger is narrower depth of field (blurrier) blur_samples useFocalBlur*10 // number of rays per pixel for sampling focal_point <28, -6.0, 30.0> confidence 0.9+(0.009*useFocalBlur) //0.8999+(useFocalBlur/1000) // [0...<1] when to move on while sampling (smaller is less accurate) variance 1/(20000*useFocalBlur) // [0...1] how precise to calculate (smaller is more accurate) #end } #if(showSpray) sphere { 0 1.5 hollow no_shadow texture { pigment { rgbt 1 } } interior { //emission 1 media { absorption 1.25 emission 1 scattering { 3 3 extinction 0.9} method 3 samples 5 intervals 1 density{ onion frequency 2 rotate <90, 0, 0> scale <1, 5, 1> color_map { [0.00 rgb 0] [1.00 rgb 1] } // end color_map warp { turbulence <0.68, 1.73, 0.46> lambda 4.15 omega 0.8 octaves 10 } scale 0.5 } // end density density{ marble frequency 1 rotate <5, 0, 0> scale <1, 5, 1> rotate <0, 5, 30> translate <-0.5, 0, 0> color_map { [0.00 rgb 0.2] [1.00 rgb 1] } // end color_map warp { turbulence <0.48, 0.73, 0.46> lambda 4.15 omega 0.8 octaves 10 } scale 0.6 } // end density density { spherical warp { turbulence 0.4 lambda 4.15 omega 0.8 octaves 10 } density_map { [1-.99*.75 rgb 0] [1-.99*.75 rgb 1] [1 rgb 1] } } } } scale <0.75, 0.85, 1.6> rotate <-10, 25, 0> translate <12.75, -9, 33.5> } sphere { 0, 1.5 hollow no_shadow texture { pigment { rgbt 1 } } interior { //emission 1 media { absorption 1 emission 1 scattering { 3 3 extinction 0.9} method 3 samples 10 intervals 1 density{ onion frequency 2 rotate <90, 0, 0> scale <1, 5, 1> color_map { [0.00 rgb 0] [1.00 rgb 1] } // end color_map warp { turbulence <0.68, 1.73, 0.46> lambda 4.15 omega 0.8 octaves 10 } scale 0.5 } // end density density{ marble frequency 1 rotate <5, 0, 0> scale <1, 5, 1> rotate <0, 5, 30> translate <-0.5, 0, 0> color_map { [0.00 rgb 0.2] [1.00 rgb 1] } // end color_map warp { turbulence <0.48, 0.73, 0.46> lambda 4.15 omega 0.8 octaves 10 } scale 0.6 } // end density density { spherical warp { turbulence 0.4 lambda 4.15 omega 0.8 octaves 10 } density_map { [1-.99*.75 rgb 0] [1-.99*.75 rgb 1] [1 rgb 1] } } } } scale <1.75, 0.8, 1.6> rotate <-10, 25, 0> translate <13.25, -9.25, 32.5> } sphere { 0, 1.5 hollow no_shadow texture { pigment { rgbt 1 } } interior { //emission 1 media { absorption 1 emission 0.9 scattering { 3 3 extinction 0.9} method 3 samples 10 intervals 1 density{ onion frequency 2 rotate <90, 0, 0> scale <1, 5, 1> color_map { [0.00 rgb 0] [1.00 rgb 1] } // end color_map warp { turbulence <0.68, 1.73, 0.46> lambda 4.15 omega 0.8 octaves 10 } scale 0.5 } // end density density{ marble frequency 1 rotate <5, 0, 0> scale <1, 5, 1> rotate <0, 5, 30> translate <-0.5, 0, 0> color_map { [0.00 rgb 0.2] [1.00 rgb 1] } // end color_map warp { turbulence <0.48, 0.73, 0.46> lambda 4.15 omega 0.8 octaves 10 } scale 0.6 } // end density density { spherical warp { turbulence 0.4 lambda 4.15 omega 0.8 octaves 10 } density_map { [1-.99*.75 rgb 0] [1-.99*.75 rgb 1] [1 rgb 1] } } } media { absorption 0.1 emission .15 scattering { 3 .1 extinction 0.95} method 3 samples 200 intervals 1 density { spherical warp { turbulence 0.5 lambda 2.15 omega 0.7 octaves 10 } density_map { [1-.99*.75 rgb 0] [1-.99*.75 rgb 1] [1 rgb 1] } } } } scale <3, 4.5, 1> translate <3.5, -8, 79> } #end global_settings { #if(useRad) ambient_light 0 radiosity { #if(useRad = 2) pretrace_start 0.08 // start pretrace at this size pretrace_end 0.001 // end pretrace at this size #end #if(useRad = 1) pretrace_start 1 // start pretrace at this size pretrace_end 1 // end pretrace at this size always_sample off // #end count 5*radQuality 15*radQuality // higher -> higher quality (1..1600) [35] nearest_count 5+(radQuality) 5+(radQuality/2) // higher -> higher quality (1..10) [5] low_error_factor .5 // reduce error_bound during last pretrace step gray_threshold 0.0 // increase for weakening colors (0..1) [0] minimum_reuse 0.015 // reuse of old radiosity samples [0.015] adc_bailout 0.01/2 error_bound 1.2-(radQuality/10) // higher -> smoother, less accurate [1.8] recursion_limit 2 // how much interreflections are calculated (1..5+) [3] brightness 1 // brightness of radiosity effects (0..1) [1] normal on // take surface normals into account [off] } #end } #if(showFog) fog{ fog_type 2 distance 400 color rgbt <.6, .5, .4, .115> fog_offset -50 fog_alt 10 turbulence <1, 10, 1> omega 0.9 lambda 3 octaves 12 } //---------------- #end sky_sphere { pigment { gradient y lambda 2.2 omega 0.65 octaves 10 turbulence 0.0055 // 0.0875 color_map { [0.0 rgb <0.2, 0.2, 0.4>*0.8] //rgb <0.5,0.6,1.0 [0.2 rgb <0.2, 0.1, 0>*0.8] //rgb <0.5,0.6,1.0 [0.3 rgb <0.3, 0.1, 0.05>*0.8] //rgb <0.5,0.6,1.0 [0.35 rgb <0.4, 0.2, 0.04>*0.8] //rgb <0.5,0.6,1.0 [0.4 rgb <1, 0.97, 0.73>*0.8] //rgb <0.5,0.6,1.0 [0.45 rgb <0.97, 0.7, 0.35>*0.6] //rgb <0.5,0.6,1.0 [0.55 rgb <0.05,0.12,0.250>*0.8] //rgb <0.5,0.6,1.0 [1.0 rgb <0.1,0.2,0.30>*0.4] //rgb <0.5,0.6,1.0 } scale <40, 2, 2> translate <0, -1, 0> rotate <-14, 10, 0> } } sphere { 0 1 hollow pigment{ image_map{ hdr "HDRI-001_MTM.hdr" // was harbour map_type 1 interpolate 2} }// end pigment finish { ambient 1 diffuse 1 emission 5 } scale 40000 no_image rotate <0, 69, 0> rotate <2, 0, 0> } // end #declare textureRand = seed(61282); // Macro to return a random number #macro tr(num) rand(textureRand)*num #end #declare waterRand = seed(8282); // Macro to return a random number #macro wr(num) rand(waterRand)*num #end #declare generalRand = seed(71282); // Macro to return a random number #macro gr(num) rand(generalRand)*num #end #if(showSea) #declare seafunc=function{pigment { average pigment_map { [0.05 granite colour_map { [ 0.0 rgb 0] [ 1.0 rgb 1 ] } turbulence 0.75 scale 0.03 ] [ 0.5 crackle colour_map { [ 0.0 rgb 0] [ 1.0 rgb 1 ] } turbulence 0.375 scale <0.25, 0.125, 0.125> ] [ 1 wrinkles colour_map { [ 0.0 rgb 0] [ 1.0 rgb 1 ] } turbulence 0.275 scale <0.125, 0.1, 0.1> ] } } } #if (SeaOK=1) #declare Resolution=1000; #else #if (SeaOK=2) #declare Resolution=2000; #else #declare Resolution=300; #end #end #if(useGeo) #declare SeaBase=height_field{ function Resolution,Resolution { seafunc(x, y, z).gray*1+f_ridged_mf(x*8, y*0,z*4, 1.2,3,8,1.18,5,1)*0.15 } #if (SeaSmoothOK=1) smooth #end rotate y*90 } #else #declare SeaBase=box{ 0, 1 scale <1, 0.75, 1> } #end // seamless tiling // note : there are some artifacts at the jointures - I don't know how ot remove them (merge doesn't work) #declare NX=80; #declare NZ=80; #declare SeaSurface=union{ #declare i=0; #while (i translate x #end #if (mod(i,2)=0) scale <1,1,-1> translate z #end #if (j=19 & i=0) #end translate x*j+z*i } #declare j=j+1; #end #declare i=i+1; #end translate -x*NX/2 scale <1/NX,1,1/NZ> } #declare seaTex1 = texture { pigment { rgbt <0.95,0.96, 0.96, 0.99> //color rgbft <1, 1, 1, 0.9, 0.9> } finish { ambient 0.025 diffuse albedo 0.025 brilliance 5 reflection { 0.05, 0.4 fresnel on // falloff 2.0 } // added phong phong albedo 0.15 phong_size 80 specular albedo 0.05 //1 // was 0.5 roughness 0.005 conserve_energy } } #declare bubbleTex1 = texture { seaTex1 } texture { pigment { granite omega 0.8 lambda 4.1 octaves 10 turbulence 0.075 colour_map { [ 0.0 rgbt <1, 1, 1, 0> ] [ 0.1 rgbt <1,1.1, 0.6> ] [ 0.3 rgbt <1,1.0, 1.0, 0.9> ] [ 0.4 rgbt <1.0,1.0,1, 0> ] [ 0.5 rgbt <1,1.0, 1.0, 1> ] [ 0.8 rgbt <1.0,1, 1.0,1> ] [ 1.0 rgbt <1.0,1.0, 1.0, 0> ] } scale <1/6000, 1/1.4, 1/4000> } finish { ambient 0.025 diffuse albedo 0.7 brilliance 1.3 reflection { 0.016, 0.075 fresnel on // falloff 2.0 } // added phong phong albedo 0.15 phong_size 80 specular albedo 0.05 //1 // was 0.5 roughness 0.005 conserve_energy } normal { wrinkles 0.5 scale 0.0005 } } #declare bubbleTex2 = texture { seaTex1 } texture { pigment { granite omega 0.8 lambda 4.1 octaves 10 turbulence 0.075 colour_map { [ 0.0 rgbt <1, 1, 1, 0.2> ] [ 0.1 rgbt <1,1.1, 0.6> ] [ 0.3 rgbt <1,1.0, 1.0, 0.9> ] [ 0.4 rgbt <1.0,1.0,1, 0.2> ] [ 0.5 rgbt <1,1.0, 1.0, 1> ] [ 0.8 rgbt <1.0,1, 1.0,1> ] [ 1.0 rgbt <1.0,1.0, 1.0, 0.2> ] } scale <1/6000, 1/1.4, 1/4000> } finish { ambient 0.025 diffuse albedo 0.7 brilliance 1.4 reflection { 0.016, 0.075 fresnel on } // added phong phong albedo 0.15 phong_size 80 specular albedo 0.05 //1 // was 0.5 roughness 0.005 conserve_energy } normal { wrinkles 0.275 scale 0.0005 } } #declare bubbleTex3 = texture { seaTex1 } texture { pigment { granite omega 0.8 lambda 4.1 octaves 10 turbulence 0.075 colour_map { [ 0.0 rgbt <1, 1, 1, 0.7> ] [ 0.1 rgbt <1,1.1, 0.6> ] [ 0.3 rgbt <1,1.0, 1.0, 0.9> ] [ 0.4 rgbt <1.0,1.0,1, 0.7> ] [ 0.5 rgbt <1,1.0, 1.0, 1> ] [ 0.8 rgbt <1.0,1, 1.0,1> ] [ 1.0 rgbt <1.0,1.0, 1.0, 0.7> ] } scale <1/6000, 1/1.4, 1/4000> } finish { ambient 0.025 diffuse albedo 0.7 brilliance 1.2 reflection { 0.016, 0.075 fresnel on // falloff 2.0 } // added phong phong albedo 0.15 phong_size 80 specular albedo 0.05 //1 // was 0.5 roughness 0.005 conserve_energy } normal { wrinkles 0.25 scale 0.0005 } } #declare nearSea = texture { gradient x translate <-0.5, 0, 0> texture_map { [ 0.0 seaTex1 ] [ 0.499525 seaTex1 ] [ 0.499665 bubbleTex3 ] [ 0.4997 bubbleTex2 ] [ 0.4998 bubbleTex1 ] [ 0.503 bubbleTex1 ] [ 0.5035 bubbleTex2 ] [ 0.50375 bubbleTex3] [ 0.5045 seaTex1 ] [ 1.0 seaTex1 ] } } #declare Sea=union{ // surface object{SeaSurface hollow #if(useSeaTestTex) material { texture { seaTex1 } interior { ior 1.36 dispersion 1.01 fade_distance 200 fade_power 1001 fade_color <0.0, 0.2, 0.0, 0.5> } } #else material { texture { gradient z texture_map { [ 0.0 nearSea ] [ 0.008 nearSea ] [ 0.0125 seaTex1 ] // was .012 [ 1.0 seaTex1 ] } scale 1 } interior { ior 1.36 dispersion 1.01 fade_distance 200 fade_power 1001 fade_color <0.0, 0.2, 0.0, 0.5> media {absorption <0.02, 0.05, 0.04> } } } #end } box { <-0.5, -1, 0> <0.5, -0.9, 1> texture{ pigment{ bozo scale 20 color_map{ [0 rgb <0.4, 0.5, 0.4>] [1 rgb < 0.4, 0.4, 0.5> ] } } finish{ambient 0 diffuse albedo 1} } } scale <20000,7,20000> // was y 4 } object {Sea translate <0, -13.0, 0> } #end #if(showRocks) // add the rocks #declare hf1func=function{pigment { average pigment_map { [ 1 gradient x poly_wave 10 scale <1.05, 1, 1> translate <-0.025, 0, 0.5> ] [ 1 gradient -x poly_wave 10 scale <1.05, 1, 1> translate <-0.025, 0, 0.5> ] [ 2 gradient z poly_wave 120 scale <1, 1, 1.01> translate <0, 0, -0.01> ] [ 1 wrinkles turbulence 0.275 scale 0.5 translate <-0.7, 0, -0.4> ] } } } #declare hf1 = height_field{function 500,500 {hf1func(x,0,y).gray } smooth scale <1.00,0.5, 3> translate <0, -0.25, -1.5> rotate <90, 0, 0> translate <0.0, 0, 0.2> } #declare hf2func=function{pigment { average pigment_map { [ 3 spherical cubic_wave colour_map { [ 0 rgb 1] [ 0.95 rgb 1 ] [ 1 rgb 0 ] } scale 6 translate <0.5, 0, 0.5> ] [ .35 granite turbulence 0.275 scale 0.5 translate <-0.7, 0, -0.4> ] } } } #declare hf2= height_field{function 500,500 {hf2func(x,0,y).gray } smooth scale <1,0.5, 1> translate <-0.5, -0.25, -0.5> } #declare GridMaxX = 70; //40 #declare GridMaxZ = 70; //60 #declare sideLength=1; #declare MyGrid = array[GridMaxZ][GridMaxX] #declare zOffset2=0; #declare zPos=0; #while(zPos < GridMaxZ) #declare xOffset = mod(zPos, 2); #declare zOffset2 = zOffset2+0.5;//(0.5*(mod(zPos, 2))); #declare xPos=0; #while(xPos < GridMaxX) #declare zOffset = (0.5*mod(xPos, 2)); #declare MyGrid[zPos][xPos] = ; // sphere { 0.1 pigment {rgb <1, 0, 0> } } #declare xPos=xPos+1; #end #declare zPos=zPos+1; #end #declare randOff=0.35; // randomise the positions #declare zPos=0; #while(zPos < GridMaxZ) #declare xPos=0; #while(xPos < GridMaxX) #declare randV = MyGrid[zPos][xPos]; #declare MyGrid[zPos][xPos] = ; // sphere { 0.1 pigment {rgb <1, 0, 0> } } #declare xPos=xPos+1; #end #declare zPos=zPos+1; #end #declare sideOffset=0.000025; #macro getRotation(a, b) #local c = ; #local ab = b-a; #local ac = c-a; #local aAngle = VAngleD(ac, ab); #if(b.x < a.x) -aAngle #else aAngle #end #end #macro getMax(m1, m2, m3, m4, m5, m6) #local mX = max(m1.x, m2.x, m3.x, m4.x, m5.x, m6.x); #local mZ = max(m1.z, m2.z, m3.z, m4.z, m5.z, m6.z); #end #macro getMin(m1, m2, m3, m4, m5, m6) #local mX = min(m1.x, m2.x, m3.x, m4.x, m5.x, m6.x); #local mZ = min(m1.z, m2.z, m3.z, m4.z, m5.z, m6.z); #end union { // build the hexagons #declare zPos=0; #declare xStart = 0; #declare xEnd = 0; #declare xLChange=1; #declare xRChange=1; #while(zPos < GridMaxZ-1) #if(gr(2)> 1) #if(xLChange = 1) #if(xStart < 8+gr(6)) #declare xStart = xStart+(floor(gr(3))*2); #else #declare xLChange=-1; #end #else #if(xStart > 2+gr(6)) #declare xStart = xStart-(floor(gr(3))*2); #if(xStart < 0) #declare xStart = 0; #end #else #declare xLChange=1; #end #end #end #if(gr(2)> 1) #if(xRChange = 1) #if(xEnd < 8+gr(6)) #declare xEnd = xEnd+(floor(gr(3))*2); #else #declare xRChange=-1; #end #else #if(xEnd > 2+gr(6)) #declare xEnd = xEnd-(floor(gr(3))*2); #if(xEnd < 0) #declare xEnd = 0; #end #else #declare xRChange=1; #end #end #end #declare zOdd = mod(zPos, 2); #local yPos=0+gr(0.1); #if(zOdd = 0) #declare xPos=2+xStart; #declare upperXPos=1+xStart; #else #declare xPos=0+xStart; #declare upperXPos=1+xStart; #end #while(xPos+xEnd < (GridMaxX-3)) #declare v1 = MyGrid[zPos][xPos]+; #declare v2 = MyGrid[zPos][xPos+1]+<0, 0, gr(sideOffset)>; #declare v3 = MyGrid[zPos][xPos+2]+<-gr(sideOffset), 0, gr(sideOffset)>; #declare v4 = MyGrid[zPos+1][upperXPos+2]+<-gr(sideOffset), 0, -gr(sideOffset)>; #declare v5 = MyGrid[zPos+1][upperXPos+1]+<0, 0, -gr(sideOffset)>; #declare v6 = MyGrid[zPos+1][upperXPos]+; #declare maxV = getMax(v1, v2, v3, v4, v5, v6); #declare minV = getMin(v1, v2, v3, v4, v5, v6); #declare topSize = VDist(maxV, minV); #local texScale=gr(0.01); #local tSize=0.1+tr(0.175); // was 0.02+tr(0.175) #local tRand=tr(1); #if(tr(1) < 0.3) #local t1 = texture { pigment { granite scallop_wave omega 0.7+tr(0.1) lambda 2.3+tr(1) turbulence 0.25+tr(0.2) colour_map { [ 0.0 rgb <0.095, 0.06, 0.04>*0.25 ] [ 0.3+tr(0.2) rgb <0.065, 0.02, 0.01>*0.25 ] [ 0.8+tr(0.1) rgb <0.095, 0.06, 0.04>*0.25 ] [ 1.0 rgb <.005, 0.07, 0.01>*0.25 ] } scale 0.75 } normal { granite 0.7 scale 0.05 } finish { specular albedo 0.02 roughness 0.15 ambient 0 diffuse albedo 0.3 brilliance 4.0 } } texture { pigment { wrinkles scallop_wave omega 0.8 lambda 2.7 turbulence 0.175 colour_map { [ 0.0 rgbt <1, 1, 1, 1> ] [ 0.5 rgbt <1, 1, 1, 1> ] [ 0.5 rgbt <0.015, 0.035, 0.004, 1> ] [ 0.51 rgbt <0.015, 0.035, 0.004, 0.2> ] [ 0.52 rgbt <0.015, 0.025, 0.004, 0.05> ] [ 0.52+tSize rgbt <0.015, 0.035, 0.004, 0.05> ] [ 0.52+tSize+0.01 rgbt <0.04, 0.04, 0.004, 1> ] [ 0.52+tSize+0.01 rgbt <1, 1, 1, 1> ] [ 1.0 rgbt <1, 1, 1, 1> ] } scale 1.75+tr(0.2) } normal { granite 0.4 scale 0.015 } finish { phong albedo 0.02 phong_size 50 ambient 0 diffuse albedo 0.6 brilliance 2.0 } } texture { pigment { wrinkles scallop_wave omega 0.8 lambda 2.8 turbulence 0.395 colour_map { [ 0.0 rgbt <1, 1, 1, 1> ] [ 0.5 rgbt <1, 1, 1, 1> ] [ 0.5 rgbt <0.095, 0.074, 0.0113, 1> ] [ 0.51 rgbt <0.095, 0.074, 0.0113, 0.2> ] [ 0.52 rgbt <0.095, 0.074, 0.0113, 0.05> ] [ 0.52+tSize rgbt <0.085, 0.064, 0.0103, 0.05> ] [ 0.52+tSize+0.01 rgbt <0.095, 0.074, 0.0113, 1> ] [ 0.52+tSize+0.01 rgbt <1, 1, 1, 1> ] [ 1.0 rgbt <1, 1, 1, 1> ] } scale 1.75+tr(0.2) } finish { phong albedo 0.02 phong_size 50 ambient 0 diffuse albedo 0.5 brilliance 2.1 } normal { granite 0.4 scale 0.015 } } texture { pigment { granite turbulence 0.075+tr(0.1) lambda 3.1+tr(0.2) omega 0.655+tr(0.1) octaves 9 colour_map { [ 0.0 rgbt 1 ] [ 0.7 rgbt 1 ] [ 0.7 rgbt <1.0, 0.7, 0.1, 1>*(0.3+tr(0.1)) ] [ 0.71 rgbt <1.0, 0.7, 0.1, 0.05>*(0.3+tr(0.1)) ] [ 0.75 rgbt <1.0, 0.7, 0.1, 0.05>*(0.3+tr(0.1)) ] [ 0.76 rgbt <0.7, 0.9, 0.6, 0.01>*(0.3+tr(0.1)) ] [ 0.8 rgbt <0.8, 0.9, 0.7, 0.01>*(0.3+tr(0.1)) ] [ 0.81 rgbt <0.7, 0.9, 0.6, 1>*(0.3+tr(0.1)) ] [ 0.81 rgbt 1 ] [ 1.0 rgbt 1 ] } scale 1.9+tr(0.4) rotate translate } normal { wrinkles 0.6 scale 0.01 } finish { specular albedo 0.02 roughness 0.15 ambient 0 diffuse albedo 0.5 brilliance 1.8 } } texture { pigment { bozo colour_map { [ 0.0 rgbf <0.98, 0.99, 0.98, 0.99> ] [ 1.0 rgbf 1 ] } scale 0.5 } normal { granite 0.1 scale 0.0001 } finish { specular albedo 0.1 roughness 0.025 ambient 0 diffuse albedo 0.2 brilliance 8 reflection { 0.01 0.1 fresnel on } conserve_energy } } #local t1Wet = texture { t1 } texture { pigment { bozo omega 0.8 lambda 2.5 turbulence 0.25 colour_map { [ 0.0 rgbf <0.5, 0.95, 0.5, 0.9> ] [ 1.0 rgbf 1 ] } scale <0.05, 0.15, 0.05> } normal { granite 0.2 scale 0.001 } finish { specular albedo 0.1 roughness 0.025 ambient 0 diffuse albedo 0.1 brilliance 8 reflection { 0.1 0.4 fresnel on } conserve_energy } } #local t2 = texture { pigment { granite scallop_wave omega 0.7+tr(0.1) lambda 2.3+tr(1) turbulence 0.15+tr(0.2) colour_map { [ 0.0 rgb <0.095, 0.06, 0.04>*0.5 ] [ 0.3+tr(0.2) rgb <0.065, 0.02, 0.01>*0.5 ] [ 0.8+tr(0.1) rgb <0.095, 0.06, 0.04>*0.5 ] [ 1.0 rgb <.05, 0.07, 0.01>*0.5 ] } scale 0.75 } normal { granite 0.7 scale 0.05 } finish { specular albedo 0.02 roughness 0.15 ambient 0 diffuse albedo 0.4 brilliance 3.0 } } texture { pigment { wrinkles scallop_wave omega 0.8 lambda 2.7 turbulence 0.275 colour_map { [ 0.0 rgbt <1, 1, 1, 1> ] [ 0.5 rgbt <1, 1, 1, 1> ] [ 0.5 rgbt <0.0125, 0.075, 0.004, 1> ] [ 0.51 rgbt <0.0125, 0.065, 0.004, 0.2> ] [ 0.52 rgbt <0.0085, 0.055, 0.002, 0.05> ] [ 0.52+tSize rgbt <0.0425, 0.055, 0.004, 0.05> ] [ 0.52+tSize+0.01 rgbt <0.0325, 0.075, 0.004, 1> ] [ 0.52+tSize+0.01 rgbt <1, 1, 1, 1> ] [ 1.0 rgbt <1, 1, 1, 1> ] } scale 1.8+tr(0.2) } normal { granite 0.4 scale 0.015 } finish { phong albedo 0.02 phong_size 50 ambient 0 diffuse albedo 0.6 brilliance 2.1 } } texture { pigment { granite turbulence 0.075+tr(0.1) lambda 3.1+tr(0.2) omega 0.655+tr(0.1) octaves 9 colour_map { [ 0.0 rgbt 1 ] [ 0.7 rgbt 1 ] [ 0.7 rgbt <1.0, 0.7, 0.1, 1>*(0.3+tr(0.1)) ] [ 0.71 rgbt <1.0, 0.7, 0.1, 0.05>*(0.3+tr(0.1)) ] [ 0.75 rgbt <1.0, 0.7, 0.1, 0.05>*(0.3+tr(0.1)) ] [ 0.76 rgbt <0.7, 0.9, 0.6, 0.01>*(0.3+tr(0.1)) ] [ 0.8 rgbt <0.5, 0.7, 0.3, 0.01>*(0.3+tr(0.1)) ] [ 0.81 rgbt <0.6, 0.9, 0.5, 1>*(0.3+tr(0.1)) ] [ 0.81 rgbt 1 ] [ 1.0 rgbt 1 ] } scale 1.9+tr(0.4) rotate translate } normal { wrinkles 0.6 scale 0.01 } finish { specular albedo 0.02 roughness 0.15 ambient 0 diffuse albedo 0.5 brilliance 1.9 } } texture { pigment { wrinkles scallop_wave omega 0.8 lambda 2.8 turbulence 0.395 colour_map { [ 0.0 rgbt <1, 1, 1, 1> ] [ 0.5 rgbt <1, 1, 1, 1> ] [ 0.5 rgbt <0.2, 0.154, 0.023, 1> ] [ 0.51 rgbt <0.2, 0.154, 0.023, 0.2> ] [ 0.52 rgbt <0.15, 0.114, 0.013, 0.05> ] [ 0.52+tSize rgbt <0.2, 0.154, 0.023, 0.05> ] [ 0.52+tSize+0.01 rgbt <0.25, 0.175, 0.03, 1> ] [ 0.52+tSize+0.01 rgbt <1, 1, 1, 1> ] [ 1.0 rgbt <1, 1, 1, 1> ] } scale 1.5+tr(0.2) } finish { phong albedo 0.01 phong_size 50 ambient 0 diffuse albedo 0.5 brilliance 2.5 } normal { granite 0.4 scale 0.015 } } texture { pigment { bozo colour_map { [ 0.0 rgbf <0.98, 0.99, 0.98, 0.99> ] [ 1.0 rgbf 1 ] } scale 0.5 } normal { granite 0.1 scale 0.0001 } finish { specular albedo 0.1 roughness 0.025 ambient 0 diffuse albedo 0.35 brilliance 5 reflection { 0.015 0.1 fresnel on } conserve_energy } } #local t2Wet = texture { t2 } texture { pigment { bozo omega 0.75 lambda 2.3 turbulence 0.4 colour_map { [ 0.0 rgbf <0.9, 0.99, 0.9, 0.98> ] [ 1.0 rgbf 1 ] } scale <0.1, 0.25, 0.1> } normal { granite 0.2 scale 0.001 } finish { specular albedo 0.1 roughness 0.025 ambient 0 diffuse albedo 0.1 brilliance 8 reflection { 0.075 0.3 fresnel on } conserve_energy } } #else #local t1 = texture { pigment { granite scallop_wave omega 0.7+tr(0.1) lambda 2.3+tr(1) turbulence 0.25+tr(0.2) colour_map { [ 0.0 rgb <0.095, 0.06, 0.04>*0.25 ] [ 0.3+tr(0.2) rgb <0.065, 0.02, 0.01>*0.25 ] [ 0.8+tr(0.1) rgb <0.095, 0.06, 0.04>*0.25 ] [ 1.0 rgb <.005, 0.07, 0.01>*0.25 ] } scale 0.75 } normal { granite 0.7 scale 0.05 } finish { specular albedo 0.02 roughness 0.15 ambient 0 diffuse albedo 0.3 brilliance 4.0 } } texture { pigment { wrinkles scallop_wave omega 0.8 lambda 2.9 octaves 10 turbulence 0.175 colour_map { [ 0.0 rgbt <1, 1, 1, 1> ] [ 0.5 rgbt <1, 1, 1, 1> ] [ 0.5 rgbt <0.035, 0.5, 0.003, 1> ] [ 0.51 rgbt <0.025, 0.045, 0.003, 0.2> ] [ 0.52 rgbt <0.045, 0.042, 0.003, 0.05> ] [ 0.52+tSize rgbt <0.025, 0.045, 0.003, 0.05> ] [ 0.52+tSize+0.01 rgbt <0.035, 0.05, 0.003, 1> ] [ 0.52+tSize+0.01 rgbt <1, 1, 1, 1> ] [ 1.0 rgbt <1, 1, 1, 1> ] } scale 1.75+tr(0.2) } normal { granite 0.4 scale 0.015 } finish { phong albedo 0.02 phong_size 50 ambient 0 diffuse albedo 0.6 brilliance 2.4 } } texture { pigment { wrinkles scallop_wave omega 0.8 lambda 2.8 turbulence 0.395 colour_map { [ 0.0 rgbt <1, 1, 1, 1> ] [ 0.5 rgbt <1, 1, 1, 1> ] [ 0.5 rgbt <0.095, 0.074, 0.0113, 1> ] [ 0.51 rgbt <0.095, 0.074, 0.0113, 0.2> ] [ 0.52 rgbt <0.075, 0.054, 0.0053, 0.05> ] [ 0.52+tSize rgbt <0.095, 0.074, 0.0113, 0.05> ] [ 0.52+tSize+0.01 rgbt <0.095, 0.084, 0.0213, 1> ] [ 0.52+tSize+0.01 rgbt <1, 1, 1, 1> ] [ 1.0 rgbt <1, 1, 1, 1> ] } scale 1.75+tr(0.2) } finish { phong albedo 0.02 phong_size 50 ambient 0 diffuse albedo 0.5 brilliance 2.1 } normal { granite 0.4 scale 0.015 } } texture { pigment { bozo colour_map { [ 0.0 rgbf <0.98, 0.99, 0.98, 0.99> ] [ 1.0 rgbf 1 ] } scale 0.5 } normal { granite 0.1 scale 0.0001 } finish { specular albedo 0.1 roughness 0.025 ambient 0 diffuse albedo 0.2 brilliance 8 reflection { 0.01 0.1 fresnel on } conserve_energy } } #local t1Wet = texture { t1 } texture { pigment { bozo omega 0.8 lambda 2.5 turbulence 0.25 colour_map { [ 0.0 rgbf <0.5, 0.95, 0.5, 0.9> ] [ 1.0 rgbf 1 ] } scale <0.05, 0.15, 0.05> } normal { granite 0.2 scale 0.001 } finish { specular albedo 0.1 roughness 0.025 ambient 0 diffuse albedo 0.1 brilliance 8 reflection { 0.1 0.4 fresnel on } conserve_energy } } #local t2 = texture { pigment { granite scallop_wave omega 0.7+tr(0.1) lambda 2.3+tr(1) turbulence 0.15+tr(0.2) colour_map { [ 0.0 rgb <0.095, 0.06, 0.04>*0.5 ] [ 0.3+tr(0.2) rgb <0.065, 0.02, 0.01>*0.5 ] [ 0.8+tr(0.1) rgb <0.095, 0.06, 0.04>*0.5 ] [ 1.0 rgb <.05, 0.07, 0.01>*0.5 ] } scale 0.75 } normal { granite 0.7 scale 0.05 } finish { specular albedo 0.02 roughness 0.15 ambient 0 diffuse albedo 0.4 brilliance 3.0 } } texture { pigment { wrinkles scallop_wave omega 0.8 lambda 2.9 octaves 10 turbulence 0.275 colour_map { [ 0.0 rgbt <1, 1, 1, 1> ] [ 0.5 rgbt <1, 1, 1, 1> ] [ 0.5 rgbt <0.035, 0.04, 0.00363, 1> ] [ 0.51 rgbt <0.025, 0.04, 0.00363, 0.2> ] [ 0.52 rgbt <0.045, 0.042, 0.00363, 0.05> ] [ 0.52+tSize rgbt <0.025, 0.04, 0.00363, 0.05> ] [ 0.52+tSize+0.01 rgbt <0.035, 0.05, 0.00363, 1> ] [ 0.52+tSize+0.01 rgbt <1, 1, 1, 1> ] [ 1.0 rgbt <1, 1, 1, 1> ] } scale 1.8+tr(0.2) } normal { granite 0.4 scale 0.015 } finish { phong albedo 0.02 phong_size 50 ambient 0 diffuse albedo 0.6 brilliance 2.1 } } texture { pigment { wrinkles scallop_wave omega 0.8 lambda 2.8 turbulence 0.395 colour_map { [ 0.0 rgbt <1, 1, 1, 1> ] [ 0.5 rgbt <1, 1, 1, 1> ] [ 0.5 rgbt <0.2, 0.154, 0.023, 1> ] [ 0.51 rgbt <0.2, 0.154, 0.023, 0.2> ] [ 0.52 rgbt <0.15, 0.125, 0.0153, 0.05> ] [ 0.52+tSize rgbt <0.2, 0.154, 0.023, 0.05> ] [ 0.52+tSize+0.01 rgbt <0.225, 0.174, 0.028, 1> ] [ 0.52+tSize+0.01 rgbt <1, 1, 1, 1> ] [ 1.0 rgbt <1, 1, 1, 1> ] } scale 1.5+tr(0.2) } finish { phong albedo 0.01 phong_size 50 ambient 0 diffuse albedo 0.5 brilliance 2.5 } normal { granite 0.4 scale 0.015 } } texture { pigment { bozo colour_map { [ 0.0 rgbf <0.98, 0.99, 0.98, 0.99> ] [ 1.0 rgbf 1 ] } scale 0.5 } normal { granite 0.1 scale 0.0001 } finish { specular albedo 0.1 roughness 0.025 ambient 0 diffuse albedo 0.3 brilliance 6 reflection { 0.01 0.1 fresnel on } conserve_energy } } #local t2Wet = texture { t2 } texture { pigment { bozo omega 0.75 lambda 2.3 turbulence 0.4 colour_map { [ 0.0 rgbf <0.9, 0.99, 0.9, 0.98> ] [ 1.0 rgbf 1 ] } scale <0.1, 0.25, 0.1> } normal { granite 0.2 scale 0.001 } finish { specular albedo 0.1 roughness 0.025 ambient 0 diffuse albedo 0.1 brilliance 8 reflection { 0.075 0.3 fresnel on } conserve_energy } } #end #declare rTexDry = texture { bozo omega 0.7 lambda 2.4 scale 0.2+tr(0.2) texture_map { [ 0.0 t1 scale 3 ] [ 0.4 t1 scale 3 ] [ 1.0 t2 scale 3 ] } } #declare rTexWet = texture { bozo omega 0.7 lambda 2.4 scale 0.2+tr(0.2) texture_map { [ 0.0 t1Wet scale 3 ] [ 0.4 t1Wet scale 3 ] [ 1.0 t2Wet scale 3 ] } } union { intersection { #declare blockObj = gr(5); #declare waterOffset = 0; #switch(blockObj) #range(0, 1) object { hf2 scale rotate <0, gr(360), 0> translate <0, 0.19+gr(0.025), 0> translate (maxV+minV)/2 } #local waterOffset = 0.265; #break #range(1, 2) object { hf2 scale rotate <0, gr(360), 0> translate <0, 0.12+gr(0.025), 0> translate (maxV+minV)/2 } #local waterOffset = 0.17; #break #range(2, 3) object { hf2 scale rotate <0, gr(360), 0> translate <0, 0.05+gr(0.025), 0> translate (maxV+minV)/2 } #local waterOffset = 0.12; #break #range(3, 4) object { hf2 inverse scale rotate <0, gr(360), 0> translate <0, -0.1375+gr(0.025), 0> translate (maxV+minV)/2 } #break #else object { hf2 inverse scale rotate <0, gr(360), 0> translate <0, -0.235+gr(0.025), 0> translate (maxV+minV)/2 } #end difference { cylinder { <0, -5.8, 0> <0, -0.001, 0> 1.2 scale *0.51 translate (maxV+minV)/2 } union { box { <-1, -5, -10.01> <2, 1.6, 0> rotate <0, 90-getRotation(v1, v2), 0> translate v1 translate <0, -1.5, 0> } box { <-1, -5, -10.01> <2, 1.6, 0> rotate <0, -90+getRotation(v2, v3), 0> translate v2 translate <0, -1.5, 0> } box { <-1, -5, -10.01> <2, 1.6, 0> rotate <0, -90+getRotation(v3, v4), 0> translate v3 translate <0, -1.5, 0> } box { <-1, -5, -10.01> <2, 1.6, 0> rotate <0, -90+getRotation(v4, v5), 0> translate v4 translate <0, -1.5, 0> } box { <-1, -5, -10.01> <2, 1.6, 0> rotate <0, 90-getRotation(v5, v6), 0> translate v5 translate <0, -1.5, 0> } box { <-1, -5, -10.01> <2, 1.6, 0> rotate <0, 90-getRotation(v6, v1), 0> translate v6 translate <0, -1.5, 0> } object { hf1 scale rotate <0, 90-getRotation(v1, v2), 0> translate v1 translate <0, -1.5, 0> } object { hf1 scale rotate <0, -90+getRotation(v2, v3), 0> translate v2 translate <0, -1.5, 0> } object { hf1 scale rotate <0, -90+getRotation(v3, v4), 0> translate v3 translate <0, -1.5, 0> } object { hf1 scale rotate <0, -90+getRotation(v4, v5), 0> translate v4 translate <0, -1.5, 0> } object { hf1 scale rotate <0, 90-getRotation(v5, v6), 0> translate v5 translate <0, -1.5, 0> } object { hf1 scale rotate <0, 90-getRotation(v6, v1), 0> translate v6 translate <0, -1.5, 0> } } } // } } #if(blockObj < 3) difference { cylinder { <0, -5.8, 0> <0, -(waterOffset+wr(0.08)), 0> 1 scale *0.375 translate (maxV+minV)/2 } union { box { <-1, -5, -10.01> <2, 1.6, 0> rotate <0, 90-getRotation(v1, v2), 0> translate v1 translate <0, -1.5, 0> } box { <-1, -5, -10.01> <2, 1.6, 0> rotate <0, -90+getRotation(v2, v3), 0> translate v2 translate <0, -1.5, 0> } box { <-1, -5, -10.01> <2, 1.6, 0> rotate <0, -90+getRotation(v3, v4), 0> translate v3 translate <0, -1.5, 0> } box { <-1, -5, -10.01> <2, 1.6, 0> rotate <0, -90+getRotation(v4, v5), 0> translate v4 translate <0, -1.5, 0> } box { <-1, -5, -10.01> <2, 1.6, 0> rotate <0, 90-getRotation(v5, v6), 0> translate v5 translate <0, -1.5, 0> } box { <-1, -5, -10.01> <2, 1.6, 0> rotate <0, 90-getRotation(v6, v1), 0> translate v6 translate <0, -1.5, 0> } object { hf1 scale rotate <0, 90-getRotation(v1, v2), 0> translate v1 translate <0, -1.5, 0> } object { hf1 scale rotate <0, -90+getRotation(v2, v3), 0> translate v2 translate <0, -1.5, 0> } object { hf1 scale rotate <0, -90+getRotation(v3, v4), 0> translate v3 translate <0, -1.5, 0> } object { hf1 scale rotate <0, -90+getRotation(v4, v5), 0> translate v4 translate <0, -1.5, 0> } object { hf1 scale rotate <0, 90-getRotation(v5, v6), 0> translate v5 translate <0, -1.5, 0> } object { hf1 scale rotate <0, 90-getRotation(v6, v1), 0> translate v6 translate <0, -1.5, 0> } } material { texture { pigment { rgbf <0.98, 0.99, 0.98, 0.99> } normal { dents 0.1 scale 0.05 turbulence 0.7 rotate <90, 0, 0> } finish { specular albedo 0.15 roughness 0.005 diffuse albedo 0.05 brilliance 4 ambient 0 reflection { 0.015 0.275 fresnel on } conserve_energy } } interior { ior 1.37 // index of refraction caustics 1.0 // faked caustics (0..1) fade_power 1001 // values larger than 1000 give realistic exponential attenuation fade_distance 1 // distance where light reaches half intensity fade_color <0, .3, 0> // color for fading } } } #end material { texture { gradient y omega 0.75 lambda 2.4 turbulence <0.05, 0.1, 0.05> texture_map { [ 0.0 t1Wet scale 0.25 ] [ 0.5 t2Wet scale 0.25 ] [ 0.7 t1 scale 0.25 ] [ 1.0 t2 scale 0.25 ] } scale <4, 4, 4> translate <0, -(3.25+tr(0.05)), 0> } interior { ior 1.45 } } #if(xPos < (GridMaxX/2)-5) #local yPos=yPos+0.1+gr(0.1); #else #local yPos=yPos-0.1+gr(0.1); #end translate <0, yPos+gr(0.75), 0> } #declare xPos=xPos+2; #declare upperXPos=upperXPos+2; #end #declare zPos=zPos+1; #end rotate <0.5, 0, 0> translate <0, -7.5, 10> } #end #if(showSpray) sphere { 0, 2 hollow no_shadow texture { pigment { rgbt 1 } } interior { //emission 1 media { absorption 1.1 emission .3 scattering { 3 .9 extinction 0.8} method 3 samples 20 intervals 1 density{ agate rotate <90, 0, 0> scale <.5, 2.5, .5> color_map { [0.00 rgb 0] [1.00 rgb 1] } // end color_map warp { turbulence <0.30, 0.373, 0.246> lambda 4.15 omega 0.8 octaves 10 } scale 0.5 } // end density density{ marble frequency 2 rotate <90, 0, 0> scale <1, 5, 1> color_map { [0.00 rgb 0] [1.00 rgb 1] } // end color_map warp { turbulence <0.30, 0.373, 0.246> lambda 4.15 omega 0.8 octaves 10 } scale 0.5 } // end density density{ marble frequency 2 rotate <5, 0, 0> scale <1, 5, 1> rotate <0, 5, 30> translate <-0.5, 0, 0> color_map { [0.00 rgb 0.2] [1.00 rgb 1] } // end color_map warp { turbulence <0.348, 0.373, 0.346> lambda 4.15 omega 0.8 octaves 10 } scale 0.6 } // end density density { spherical warp { turbulence 0.4 lambda 4.15 omega 0.8 octaves 10 } density_map { [1-.99*.75 rgb 0] [1-.99*.75 rgb 1] [1 rgb 1] } } } media { absorption 0.01 emission .025 scattering { 3 .01 extinction 0.95} method 3 samples 200 intervals 1 density { spherical warp { turbulence 0.75 lambda 2.15 omega 0.65 octaves 10 } density_map { [1-.99*.75 rgb 0] [1-.99*.75 rgb 1] [1 rgb 1] } } scale <1.4, 1.1, 1.3> translate <-0.1, 0, 0> } } scale <15, 15, 8> translate <30, -6, 115> } #end #if(showMediaClouds) #declare sunPos = <0, 5000000, 0>; #declare sunRot = <86, 0, 0>; light_group { light_source { 0 color rgb <1.0, 0.7, 0.4>*0.1 area_light <1000, 0, 0> <0, 0, 1000> // lights spread out across this distance (x * z) 4, 4 // total number of lights in grid (4x*4z = 16 lights) adaptive 0 // 0,1,2,3... jitter // adds random softening of light circular // make the shape of the light circular orient // orient light fade_distance sunPos.y fade_power 2 looks_like { sphere // transparent sphere containing media { 0,16 pigment { rgbt 1 } hollow interior { media { emission 1/700 samples 10 density { spherical poly_wave 10 density_map { [0 rgb 0] [0.7 rgb <2, 1.75, 1.45>/3] } } scale 1.2 } media { emission <1, 0.8, 0.6>/180000 scattering { 4, 1/40000 extinction 0.21 } samples 10 density { spherical poly_wave 10 density_map { [0 rgb 0] [1 rgb <1, 0.675, 0.5>*0.3] } } scale 30 } } } } scale 85000 translate sunPos rotate sunRot } #declare mediaSamples=50; // top near clouds #declare mSize=10; box { <-mSize, -1.6, -1.8>, hollow no_shadow texture { pigment { rgbt 1 } } interior { //emission 1 <.0075, 0.0035, 0.0008> #declare mScale = 4; #declare mPos=-mSize+mScale; #while(mPos < mSize) media { scattering { 3 1/68000 extinction 2} method 3 samples mediaSamples intervals 1 density { spherical warp { turbulence <0.2+tr(0.2), 0.25+tr(0.2), 0.195+tr(0.2)> lambda 2.75+tr(1) omega 0.375+tr(0.1) octaves 10 } density_map { [0 rgb 0] [.31 rgb 1] } } scale <3+tr(0.5), 1+tr(0.3), 1+tr(0.3)> translate } #declare mPos=mPos+mScale; #end } rotate <0, 40, -5> scale <6000, 8000, 10000> translate <12280, 19500, 70000> } // top distant clouds #declare mSize=10; box { <-mSize, -1.6, -1.8>, hollow no_shadow texture { pigment { rgbt 1 } } interior { //emission 1 <.0075, 0.0035, 0.0008> #declare mScale = 2; #declare mPos=-mSize+mScale; #while(mPos < mSize) media { scattering { 3 1/68000 extinction 2} method 3 samples mediaSamples intervals 1 density { spherical warp { turbulence <0.2+tr(0.2), 0.25+tr(0.2), 0.195+tr(0.2)> lambda 2.75+tr(1) omega 0.375+tr(0.1) octaves 10 } density_map { [0 rgb 0] [.31 rgb 1] } } scale <2+tr(0.5), 1+tr(0.3), 1+tr(0.3)> translate } #declare mPos=mPos+mScale; #end } rotate <0, 40, -5> scale <30000, 8000, 10000> translate <12280, 16500, 95000> } } box { <-10000, -100, -100> <16000, 200, 100> hollow no_shadow texture { pigment { rgbt 1 } } interior { //emission 1 media { absorption 0.002 emission .00225 scattering { 3 0.175 extinction 0.0172} method 3 samples 200 intervals 1 density { spherical warp { turbulence <0.145, 0.735, 0.135> lambda 4.15 omega 0.765 octaves 10 } density_map { [1-.99*.75 rgb 0] [1-.99*.75 rgb 1] [1 rgb 1] } } scale <1200, 100, 100> translate <1200, 0, 0> } media { absorption 0.002 emission .0025 scattering { 3 0.25 extinction 0.0172} method 3 samples 200 intervals 1 density { spherical warp { turbulence <0.125, 0.835, 0.125> lambda 4.35 omega 0.745 octaves 10 } density_map { [1-.99*.75 rgb 0] [1-.99*.75 rgb 1] [1 rgb 1] } } scale <1200, 150, 100> translate <-300, 0, 0> } media { absorption 0.002 emission .0025 scattering { 3 0.25 extinction 0.0172} method 3 samples 200 intervals 1 density { spherical warp { turbulence <0.165, 0.635, 0.165> lambda 4.15 omega 0.755 octaves 10 } density_map { [1-.99*.75 rgb 0] [1-.99*.75 rgb 1] [1 rgb 1] } } scale <1200, 100, 100> translate <2600, 0, 0> } media { absorption 0.002 emission .0025 scattering { 3 0.25 extinction 0.0172} method 3 samples 200 intervals 1 density { spherical warp { turbulence <0.195, 0.835, 0.195> lambda 4.25 omega 0.775 octaves 10 } density_map { [1-.99*.75 rgb 0] [1-.99*.75 rgb 1] [1 rgb 1] } } scale <3000, 100, 100> translate <-3200, 0, 0> } media { absorption 0.002 emission .0025 scattering { 3 0.25 extinction 0.0172} method 3 samples 200 intervals 1 density { spherical warp { turbulence <0.175, 0.835, 0.165> lambda 4.05 omega 0.735 octaves 10 } density_map { [1-.99*.75 rgb 0] [1-.99*.75 rgb 1] [1 rgb 1] } } scale <3500, 100, 100> translate <5550, 0, 0> } } scale <2, 3, 3> translate <3500, 50, 10000> } #end