01 Jun
r e - v i s i t  > P O V

Although away from POV-Ray for 25 years I was still interested in its rendering capacities - particularly with my current hardware. I started by programming a simple material/sample viewer. The majority the POV file are #declare definitions for various textures, finishes, color ramps, etc.  Below is a concatenated version with all the inc. files and macros embedded. If you use the script below in POV, be aware that a few references to external texture maps are used and will need to be redirected to your own textures or remarked out. 

#version 3.8; 
// --- miller 11.22.2022
// --- material sample preview 
// --- define material sets, define object sample, define stage, camera, light
// --- apply material and name per rendering under the 'S E T   S A M P L E   D A T A'


// --- macros
#macro spawn_sphere(P,R)
    sphere { P, R}
#end


#macro spawn_box(AX, AY, AZ, BX, BY, BZ)
   box { <AX, AY, AZ>,<BX, BY, BZ> }
#end
      
#macro spawn_poly(W, D)   
        polygon {
          4,
          <0, 0>, <W, 0>, <W, D>, <0, D>
          }
#end  


// --- macro gizmo simple


#macro spawn_gizmo_simple(P,R)  
union{
    difference {
        sphere { P, R }
        plane { <0,0,-1>, 0 translate <0,0,R/2> }
        } 
    difference { 
        sphere { P, (R*.80)} 
        plane { <0,1,0>, 0  rotate <0,0,25> translate P }
        } 
   sphere { P, R*.6 }   
 }  
#end


// macro gizmo 
#macro spawn_gizmo(P,R)
    #declare pos = P;
    #declare rad = R; 
    #declare rad2 = rad*0.80;
    #declare rad3 = rad*0.60;
    #declare rotZ = 0;
    #declare torus_diam = 0.10;
    #declare torus_1_A = torus_diam;
    #declare torus_1_B = rad-torus_1_A;    
    #declare torus_2_A = torus_diam * 2;
    #declare torus_2_B = rad2-torus_2_A;
    union{
        difference {
            sphere { pos, rad }
            plane { <0,0,-1>, 0 translate <0,0,rad/2> }
            } 
        difference { 
            sphere { pos, rad2} 
            plane { <0,1,0>, 0  rotate <0,0,rotZ> translate P }
            } 
       sphere { pos, rad3 }
       torus { torus_1_B,torus_1_A rotate <90,0,0>  translate <0,0,rad/2>}  
       torus { torus_2_B,torus_2_A rotate <0,0,0>  translate <0,0,rad/2>} 
       cylinder { <0,0,rad/2>,<0,0,(rad/2)+torus_1_A>, rad-torus_diam   }
     }  
#end


//  --- C A M E R A   
#macro set_camera (n, p, l)  
     #declare cam_right = <-image_width/image_height,0,0> ;
    #switch (n)
        #case (1)  // --- front    
            #declare pos = <0, p, l> ;      
            #declare look = <0,0,l>;    
            #declare ang = 20;  
         #break 

        #case (2) // --- right 
            #declare pos = <p, 0, l> ;      
            #declare look = <0,0,l>;    
            #declare ang = 20;
        #break 

        #case (3) // --- left 
            #declare pos = <-p, 0, l> ;      
            #declare look = <0,0,l>;    
            #declare ang = 20;
        #break 
        
        #case (4) // --- top 
            #declare pos = <0, -1, p> ;      
            #declare look = <0,0,0>;    
            #declare ang = 20;
        #break 
         
        #case (5) // --- perspective 
            #declare pos = <p, p, -p + l> ;      
            #declare look = <0,0,l>;    
            #declare ang = 40;
        #break 
    #end 
     camera { 
        right cam_right
        location pos 
        look_at look
        sky <0,0,1> 
        angle ang
        }
#end


// --- S T A G E
background {color rgb<.8,.8,.8>}
#macro show_floor (n)
    plane { z, n material { M_tan_dark_gloss } translate<0,0,0>}    
#end  

// --- S K Y   G R A D I A N T
#macro show_sky () 
   #declare rad = 500000; 
   
   sphere { <0, 0, 0>, rad 
        hollow on
        material { M_enviroment_sunny scale rad*2 translate <0,0,rad>  }
        } 
#end  
        
// --- S K Y    N E U T R A L    
#macro show_sky_gray ()   
   #declare rad = 600000; 
   sphere { <0, 0, 0>, rad
        hollow on
        pigment { color rgb<.7,.7,.7> }
        finish { ambient 1 diffuse .5}
        } 
#end 
        




// --- L I G H T S 

#macro show_lighting_hard ()
    light_source { <8000,-8000, 20000> color rgb <.9,.9,.8> } 
    light_source { <-8000,-4000,12000> color rgb <.32,.32,.32> }      
    global_settings {ambient_light <1,1,1> } 
#end


#macro show_lighting_soft (n) 
    //radius:     0.75 degrees
    //falloff:    1    degrees
    //tightness:  1     
    
    #declare r = 20;
    #declare f = 30;
    #declare t1 = 0 ;
    #declare look = <0, 0, 0>;


    light_source {
        <-6000, -4000, 8000> 
        color rgb <1,1,1>
        spotlight
            radius r
            falloff f      
            tightness t1
            point_at look
            area_light <3500, 0, -3500>, <1000, 0, 1000>, 20, 20
            adaptive n
            jitter
      }
        
        
           light_source {
        <2000, -2000, 5000> 
        color rgb <.55,.55,.5>
        spotlight
            radius r
            falloff f      
            tightness t1
            point_at look
            area_light <3500, 0, -3500>, <1000, 0, 1000>, 20, 20
            adaptive n
            jitter
      } 
#end    


