// Subsurface Scattering Simulation // use the macro in your POV file // Nov. 2003 Sam Benge #declare R=seed(3021); #include"functions.inc" // MACRO // sss_object: the object you make translucent // sss_lpos: light position // sss_r: range of effect // sss_bs: blur samples 100 // sss_pd: point density 10000 // sss_size: object size #macro sss_pattern( sss_object, sss_lpos, sss_r, sss_bs, sss_pd, sss_size) #declare MIN=min_extent(surface); #declare MAX=max_extent(surface); #local V=0; #local pgm_obj= blob{threshold .1 #while(V<=sss_pd) #local vf= trace( surface, sss_lpos, 0-sss_lpos+*sss_size ); sphere{vf,1,1 } #local V=V+1; #end } #local pgm_obj_f= function{ pattern{ object{pgm_obj} } } pigment{ average pigment_map{ #local V=0; #while(V*sss_r; [1 function{pgm_obj_f(x,y,z)} translate jittery] #local V=V+1; #end } } #end /**/