// Persistence of Vision Ray Tracer Include File // File: cvelvet.inc // Vers: 3.1 // Desc: An attempt at making a crushed velvet texture // Date: 98.47 // Auth: Bob Hughes // Mail: inversez@aol.com?Subject=Pov-Scene: #ifdef (Velvets_Temp) // do nothing #else #declare Velvets_Temp=version #version 3.1; /* Velvet definition name is CVelvet so use texture {CVelvet} */ /* Put any or all of these into your pov file // Color Brightness [ > 0 to 2 ? ] #declare Vb = 1; // Velvet Thickness [ 0 to 3 ? ] #declare Vt = 1.5; // Velvet Size [ 0 to 6 ? ] #declare Vs = 1; // Color Choice [ 1= black, 2= red, 3= green, 4= blue ] #declare Vc = 2; */ // BEGIN VELVET CHOICES // Color Brightness [ > 0 to 2 ? ] #ifndef (Vb) #declare Vb = 1; #end // Velvet Thickness [ 0 to 3 ? ] #ifndef (Vt) #declare Vt = 1.5; #end // Velvet Size [ 0 to 6 ? ] #ifndef (Vs) #declare Vs = 1; #end // Color Choice [ 1= black, 2= red, 3= green, 4= blue ] #ifndef (Vc) #declare Vc = 2; #end // END VELVET CHOICES // Color Choice #switch (Vc) #case (1) // Black #declare Cv1 = <.05,.05,.05>; #declare Cv2 = <.1,.1,.1>; #declare Cv3 = <.075,.075,.075>; #declare Cv4 = <.1,.1,.1>; #declare Cv5 = <.05,.05,.05>; #declare Cv6 = <.1,.1,.1>; #declare Cfv1 = rgbf<.05,.05,.05,.4>; #declare Cfv2 = rgbf<.1,.1,.1,.5>; #declare Cfv1a = rgbf<.05,.05,.05,.1>; #declare Cfv1b = rgbf<.1,.1,.1,.05>; #declare Cfv2a = rgbf<.05,.05,.05,.1>; #declare Cfv2b = rgbf<.1,.1,.1,.05>; #break #case (2) // Red #declare Cv1 = <.7,.1,.1>; #declare Cv2 = <.75,.15,.2>; #declare Cv3 = <.65,.15,.15>; #declare Cv4 = <.65,.15,.25>; #declare Cv5 = <.6,.1,.1>; #declare Cv6 = <.65,.15,.15>; #declare Cfv1 = rgbf<.5,.1,.1,.4>; #declare Cfv2 = rgbf<.55,.1,.15,.5>; #declare Cfv1a = rgbf<.6,.1,.1,.1>; #declare Cfv1b = rgbf<.65,.15,.15,.05>; #declare Cfv2a = rgbf<.6,.1,.1,.1>; #declare Cfv2b = rgbf<.75,.15,.25,.05>; #break #case (3) // Green #declare Cv1 = <.1,.5,.2>; #declare Cv2 = <.1,.65,.25>; #declare Cv3 = <.1,.5,.3>; #declare Cv4 = <.2,.6,.2>; #declare Cv5 = <.1,.7,.1>; #declare Cv6 = <.15,.65,.25>; #declare Cfv1 = rgbf<.2,.5,.2,.4>; #declare Cfv2 = rgbf<.3,.55,.25,.5>; #declare Cfv1a = rgbf<.2,.6,.3,.1>; #declare Cfv1b = rgbf<.2,.7,.3,.05>; #declare Cfv2a = rgbf<.1,.6,.15,.1>; #declare Cfv2b = rgbf<.15,.65,.2,.05>; #break #case (4) // Blue #declare Cv1 = <.1,.3,.7>; #declare Cv2 = <.2,.4,.65>; #declare Cv3 = <.12,.24,.58>; #declare Cv4 = <.3,.5,.6>; #declare Cv5 = <.2,.4,.7>; #declare Cv6 = <.25,.35,.65>; #declare Cfv1 = rgbf<.22,.34,.77,.4>; #declare Cfv2 = rgbf<.35,.45,.75,.5>; #declare Cfv1a = rgbf<.12,.24,.6,.1>; #declare Cfv1b = rgbf<.2,.3,.7,.05>; #declare Cfv2a = rgbf<.12,.24,.6,.1>; #declare Cfv2b = rgbf<.2,.3,.7,.05>; #break #end // BEGIN VELVET TEXTURE DEFINITION #declare T1 = texture { pigment { wrinkles frequency .666 color_map { [0,1 color rgb Cv1*Vb color rgb Cv2*Vb] } sine_wave } normal { crackle 10 normal_map { [.1 wrinkles 8 triangle_wave scale <3,.5,1>*10 rotate <15,30,5>] [.3 crackle 8 scallop_wave scale <3,.5,1>*10 rotate <15,30,5>] [.9 leopard 8 triangle_wave scale <3,.5,1>*10 rotate <15,30,5>] } triangle_wave scale <3,.5,1>*5 rotate <15,30,5> } finish {ambient .05 diffuse .3 reflection <.05,.075,.1> crand .013 brilliance -.25*Vt } } #declare T2 = texture { pigment { crackle frequency 2 color_map { [0,1 color rgb Cv3*Vb color rgb Cv4*Vb] } scallop_wave } normal { agate 7.5 agate_turb .6 normal_map { [.1 wrinkles 8 triangle_wave scale <3,.5,1>*10 rotate <15,30,5>] [.3 crackle 8 scallop_wave scale <3,.5,1>*10 rotate <15,30,5>] [.9 leopard 8 triangle_wave scale <3,.5,1>*10 rotate <15,30,5>] } scallop_wave scale <3,.5,1>*10 rotate <15,30,5> } finish {ambient .05 diffuse .35 reflection <.05,.075,.1> crand .013 brilliance -.3*Vt } } #declare T3 = texture { pigment { granite frequency .5 color_map { [0,1 color rgb Cv5*Vb color rgb Cv6*Vb] } triangle_wave } normal { bozo 5 turbulence .9 normal_map { [.1 wrinkles 8 triangle_wave scale <3,.5,1>*10 rotate <15,30,5>] [.3 crackle 8 scallop_wave scale <3,.5,1>*10 rotate <15,30,5>] [.9 leopard 8 triangle_wave scale <3,.5,1>*10 rotate <15,30,5>] } sine_wave scale <3,.5,1>*15 rotate <15,30,5> } finish {ambient .05 diffuse .4 reflection <.05,.075,.1> crand .013 brilliance -.35*Vt } } #declare Tf = texture { pigment { wrinkles frequency 2 color_map { [0,1 color Cfv1*Vb color Cfv2*Vb] } } finish {ambient .125 diffuse 1.25 reflection <.05,.075,.1> crand .013 brilliance -.75*Vt metallic .6 } } texture { pigment { wrinkles frequency 2 color_map { [0,1 color Cfv1*Vb color Cfv2*Vb] } } finish {ambient .5 diffuse .05 reflection <.05,.075,.1>*.25 crand .013 brilliance .125*Vt metallic .3 } } #declare P1 = pigment { granite color_map { [0,1 color Cfv1a*Vb color Cfv1b*Vb] } } #declare P2 = pigment { granite color_map { [0,1 color Cfv2a*Vb color Cfv2b*Vb] } } #declare Tp1 = texture { pigment { gradient x turbulence .09 frequency .333 pigment_map { [0 P1] [1 P2] } scallop_wave } finish {ambient .125 diffuse .5 reflection <.05,.075,.1> crand .016 brilliance .125*Vt } } #declare Tp2 = texture { pigment { gradient y turbulence .09 frequency .333 pigment_map { [0 P1] [1 P2] } scallop_wave } finish {ambient .125 diffuse .5 reflection <.05,.075,.1> crand .016 brilliance .125*Vt } } #declare Tp3 = texture { pigment { gradient z turbulence .09 frequency .333 pigment_map { [0 P1] [1 P2] } scallop_wave } finish {ambient .125 diffuse .5 reflection <.05,.075,.1> crand .016 brilliance .125*Vt } } // FINAL VELVET TEXTURE #declare CVelvet = texture { average texture_map { [1 T1] [.75 T2] [.875 T3] [.75 Tf] [.9 Tp1] [.9 Tp2] [.9 Tp3] } scale .05*Vs } // END VELVET TEXTURE DEFINITION // test objects // box {-1,1 texture {CVelvet} rotate translate -1.4*x} // sphere {0,1.25 texture {CVelvet} rotate translate 1.7*x} // height_field {png "POVhf.png" smooth translate <-.5,0,-.5> scale <5,.5,5> // texture {CVelvet} rotate translate 0*x} #version Velvets_Temp #end