#macro show_lighting_old (n)
    light_source {
        <-3000,-4000,6000> 
        color rgb <1,1,1>
        spotlight
        point_at <0, 0, 0>
        radius 20
        falloff 30
        // area_light <1, 0, 0>, <0, 0, 1>, 2, 2
        //adaptive n
        //jitter
      }    


    light_source {
        <4000,-8000,12000> 
        color rgb <.62,.6,.6>
        spotlight
        point_at <0, 0, 0>
        radius 20
        falloff 30
        area_light <6000, 0, 6000>, <0, 0, 0>, 90, 90
        adaptive n
        jitter
    } 
    
#end 




/*
charset             : ascii
adc_bailout         : 1/255
ambient_light       : <1,1,1>
assumed_gamma       : 1.0 (undefined for legacy scenes)
hf_gray_16          : deprecated
irid_wavelength     : <0.25,0.18,0.14>
max_trace_level     : 5
max_intersections   : 64
mm_per_unit         : 10
number_of_waves     : 10
noise_generator     : 2
Radiosity:
adc_bailout         : 0.01
always_sample       : off
brightness          : 1.0
count               : 35  (supports adaptive mode)
error_bound         : 1.8
gray_threshold      : 0.0
low_error_factor    : 0.5
max_sample          : non-positive value
maximum_reuse       : 0.2
minimum_reuse       : 0.015
nearest_count       : 5   (max = 20; supports adaptive mode)
normal              : off 
pretrace_start      : 0.08
pretrace_end        : 0.04
recursion_limit     : 2
subsurface         : off
Subsurface:
radiosity          : off
samples            : 50,50 
*/


// --- G L O B A L  T R A C E  S E T T I N G S 
global_settings {    
    max_trace_level 16
    max_intersections 64  

    assumed_gamma 2.8 
    //ambient_light <1,1,1>  
    radiosity {   
        brightness .75
        pretrace_start 0.1
        pretrace_end 0.001
        count 150   
        maximum_reuse 0.2
        minimum_reuse 0.015 
        subsurface off   
        recursion_limit 2
        }
    subsurface {
        radiosity on
        samples     50,50
    }
}         


// --- M A T E R I A L   D E C L A R E S

/*
FINISH:
  finish { [FINISH_IDENTIFIER] [FINISH_ITEMS...] }
FINISH_ITEMS:
  fresnel FLOAT
  ambient COLOR | diffuse [albedo] Amount [, Amount] |
  emission COLOR | brilliance Amount | phong [albedo] Amount | phong_size Amount |
  specular [albedo] Amount | roughness Amount | 
  metallic [Amount] | reflection COLOR |
  crand Amount | conserve_energy BOOL |
  reflection { Color_Reflecting_Min [REFLECTION_ITEMS...] } |
  subsurface { translucency COLOR } |
  irid { Irid_Amount [IRID_ITEMS...] |
  use_alpha BOOL
  }
REFLECTION_ITEMS:
  COLOR_REFLECTION_MAX | fresnel BOOL |
  falloff FLOAT_FALLOFF | exponent FLOAT_EXPONENT |
  metallic FLOAT_METALLIC
IRID_ITEMS:
  thickness Amount | turbulence Amount
*/   




//--- C O L O R S


#ifndef (Transparent) #declare Transparent = rgbt 1 ;#end
#declare C_white = color rgb<1,1,1>  ;
#declare C_black = color rgb<0,0,0>  ;
#declare C_red = color rgb<1,0,0>  ;
#declare C_green = color rgb<0,1,0>  ;
#declare C_blue = color rgb<0,.5,.9>  ;
#declare C_orange = color rgb<1,1,0>  ;
#declare C_copper = color rgb <0.40, 0.20, 0.15>;  
#declare C_silver = color rgb <0.85, 0.85, 0.8>;   
#declare C_gold = color red 0.82 green 0.6 blue 0.196078;
#declare C_gold_bright= color <0.90, 0.65, 0.15>;
#declare C_light_blue = color red 0.6 green 0.8 blue 1; 
#declare C_horizon_blue = color red .82 green 1 blue .98; 
#declare C_light_green = color rgb<.75,1,.9>  ;
#declare C_gray10 = color red 0.1 green 0.1 blue 0.1;   
#declare C_gray20 = color red 0.2 green 0.2 blue 0.2;
#declare C_gray30 = color red 0.3 green 0.3 blue 0.3; 
#declare C_gray40 = color red 0.4 green 0.4 blue 0.4;
#declare C_gray50 = color red 0.5 green 0.5 blue 0.5;
#declare C_gray60 = color red 0.6 green 0.6 blue 0.6; 
#declare C_gray70 = color red 0.7 green 0.7 blue 0.7;   
#declare C_gray80 = color red 0.8 green 0.8 blue 0.8; 
#declare C_gray90 = color red 0.9 green 0.9 blue 0.9;
#declare C_tan = color red 0.85 green 0.66 blue 0.5;
#declare C_tan_dark = color red 0.66 green 0.5 blue 0.4;
#declare rgb_green_olive = rgb <0.4, 0.6, 0.2> ;
#declare rgb_green_gray = rgb <0.5, 0.6, 0.4> ; 
#declare rgb_yellow_gray = rgb <0.7, 0.8, 0.4> ;
#declare rgb_brown_gray = rgb <0.879, 0.55, 0.32> ;  


#declare f = .0039  ;                             
#declare tR = 107*f ;
#declare tG = 176*f ;
#declare tB = 189*f ;
#declare C_teal = color rgb<tR,tG,tB> ;




// --- C O L O R    M A P S  


#declare C_map_enviroment_sunny =
    color_map {
        [ 0.0     C_gray60 ]  
        [ 0.40    C_white ]
        [ 0.50    C_horizon_blue ]
        [ 0.53    C_light_blue ]
        [ 1.0     C_blue ]
        }
   
