//cheap world texture. //this uses the clock value to stir up the clouds, their movement repeats once each time the clock reaches an integer, so use VERY small clock values! #declare pDeepSea = rgb <.0,.02,.4>; #declare pShallowSea = rgb <.3,.5,.7>; #declare fDeepSea = finish { diffuse 1 ambient 0 reflection { .1, .4 falloff 3 exponent 1 } conserve_energy specular 1 roughness .002 } #declare fShallowSea = fDeepSea; #declare nDeepSea = normal { granite -.3 scale 1/200 } #declare nShallowSea = normal { granite -.1 scale 1/200 } #declare pLowLand = rgb <1,.9,.6>; #declare pMidLand = rgb <.2,.5,.1>; #declare pHighLand = rgb <.6,.6,.6>; #declare fLowLand = finish { diffuse 1 ambient 0 } #declare fMidLand = fLowLand; #declare fHighLand = fLowLand; #declare nLand = normal { pigment_pattern { granite scale 5 warp { turbulence .2 lambda 2.5 omega .5 } scale 1/5 #local nLandBumpScale = 200; scale nLandBumpScale } -.3*nLandBumpScale poly_wave .1 scale 1/nLandBumpScale } #declare tCheapWorldSurface = texture { pigment_pattern { granite scale 5 warp { turbulence .2 lambda 2.5 omega .5 } scale 1/5 } scale 2 texture_map { [0 pigment { pHighLand } finish { fHighLand } normal { nLand }] [.35 pigment { pMidLand } finish { fMidLand } normal { nLand }] [.4 pigment { pLowLand } finish { fLowLand } normal { nLand }] [.42 pigment { pShallowSea } finish { fShallowSea } normal { nShallowSea }] [1 pigment { pDeepSea } finish { fDeepSea } normal { nDeepSea }] } } #declare tCheapWorldAndClouds = texture { #declare vCloudMotion = *.3; //can't layer the clouds on top, so acheive the same effect with a texture_map pigment_pattern { //do this as a pattern so the turbulence doesn't distort the planet surface pattern. granite translate vCloudMotion*2 warp { turbulence .3 lambda 2.3 //high lambda produces more circular stirring octaves 10 } translate -vCloudMotion } texture_map { [.4 tCheapWorldSurface] [.6 pigment { rgb 1 } finish { diffuse 1 ambient 0 } normal { granite .4 translate vCloudMotion*2 warp { turbulence .3 lambda 2.3 octaves 10 } translate -vCloudMotion //poly_wave 3 } ] } } #declare tCheapWorldAndAtmos = texture { /*function { min(max(z+1,0),1) }*/ slope { z, -1, 0 } texture_map { [0 tCheapWorldAndClouds] [1 pigment { rgb <.5,.7,1> } finish { diffuse 1 ambient 0 }] } }