#declare C_map_teal = 
        color_map {
            [0.000 rgb C_teal]
            [0.2 rgbt <tR, tG, tB, 1>]
            [0.7 rgbt <tR, tG, tB, 1>]
            [0.85 rgb C_teal]
            [1.000 rgb C_teal]
        } 
                          
#declare C_map_agate_A =
    color_map {
        [ 0.0     rgb_green_olive ]
        [ 0.3     rgb_green_gray ]
        [ 0.5     rgb_yellow_gray ]
        [ 0.7     rgb_brown_gray ]
        [ 1.0     rgb_green_olive ]
        }
        
#declare C_map_mud_A = 
        color_map {
            [0.000 rgb <0.625, 0.659, 0.455>]
            [0.171 rgb <0.582, 0.449, 0.320>]
            [0.274 rgb <0.157, 0.151, 0.122>]
            [0.393 rgb <0.625, 0.619, 0.455>]
            [0.564 rgb <0.582, 0.519, 0.420>]
            [0.701 rgb <0.482, 0.392, 0.278>]
            [1.000 rgb <0.625, 0.659, 0.455>]
        }


#declare C_map_steel = 
        color_map {
            [0.000 rgb <0.535, 0.525, 0.535>]
            [0.171 rgb <0.549, 0.549, 0.520>]
            [0.274 rgb <0.457, 0.451, 0.462>]
            [0.393 rgb <0.625, 0.625, 0.625>]
            [0.564 rgb <0.582, 0.540, 0.520>]
            [0.701 rgb <0.552, 0.532, 0.578>]
            [1.000 rgb <0.535, 0.525, 0.535>]
        }


#declare C_map_steel = 
        color_map {
            [0.000 rgb <0.535, 0.525, 0.535>]
            [0.171 rgb <0.549, 0.549, 0.520>]
            [0.274 rgb <0.557, 0.551, 0.562>]
            [0.393 rgb <0.625, 0.625, 0.625>]
            [0.564 rgb <0.582, 0.540, 0.520>]
            [0.701 rgb <0.552, 0.532, 0.578>]
            [1.000 rgb <0.535, 0.525, 0.535>]
        }
        
#declare C_map_gold = 
        color_map {
            [0.000 rgb <0.70, 0.60, 0.45>]
            [0.171 rgb <0.65, 0.55, 0.35>]
            [0.274 rgb <0.58, 0.35, 0.25>]
            [0.393 rgb <0.65, 0.65, 0.35>]
            [0.564 rgb <0.55, 0.45, 0.25>]
            [0.701 rgb <0.65, 0.55, 0.35>]
            [1.000 rgb <0.70, 0.60, 0.45>]
        }


#declare shroom_grad_A =
        color_map {
               [0.0 color C_gold]  
               [0.5 color C_gold]  
               [.7 color C_white]  
               [.9 color C_tan_dark]
               [1.0 color C_tan_dark]




}     
     
#declare shroom_grad_B =
        color_map {
               [0.0 color C_horizon_blue]  
               [0.2 color C_gold]  
               [.7 color C_gold]  
               [.9 color C_horizon_blue]
               [1.0 color C_horizon_blue]
}          


//--- F I N I S H E S   P L A S T I C
  
#declare F_plastiC_gloss =    
    finish {
    reflection {.5, .7 fresnel on } 
    conserve_energy 
    brilliance 4
    ambient .7
    diffuse 1 
    phong 1    
    phong_size 5
    specular .2 
    roughness .5
    reflection .1 
    } 
         
#declare F_plastic_satin =    
    finish {
    reflection {.5, 1 fresnel on } 
    conserve_energy 
    brilliance 5
    ambient 0
    brilliance 2
    diffuse .5 
    phong .2    
    phong_size 100
    metallic
    specular .2 
    roughness .9
    reflection .5 
    }        


#declare F_soft =    
    finish {
    reflection {.4,.6 fresnel on } 
    conserve_energy 
    brilliance 5
    ambient 1
    brilliance 2
    diffuse .7 
    phong 1    
    phong_size 20
    //metallic
    specular .1 
    roughness .8
    reflection .1 
    } 
 
#declare F_silk =    
    finish {
    reflection {.5, 1 fresnel on } 
    conserve_energy 
    brilliance 5
    ambient 1
    brilliance 2
    diffuse 1 
    phong .2    
    phong_size 20
    //metallic
    specular .01 
    roughness .75
    reflection .2 
    }            
    
#declare F_flat =            
  finish {
    ambient 0.0 
    diffuse 1
    phong 0
    phong_size 0
    specular 0
    metallic 0
  }
       
       
 #declare F_bright =            
  finish {
    ambient 1 
    diffuse .75
    phong 0
    phong_size 0
    specular 0
    metallic 0  
    emission rgb .1 
  }
  
//--- F I N I S H E S   M E  T A  L
  
#declare F_dull_glow =
    finish {
    ambient 0
    //emission .1
    fresnel 1
    phong 0
    diffuse albedo 1
    specular albedo 1 
    roughness 0.01
    reflection .5
    } 


#declare F_glow =
    finish {
    ambient 0
    emission 1
    fresnel 1
    phong 0
    diffuse albedo .5
    specular albedo 1 
    roughness 0.001
    reflection 1
    }           


#declare F_metal_dull  =
finish {
     reflection {.3, 1 fresnel on } 
     conserve_energy 
     brilliance 5   
     ambient 1
     diffuse 1
     phong .1    
     phong_size 200   
     metallic 1
     specular .8 
     roughness .1  
     reflection .15  
}


#declare F_metal_hard  =
finish {  
    reflection {.01, 1 fresnel on } 
    conserve_energy 
    brilliance 5
    ambient 0
    brilliance 5
    diffuse 1 
    phong 2    
    phong_size 100
    metallic
    specular 1 
    roughness 1/100
    reflection .2
}


#declare F_metal_polished  =
finish {
    reflection {0, 1 fresnel on }
    conserve_energy 
    brilliance 5
    ambient 0
    diffuse 1 
    phong 5    
    phong_size 40
    metallic
    specular .4
    roughness 1/20
    reflection .5   
}


#declare F_metal_smooth =    
    finish {
    reflection {.3, .6 fresnel on } 
    conserve_energy 
    brilliance 5
    ambient 0
    brilliance 2
    diffuse 1 
    phong .5    
    phong_size 50
    metallic
    specular .3 
    roughness .5
    }  
        
#declare F_metal_flat =
    finish {
        reflection {0, 1 fresnel on falloff 1.0 exponent 1.0 metallic 0 } 
        conserve_energy
        phong .5     
        phong_size 10 
        diffuse .5  
        metallic 1
        specular .7 
        roughness .2
        }
          
#declare F_stone_smooth =
    finish {
        reflection {.1, .3 
            fresnel on 
            falloff 1 
            exponent 1.0 
            metallic 0 
            } 
        conserve_energy
        phong .3     
        phong_size 30 
        diffuse .75 
        specular .2 
        roughness .8
        }        


//--- F I N I S H E S   G L A S S


#declare F_glass =
  finish {
    specular 0.7
    roughness 0.001
    ambient .5
    diffuse .5
    reflection { .2, 1.0 fresnel on }
    conserve_energy
  } 
  
#declare F_glass_dark =
  finish {
    specular .02
    roughness 0.01   
    phong 1     
    phong_size 100  
    ambient .5
    diffuse 0
    reflection { .2, 1.0 fresnel on }
    conserve_energy
  } 
  
  #declare F_hazy_glass =
     finish {
     reflection {0, .85 fresnel on } 
     conserve_energy
     phong 10     
     phong_size 60   
     metallic 1
     specular 30 
     roughness 1/10 
    }


  #declare F_hard_glass =
     finish {
     reflection {.2, 1 fresnel on } 
     conserve_energy
     phong 5     
     phong_size 100   
     metallic 0
     specular .25 
     roughness 1/10  
     diffuse 1
    }


  #declare F_milky =
     finish {
     reflection {.4, .6 fresnel on } 
     conserve_energy
     phong 1     
     phong_size 60   
     metallic 0
     specular .2 
     roughness 1/10 
    }


//---  I N T E R I O R S     


 #declare I_white=
  interior {
    ior 1.5  
    fade_colour <1,1,1>
    fade_distance 1.0
    fade_power .2
  }




 #declare I_clear=
  interior {
    ior 1.5  
    fade_colour <1,1,1>
    fade_distance 1.0
    fade_power .2
  }




 #declare I_dark=
  interior {
    ior 1.5  
    fade_colour <.5,.5,.5>
    fade_distance 1.0
    fade_power .2
  }
  
 #declare I_green =
    interior {
        ior 1.6
        fade_colour <0,.7,.2>
        fade_distance .5
        fade_power 2
        }  
        
 #declare I_green_light =
    interior {
        ior 1.6
        fade_colour <.75,1,.9>
        fade_distance .5
        fade_power 2
        }        




 #declare I_blue =
    interior {
        ior 1.6
        fade_colour <0,.8,1>
        fade_distance .5
        fade_power 2
        }


 #declare I_red =
    interior {
        ior 1.6
        fade_colour <1,0,0>
        fade_distance .5
        fade_power 2
        }  


 #declare I_gold =
    interior {
        ior 1.6
        fade_colour <0.90, 0.65, 0.15>
        fade_distance .5
        fade_power 2
        } 
        
        
 #declare I_solid =
    interior {
        ior 1
        fade_colour <0,0,0>
        fade_distance 0
        fade_power 0
        }      
        
// TEXTURES GLASS 
 
#declare T_glass_clear =
    texture {
        pigment { color C_black transmit 1 } 
        }


#declare T_glass_milk =
    texture {
        pigment { color C_white transmit 1 }
        }
        
#declare T_glass_frosted =
    texture {
        pigment { color C_white transmit 1 }
        }




// T E X T U R E S    E N V I R O M E N T


#declare T_enviroment_sunny =
    texture {
     pigment {
        gradient z 
            color_map { 
                C_map_enviroment_sunny
             }
         }
    }




  // pattern for use in texture/pigment/normal/density
  //gradient y         // specify gradient direction vector
  //gradient y, 0.5  // for use with normal{} (0...1 or more)




// T E X T U R E S   L A Y E R E D


#declare T_agate_gold_vien = 
texture {
  bozo
  texture_map {
    [0.30  pigment {
             color rgb <.3,.5,.5>
             transmit 1
           }               
         ]
    [0.5   pigment {
             granite
             color_map {  C_map_agate_A }
             scale 3
             warp {
             turbulence 0.5
             } 
           }
           finish{F_metal_hard}
           normal {
             granite .6
             scale 20 
             bump_size 1
           }             
         ] 
        }  
  warp {
    turbulence <2.0, 3.0, 2.0>  
  }  
}


#declare T_map_steel = 
texture {
  granite
  texture_map {
    [.2  pigment {
             color rgb <.77,.77,.75>
             transmit 0
           }
           finish{F_metal_flat}
  
         ]
    [.28   pigment {
             spotted
             color_map {  C_map_steel }
             scale 1
             warp {
             turbulence 0
             } 
             
           }
           finish{F_metal_hard}
             
         ]
      [.30  pigment {
             color rgb <.8,.8,.8>
             transmit 0
           }
           finish{F_metal_flat}
  
         ]
          
        }  




  warp {
    turbulence <1.0, 10.0, 20.0>  
  }  
}
    
#declare shroom_texture_A =
texture {
 pigment { 
    gradient y    
    color_map {shroom_grad_A}
    }
    finish {
        specular 1 
        diffuse 1  
        roughness 0.0001
        phong 0.1
        phong_size 45
        brilliance 3
        reflection {0.03, .3 fresnel on}
        conserve_energy
    }  
        normal { crackle 5 scale .1 turbulence 0.25 bump_size .5}
}
       
       
#declare shroom_texture_B =
texture {
 pigment { 
    gradient y    
    color_map {shroom_grad_B}
    }
    finish {
        specular 1 
        diffuse 1  
        roughness 0.0001
        phong 0.1
        phong_size 45
        brilliance 3
        reflection {0.03, .3 fresnel on}
        conserve_energy
    }  
        normal { crackle 5 scale .1 turbulence 0.25 bump_size .5}
}      
       
       
       
#declare T_shroom_A =
texture { 
    shroom_texture_A 
    scale .5 
    translate <0,0,0>
    } 
     
texture{
  pigment{ crackle
           scale .1 turbulence 0.25
           color_map{
               [0.0 color C_black transmit 0.39]  
               [0.05 color Transparent] 
               [0.9 color C_red]
               [.95 color Transparent]
               [1.0 color C_black transmit 0.39]
             } // end of color_map
         } // end of pigment 
         
          normal { crackle 5 scale .1 turbulence 0.25 }
}








#declare T_shroom_B =
texture { 
    shroom_texture_B 
    scale .5 
    translate <0,0,0>
    } 
     
texture{
  pigment{ crackle
           scale .1 turbulence 0.25
           color_map{
               [0.0 color C_black transmit 0.39]  
               [0.05 color Transparent] 
               [0.9 color C_red]
               [.95 color Transparent]
               [1.0 color C_black transmit 0.39]
             } // end of color_map
         } // end of pigment 
         
          normal { crackle 5 scale .1 turbulence 0.25 }
}


#declare M_shroom = material { texture { T_shroom_A scale 11 rotate x*90 finish{F_metal_polished}} }
#declare M_shroom_B = material { texture { T_shroom_B scale 25 rotate x*90 finish{F_metal_polished}} } 


//--- T E X T U R E S   G R A Y 
                       
#declare T_black = texture{ pigment{ rgb C_black transmit 0 }}
#declare T_gray10 = texture{ pigment{ rgb C_gray50 transmit 0 }}
#declare T_gray20 = texture{ pigment{ rgb C_gray50 transmit 0 }}
#declare T_gray30 = texture{ pigment{ rgb C_gray50 transmit 0 }}
#declare T_gray40 = texture{ pigment{ rgb C_gray50 transmit 0 }}
#declare T_gray50 = texture{ pigment{ rgb C_gray50 transmit 0 }}
#declare T_gray60 = texture{ pigment{ rgb C_gray60 transmit 0 }}  
#declare T_gray70 = texture{ pigment{ rgb C_gray70 transmit 0 }}
#declare T_gray80 = texture{ pigment{ rgb C_gray80 transmit 0 }}
#declare T_white = texture{ pigment{ rgb C_white transmit 0 }}  
#declare T_tan = texture{ pigment{ rgb C_tan transmit 0 }}   
#declare T_tan_dark = texture{ pigment{ rgb C_tan_dark transmit 0 }}  
#declare T_red = texture{ pigment{ rgb C_red transmit 0 }}




//--- textures color transmit
#declare T_red_transmit = texture{ pigment{ rgb C_red transmit 1 }} 


//--- T E X T U R E S   C O L O R S
#declare T_gold = texture{ pigment{ rgb C_gold transmit 0 }} 
#declare T_gold_bright = texture{ pigment{ rgb C_gold_bright transmit 0 }} 


//--- N O R M A L   M A P S  


#declare N_caos_A =
normal {
   gradient x       //this is the PATTERN_TYPE
    normal_map {
        [0.3  bumps scale 2]
        [0.3  dents]
        [0.6  dents]
        [0.9  marble turbulence 1]
        }
        
 }       
 
 
#declare N_ripple_A = 
normal {
  gradient x                // this is the PATTERN_TYPE
  slope_map {
    [0    <0.5, 1>]   // start in middle and slope up
    [0.25 <1.0, 0>]   // flat slope at top of wave
    [0.5  <0.5,-1>]   // slope down at mid point
    [0.75 <0.0, 0>]   // flat slope at bottom
    [1    <0.5, 1>]   // finish in middle and slope up
    } 
    scale .2
} 


// -- N O R M A L S
#declare N_frost = normal {bumps 0.3 scale .001} 
//#declare Map_normal_flat = concat ("maps/normals/"  "normal_flat.png")
//#declare N_flat = normal{ bump_map{ Map_normal_flat gamma 2.8 premultiplied true }} 
//#declare Map_bump_dots_A = concat ("maps/normals/"  "bump_dots_A.png")
//#declare N_bump_dots_A = normal{ bump_map{ Map_bump_dots_A gamma 2.8 premultiplied true map_type 0} bump_size 5}
//#declare Map_stone_wall_D_n = concat ("maps/stones/"  "stonewall-normal.png") 
//#declare N_stone_wall_D_n = normal{ bump_map{ Map_stone_wall_D_n gamma 2.8 premultiplied true map_type 1} bump_size 5}
#declare N_ripple_A = normal { bumps 0.2 scale 0.2 }  
#declare N_ripple_large = normal{N_ripple_A scale 10 bump_size 5}


//  granite
//  waves 
//  wrinkles 
//  bozo            
//  leopard     
//  crackle  
//  agate            
//  agate_turb 0.3  




// -- P I G M E N T S   W I T H   M A T C H I N G    N O R M A L S 




#declare P_mud_granite = pigment { granite color_map {  C_map_mud_A } scale 1 warp { turbulence .5 }} 
#declare N_granite = normal { granite 1 bump_size 1 scale 1 warp { turbulence .5 }}   




// ---------------------------------------




#declare P_mud_leopard = pigment { leopard color_map {  C_map_mud_A } scale 1 warp { turbulence 3 }} 
#declare N_leopard = normal { leopard bump_size 1 scale 1 warp { turbulence 3 }}   








// ---------------------------------------




#declare P_mud_bozo = pigment { bozo color_map {  C_map_mud_A } scale 1 warp { turbulence 3 }} 
#declare N_mud_bozo = normal { bozo bump_size 5 scale 1 warp { turbulence 3 }}   
                                                                                      
// ---------------------------------------




#declare P_mud_wrinkles = pigment { wrinkles color_map {  C_map_mud_A } scale 1 warp { turbulence 3 }} 
#declare N_mud_wrinkles = normal { wrinkles bump_size 2 scale 1 warp { turbulence 3 }}  
                                                                                      




// ---------------------------------------       




#declare P_mud_crackle = pigment { crackle color_map {  C_map_mud_A } scale 1 warp { turbulence 3 }} 
#declare N_mud_crackle = normal { crackle bump_size 2 scale 1 warp { turbulence 3 }}    




// ---------------------------------------       




#declare P_mud_agate = pigment { agate color_map {  C_map_mud_A } scale 1 warp { turbulence 1 }} 
#declare N_mud_agate = normal { agate bump_size 2 scale 1 warp { turbulence 1 }} 
                                                                                      




// ---------------------------------------




#declare P_steel_leopard = pigment { leopard color_map {  C_map_steel } scale 1 warp { turbulence 2 }} 
#declare N_steel = normal { leopard bump_size 3 scale 1 warp { turbulence 2 }}   








// ---------------------------------------
#declare P_steel_bozo = pigment { bozo color_map {  C_map_steel } scale 1 warp { turbulence 4 }} 
#declare N_steel_bozo = normal { bozo bump_size 1 scale 1 warp { turbulence 4 }}   
// ---------------------------------------
#declare P_steel_wrinkles = pigment { wrinkles color_map {  C_map_steel } scale 1 warp { turbulence 6 }} 
#declare N_steel_wrinkles = normal { wrinkles bump_size .2 scale 1 warp { turbulence 6 }} // ---------------------------------------
#declare P_steel_agate = pigment { agate color_map {  C_map_steel } scale 1 warp { turbulence 5 }} 
#declare N_steel_agate = normal { agate bump_size .05 scale 1 warp { turbulence 5 }}  
// ---------------------------------------
#declare P_gold_agate = pigment { agate color_map {  C_map_gold } scale 1 warp { turbulence 5 }} 
#declare N_gold_agate = normal { agate bump_size .2 scale 1 warp { turbulence 5 }} 




// --- M A T E R I A L   L I B R A R Y


/*
    miller_materials.inc




    0 planar mapping
    1 spherical mapping 
    2 cylindrical mapping 
    5 torusmapping
    3 and 4 under development    


    --- T R A N S M I T
    T_red_transmit
               
           
    --- P L A S T I C   
    F_plastiC_gloss =    
    F_plastiC_satin =    
    F_soft =    
    F_silk =    




    --- M E T A L
    F_dull_glow 
    F_glow 
    F_metal_dull  
    F_metal_hard 
    F_metal_polished
              
                  
    --- G L A S S             
    F_glass 
    F_glass_dark
    F_hazy_glass
    F_hard_glass   
    F_milky


    --- I N T E R I O R S
    I_white
    I_red 
    I_blue  
    I_green
    I_light_green  
    I_clear       
    I_solid


    --- N O R M A L S
    N_rust_A
    N_ripple_A
    N_flat    
    N_ripple_A
    N_stone_wall_D




    --- T E X T U R E S   S T O N E S
    T_stone_wall_D 
    
    
    --- T E X T U R E S   G L A S S
    T_glass_clear  
    T_glass_hard_clear   
    T_glass_frosted


    --- T E X T U R E S   O P A Q U E
    T_black 
    T_gray10 
    T_gray20 
    T_gray30 
    T_gray40
    T_gray50 
    T_gray60 
    T_gray80 
    T_white 
    T_dark_tan 
    T_gold
    T_gold_bright      
    
*/


// ---M A T E R I A L S   
   


// neutrals  
#declare M_neutral_floor = material{ texture{ T_gray40   finish{F_metal_hard}} interior{I_solid} } 
#declare M_tan_gloss = material{ texture{ T_tan   finish{F_plastiC_gloss}} interior{I_solid} }
#declare M_tan_dark_gloss = material{ texture{ T_tan_dark   finish{F_metal_hard}} interior{I_solid} }   
#declare M_red_gloss = material{ texture{ T_red   finish{F_metal_hard}} interior{I_solid} }
#declare M_black_gloss = material{ texture{ T_black   finish{F_plastiC_gloss}} interior{I_solid} }
#declare M_gray20_gloss = material{ texture{ T_gray20   finish{F_metal_hard}} interior{I_solid} }
#declare M_gray30_gloss = material{ texture{ T_gray30   finish{F_metal_hard}} interior{I_solid} }
#declare M_gray50_gloss = material{ texture{ T_gray50   finish{F_plastiC_gloss}} interior{I_solid} } 
#declare M_gray50_mat = material{ texture{ T_gray50   finish{F_flat}} interior{I_solid} } 
#declare M_gray50_satin = material{ texture{ T_gray50   finish{F_plastic_satin}} interior{I_solid} }
#declare M_white_gloss = material{ texture{ T_white   finish{F_metal_hard}} interior{I_solid} }








// metals
#declare M_metal_alum = material{ texture{ T_gray80   finish{F_metal_dull}} interior{I_solid} }
#declare M_metal_steel = material{ texture{ T_gray70   finish{F_metal_hard}} interior{I_solid} } 
#declare M_metal_steel2 = material{ texture{ T_map_steel } scale 15} 
#declare M_metal_chrome = material{ texture{ T_gray80   finish{F_metal_polished}} interior{I_solid} }
#declare M_metal_gold = material{ texture{ T_gold   finish{F_metal_polished}} interior{I_solid} }
#declare M_metal_gold_bright = material{ texture{ T_gold_bright   finish{F_metal_polished}} interior{I_solid} } 








// glass 
#declare M_glass = material{ texture{ T_glass_clear   finish{F_hard_glass}} interior{I_clear} }  
#declare M_glass_dark = material{ texture{ T_glass_clear   finish{F_hard_glass}} interior{I_dark} }
#declare M_glass_red = material{ texture{ T_glass_clear   finish{F_hard_glass}} interior{I_red} }
#declare M_glass_gold = material{ texture{ T_glass_clear   finish{F_hard_glass}} interior{I_gold} }
#declare M_glass_green = material{ texture{ T_glass_clear   finish{F_hard_glass}} interior{I_green} }
#declare M_glass_green_light = material{ texture{ T_glass_clear   finish{F_hard_glass}} interior{I_green_light} }
#declare M_glass_blue = material{ texture{ T_glass_clear   finish{F_hard_glass}} interior{I_blue} }
#declare M_glass_milk = material{ texture{ T_glass_milk   finish{F_milky}} interior{I_white} }
#declare M_glass_frosted = material{ texture{ T_glass_clear normal{N_ripple_A scale .05} finish{F_milky}} interior{I_white} }
#declare M_glass_wripple = material{ texture{ T_glass_clear normal{N_ripple_A scale 2} finish{F_milky}} interior{I_white} }
#declare M_glass_gold_frost = material{ texture{ T_glass_clear normal{N_ripple_A scale .1} finish{F_hard_glass}} interior{I_gold} }
#declare M_glass_gold_wripple = material{ texture{ T_glass_clear normal{N_ripple_A} finish{F_hard_glass}} interior{I_gold} }
#declare M_glass_gold_pillow = material{ texture{ T_glass_clear normal{N_ripple_A scale 9} finish{F_hard_glass}} interior{I_gold} }
#declare M_gray50_gloss_ripple = material{ texture{ T_gray50 normal{N_ripple_A scale 9} finish{F_metal_hard}} interior{I_solid} }
#declare M_metal_chrome_ripple = material{ texture{ T_gray80 normal{N_ripple_A } finish{F_metal_polished}} interior{I_solid} rotate x*90}
#declare M_glass_green_light_ripple = material{ texture{ T_glass_clear normal{N_ripple_large} finish{F_hard_glass}} interior{I_green_light} }
#declare M_metal_gold_ripple = material{ texture{ T_gold_bright normal{N_ripple_A scale .6} finish{F_metal_polished}} interior{I_solid} }
#declare M_normal_study = material{ texture{ T_tan   finish{F_metal_hard}} interior{I_solid} }








//-- maps/stones
//#declare Map_stone_wall_D = concat ("maps/stones/"  "stone_wall_D.png") 
//#declare T_stone_wall_D = texture{ pigment{ image_map{ png Map_stone_wall_D  map_type 0 }}} 
//#declare M_stone_wall_D = material{ texture{ T_stone_wall_D normal{N_stone_wall_D_n} finish{F_soft}} interior{I_solid}scale 10} 








//-- maps/ground
//#declare Map_gravel_A = concat ("maps/ground/"  "gravel_A.png")
//#declare T_gravel_A = texture{pigment{ image_map{ png Map_gravel_A  map_type 1 }}} 
//#declare M_gravel_A = material{ texture{ T_gravel_A   finish{F_flat}} interior{I_solid}scale 20}








// --- wornpainted_A
#declare mapsize = 5; 
#declare bumpsize = 1; 
#declare m_gamma = 2.8;
#declare m_type = 0;
#declare Map_wornpainted_A = concat ("maps/metal/"  "wornpainted_A.png") 
#declare NMap_wornpainted_A_normal = concat ("maps/metal/"  "wornpainted_A_normal.png")  
#declare N_wornpainted_A_normal = normal{ bump_map{ NMap_wornpainted_A_normal gamma m_gamma premultiplied true map_type m_type}} 
//#declare T_wornpainted_A = texture{pigment{ image_map{ png Map_wornpainted_A gamma m_gamma premultiplied true map_type m_type }  }normal {N_wornpainted_A_normal scale mapsize bump_size bumpsize}} 
//#declare M_wornpainted_A = material{ texture{ T_wornpainted_A finish{F_metal_flat}} interior{I_solid} scale mapsize}
#declare M_agate_gold_vien = material{ texture{ T_agate_gold_vien  }}
                                                                        
                                                                        
// --- mud                                                                      
#declare M_mud_granite = material{ texture{ P_mud_granite scale 4 normal{N_granite scale 4} finish{F_stone_smooth}} interior{I_solid} } 
#declare M_mud_leopard = material{ texture{ P_mud_leopard scale .3 normal{N_leopard scale .3} finish{F_stone_smooth}} interior{I_solid} }  
#declare M_mud_bozo = material{ texture{ P_mud_bozo scale 1 normal{N_mud_bozo scale 1} finish{F_stone_smooth}} interior{I_solid} }   
#declare M_mud_wrinkles = material{ texture{ P_mud_wrinkles scale 2 normal{N_mud_wrinkles scale 2} finish{F_metal_smooth}} interior{I_solid} }
#declare M_mud_crackle = material{ texture{ P_mud_crackle scale 2 normal{N_mud_crackle scale 2} finish{F_stone_smooth}} interior{I_solid} }
#declare M_mud_agate = material{ texture{ P_mud_agate scale 2 normal{N_mud_agate scale 2} finish{F_stone_smooth}} interior{I_solid} }




//---  aged metals ?




//#declare M_steel_leopard = material{ texture{ P_steel_leopard scale .3 normal{N_steel scale .3} finish{F_metal_smooth}} interior{I_solid} } 
#declare M_steel_bozo = material{ texture{ P_steel_bozo scale .6 normal{N_steel_bozo scale .6} finish{F_metal_smooth}} interior{I_solid} } 
#declare M_steel_wrinkles = material{ texture{ P_steel_wrinkles scale 3 normal{N_steel_wrinkles scale 3} finish{F_metal_smooth}} interior{I_solid} } 
#declare M_steel_agate = material{ texture{ P_steel_agate scale 3 normal{N_steel_agate scale 3} finish{F_metal_smooth}} interior{I_solid} } 
#declare M_gold_agate = material{ texture{ P_gold_agate scale 5 normal{N_gold_agate scale 5} finish{F_metal_smooth}} interior{I_solid} }   
#declare M_test = material{ texture{ P_mud_leopard scale .3 normal{N_leopard scale .3} finish{F_stone_smooth}} interior{I_solid} }  
  
#declare M_steel_leopard = material{ texture{ P_steel_leopard scale .3 normal{N_steel scale .3} finish{F_metal_smooth}} interior{I_solid} } 




#declare M_metal_dirty_chrome = material{ texture{ P_steel_bozo scale 100 normal{N_steel_wrinkles} finish{F_metal_polished}} interior{I_solid} } 




#declare M_enviroment_sunny = material{ texture{ T_enviroment_sunny   finish{F_bright}} interior{I_solid} }




// -- B U I L D   A R E A
//--- painted metal Blue with metallic gold marbling                              
    
#declare N_map_teal = normal { leopard bump_size 10 scale 1 warp { turbulence 1 }} 
#declare P_teal_overcoat = texture { pigment { leopard color_map { C_map_teal } scale 1 warp { turbulence 1 }}}
#declare T_gold_undercoat = texture{ T_gold_bright } 
                             
                             
                             
#declare T_teal_gold_swirl = 
texture {
  bozo
  texture_map {  
  [.1   T_gold_undercoat  normal {N_map_teal} finish{           F_metal_polished }      ]  
  [.5   P_teal_overcoat   normal {N_ripple_A scale .6} finish{  F_stone_smooth }        ]
  }
  warp {
    turbulence <3.0, 2.0, 1.0>
  }
}




#declare T_glass_teal_gold_swirl = 
texture {
  bozo
  texture_map {  
  [.3   T_gold_undercoat  normal {N_map_teal} finish{           F_metal_polished }      ]  
  [.8   P_teal_overcoat   normal {N_ripple_A scale 2 bump_size .1} finish{  F_metal_polished }        ]
  }
  warp {
    turbulence <3.0, 2.0, 1.0>
  }
}
//---NOTE: sloooow
#declare M_teal_gold_swirl = material{ texture { T_teal_gold_swirl } scale .5};  
#declare M_glass_teal_gold_swirl = material{ texture { T_glass_teal_gold_swirl } scale .5}; 




// --- S E T   S A M P L E   D A T A

#declare Txt_label = "M_metal_gold"
#declare sample_material = M_metal_gold ;
#declare compare_material = M_metal_gold ; 


// --- S C R E E N   A N N O  


text { ttf "arial.ttf", Txt_label, .01 , 0 
       texture{ pigment{ color rgb<1,1,1> } finish {F_dull_glow}  }
       scale<.5,.5,.5>
       translate<-2.5,-5.55,0>
      } 


// --- M A K E  G I Z M O S
 
#declare rad = 3;
#declare posY = 1.5;   
#declare g = object{ spawn_gizmo(<0, 0, posY>, rad) }   ;
#declare b = object{ spawn_box(0,0,0,10,10,.001    ) }   ;
#declare gs = object{ spawn_sphere(<0,0,0>,rad/2) }   ;
#declare show_zero_marker = 0 ;                
                 
                 
// --- P L A C E   G I Z M O S 

object{ g translate <0,0,rad/2> material{ sample_material }}
object{ b translate <-5,-5,.05> material{ sample_material }} 
object{ gs translate <-4,-4,rad/2> material{ compare_material }} 


// --- C A M E R A   S E T U P 

#declare F = 1 ;
#declare R = 2 ;
#declare L = 3 ;
#declare T = 4 ;
#declare P = 5 ;


// --- S H O W   C A M E R A

//  set_camera ( cam_ID, offset_position, offset_look)
//  set_camera ( T, 100, 0 )
//  set_camera ( F, -1200, 200 )
//  set_camera ( R, 80, 3 )  
//  set_camera ( L, 80, 5 ) 
    set_camera ( P, -15, 0 )
    
    
    
    
// --- S H O W   S T A G E

show_floor (-.01) 
show_sky ()   
show_sky_gray ()  
//show_lighting_hard()
show_lighting_soft(1)  //(n) = adaptive (1,2,or 3)
#if (show_zero_marker = 1) sphere { <0,0,0> .1} #end  
Comments
* The email will not be published on the website.
I BUILT MY SITE FOR FREE USING