Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaurice Raybaud <mauriceraybaud@hotmail.fr>2017-06-11 17:31:00 +0300
committerMaurice Raybaud <mauriceraybaud@hotmail.fr>2017-06-11 17:31:00 +0300
commiteaf47415b2687621fb0e542ba4195476d1e6c7d8 (patch)
tree2f6e327517e1b82b35d243c17b11ceda48ff89cf
parent1c3a84f24f31273587d198cc888f11985b1518b3 (diff)
*Added POV Scene Description Language templates to be used by text editor
-rw-r--r--render_povray/templates_pov/abyss.pov834
-rw-r--r--render_povray/templates_pov/biscuit.pov370
-rw-r--r--render_povray/templates_pov/bsp_Tango.pov61
-rw-r--r--render_povray/templates_pov/chess2.pov727
-rw-r--r--render_povray/templates_pov/cornell.pov130
-rw-r--r--render_povray/templates_pov/diffract.pov195
-rw-r--r--render_povray/templates_pov/diffuse_back.pov251
-rw-r--r--render_povray/templates_pov/float5.pov81
-rw-r--r--render_povray/templates_pov/gamma_showcase.pov189
-rw-r--r--render_povray/templates_pov/grenadine.pov375
-rw-r--r--render_povray/templates_pov/isocacti.pov242
-rw-r--r--render_povray/templates_pov/mediasky.pov147
-rw-r--r--render_povray/templates_pov/patio-radio.pov292
-rw-r--r--render_povray/templates_pov/subsurface.pov176
-rw-r--r--render_povray/templates_pov/wallstucco.pov186
15 files changed, 4256 insertions, 0 deletions
diff --git a/render_povray/templates_pov/abyss.pov b/render_povray/templates_pov/abyss.pov
new file mode 100644
index 00000000..6cb39da8
--- /dev/null
+++ b/render_povray/templates_pov/abyss.pov
@@ -0,0 +1,834 @@
+// This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
+// To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a
+// letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.
+
+// Persistence Of Vision raytracer sample file.
+//============================================
+// The field, new improved version October. 2001
+// Copyright Gilles Tran 2001
+// http://www.oyonale.com
+//--------------------------------------------
+// Render with a 2.67 ratio such as 320*120, 640*240, 1024*384, 1280*480
+//--------------------------------------------
+// -w320 -h120
+// -w640 -h240 +a0.1
+// -w768 -h288 +a0.1
+// -w1024 -h384 +a0.1
+
+// Uncomment AreaOK=true below to turn on the area light
+// This will blur the shadow under the submarine
+// but the rendering time will extremely slow
+
+#version 3.6;
+
+global_settings{ assumed_gamma 1.0 max_trace_level 15 }
+
+#declare AreaOK=false;
+//#declare AreaOK=true;
+
+#include "colors.inc"
+#include "functions.inc"
+//============================================
+// General
+//============================================
+//--------------------------------------------
+// Camera
+//--------------------------------------------
+#declare PdV=<-20, -20, -400>;
+camera{
+ location PdV
+ angle 65 // direction z*2
+ up y
+ right x*image_width/image_height // keep propotions with any aspect ratio //right 8*x/3
+ look_at <-20, 30, 0>
+}
+
+//--------------------------------------------
+// reorientation macro
+//--------------------------------------------
+#macro mOrient(P1,P2)
+#local yV1=vnormalize(P2-P1);
+#local xV1=vnormalize(vcross(yV1,z));
+#local zV1=vcross(xV1,yV1);
+ matrix <xV1.x,xV1.y,xV1.z,yV1.x,yV1.y,yV1.z,zV1.x,zV1.y,zV1.z,P1.x,P1.y,P1.z>
+#end
+
+//--------------------------------------------
+// colors
+//--------------------------------------------
+#declare colWater1=rgb<0,79,159>/255;
+#declare colWater2=rgb<7,146,217>/255;
+#declare colWater3=rgb<82,239,238>/255;
+#declare colSub=<7/255,146/255,217/255>;
+
+//--------------------------------------------
+// lights
+//--------------------------------------------
+light_source {<-10, 1000, -10> color colWater2*10
+#if (AreaOK)
+ area_light x*200,z*200, 3,3 adaptive 1 jitter orient
+#end
+
+}
+light_source {<-200, -1000, -300> color colWater2*2 shadowless media_interaction off}
+light_source {PdV color colWater2*2 shadowless media_interaction off}
+
+//--------------------------------------------
+// mine textures
+//--------------------------------------------
+#declare txtMine=texture {
+ pigment{color colWater3*0.1}
+ finish{ambient 0 diffuse 0.4 specular 0.03 roughness 0.2 reflection 0.05}
+}
+#declare txtCable=texture {
+ pigment{color colWater3*0.1}
+ finish{ambient 0 diffuse 0.1 specular 0.02 roughness 0.2}
+}
+
+//--------------------------------------------
+// sub textures
+//--------------------------------------------
+#declare txtSkin=texture{
+ pigment{
+ function{min(1,max(0,y))}
+ turbulence 0.01 omega 1.5 lambda 5 poly_wave 1.5
+ color_map{[0 Clear][0.25 rgbt<0,0,0,0.7>] [0.4 rgbt<0,0,0,0.3>]}
+ scale 38 translate -y*17
+ }
+
+ finish{ambient 0 diffuse 0.6 specular 0.1 roughness 1/10}
+}
+#declare trb=0.0001;
+#declare pigLettre=pigment{bozo color_map{[0 White*1.3][1 White*0.5]}}
+#declare txtLettre=texture{ // submarine name
+ pigment {
+ object {
+ text{ttf "cyrvetic.ttf" "PERSISTENCE" 10, 0.3*x
+ translate -z*0.5 scale <1,1,10>
+ }
+ pigment{color Clear}, pigment{pigLettre}
+ }
+ rotate y*90
+ scale 1.5 translate <-10,-1,-25>
+ }
+
+ finish{ambient 0 diffuse 0.4}
+
+}
+
+#declare txtSub0=texture {
+ pigment{rgb colSub*0.2}
+ finish {ambient 0 diffuse 0.3 specular 0.05 roughness 0.1}
+}
+// Thanks to Bob H. for the help regarding these textures
+#declare txtSubBase=texture {
+ pigment {
+
+ cells
+ color_map {
+ [.45 rgb <colSub.x*0.1,colSub.y*0.1,colSub.z*0.1>]
+ [.55 rgb <colSub.x,colSub.y,colSub.z>*0.8]
+ }
+ scale <100,.125,1>
+ }
+
+ scale 3
+ finish {ambient 0 diffuse 0.3 specular 0.05 roughness 0.1}
+}
+
+#declare txtSubTop=
+
+ texture{txtSubBase}
+ texture {
+ pigment {
+ cells
+ color_map {
+ [.25 rgbf <colSub.x*0.1,colSub.y*0.1,colSub.z*0.1,0>]
+ [.75 rgbf <colSub.x,colSub.y,colSub.z,1>]
+ }
+ scale <100,0.75,1>
+ }
+ scale 3.5
+ finish {ambient 0 diffuse 0.3 specular 0.05 roughness 0.1}
+ }
+
+ texture {
+ pigment {
+ cells
+ color_map {
+ [.25 rgbf <colSub.x*0.4,colSub.y*0.4,colSub.z*0.4,0>]
+ [.75 rgbf <colSub.x,colSub.y,colSub.z,1>]
+ }
+ scale <100,0.45,1>
+ }
+ scale 2.5
+ finish {ambient 0 diffuse 0.3 specular 0.05 roughness 0.1}
+ }
+
+ texture{txtSkin}
+
+#declare txtSubBottom=
+
+ texture{txtSubBase}
+
+ texture {
+ pigment {
+ cells
+ color_map {
+ [.25 rgbf <colSub.x*0.5,colSub.y*0.5,colSub.z*0.5,0>]
+ [.75 rgbf <colSub.x,colSub.y,colSub.z,1>]
+ }
+ scale <100,.75,1>
+ }
+ scale 5
+ finish {ambient 0 diffuse 0.3 specular 0.05 roughness 0.1}
+ }
+
+ texture {
+ pigment {
+ cells
+ color_map {
+ [0 rgbf <colSub.x*0.5,colSub.y*0.5,colSub.z*0.5,.5>]
+ [1 rgbf <colSub.x,colSub.y,colSub.z,1>]
+ }
+ scale <100,0.25,1>
+ }
+ scale 5
+ translate 1
+ finish {ambient 0 diffuse 0.3 specular 0.05 roughness 0.1}
+ }
+
+ texture{txtLettre}
+ texture{txtSkin}
+
+
+//============================================
+// Mine
+//============================================
+//--------------------------------------------
+// Spikes
+//--------------------------------------------
+
+#declare Spike = union{
+ #declare rSpike1=0.08;
+ #declare rSpike2=rSpike1*0.3;
+ #declare ySpike=0.4;
+ cone{0,rSpike1,y*ySpike,rSpike2}
+ sphere{0,rSpike2 translate y*ySpike}
+ sphere{0,rSpike1*1.5 scale <1,0.3,1>}
+ #declare i=0;#while (i<360) sphere{0,0.015 scale <2,1,2> translate <rSpike1*2.8,-0.04,0> rotate y*i} #declare i=i+30;#end
+ translate y
+}
+
+
+
+
+
+//--------------------------------------------
+// Mine body
+//--------------------------------------------
+#declare rd=seed(0);
+#declare MineBody=union {
+ isosurface {
+ function{x*x+y*y+z*z-1 +f_noise3d(x*10,y*10,z*10)*0.05}
+ max_gradient 2.492
+ contained_by{sphere{0,1}}
+ }
+
+ #declare i=0;
+ #while (i<360)
+ #declare j=0;
+ #while (j<180)
+ object{Spike rotate z*(i+rand(rd)*2) rotate y*(j+rand(rd)*2)}
+ #declare j=j+45;
+ #end
+ #declare i=i+45;
+ #end
+
+ object{Spike rotate 90*y}
+ object{Spike rotate -90*y}
+ rotate 360*rand(rd)
+
+}
+
+//--------------------------------------------
+// Mine cable and decorative collar
+//--------------------------------------------
+#declare rFil=0.03;
+#declare yFil=100;
+#declare MineCable=isosurface{
+ function{f_helix1(x,y,z,3,35,0.35*rFil,0.55*rFil,2,1,0)}
+ contained_by {box {<-rFil,0,-rFil>,<rFil,yFil,rFil>}}
+ max_gradient 2.552
+ scale <1,-1,1>*3 translate -y
+}
+
+
+#declare MineCollar=lathe{
+ cubic_spline
+ 15,
+ <0.058,0.003>,<0.081,0.000>,<0.101,0.055>,<0.099,0.085>,<0.104,0.132>,<0.066,0.152>,
+ <0.095,0.169>,<0.089,0.194>,<0.144,0.227>,<0.143,0.281>,<0.145,0.307>,<0.109,0.325>,
+ <0.067,0.353>,<0.031,0.362>,<0.030,0.363>
+ translate -y*0.363
+}
+
+//--------------------------------------------
+// Mine
+//--------------------------------------------
+#declare Mine=union{
+ object{MineBody}
+ sphere{0,1 scale <0.4,0.14,0.4> translate -y*0.91}
+ #declare i=0;#while (i<360) cylinder{0,-y*0.1,0.02 translate <0.35,-0.91,0> rotate y*i} #declare i=i+30;#end
+ object{MineCollar scale <1.2,2,1.2> translate -y*0.92}
+ object{MineCollar translate -y*2}
+ object{MineCable}
+ texture{txtMine}
+}
+
+
+
+//============================================
+// Submarine
+//============================================
+#declare Sc=3; // general scaling parameter
+#declare SX=6*Sc; // x scaling
+#declare SYbot=10*Sc;// y scaling for the bottom
+#declare SYtop=2*Sc; // y scaling for the top
+#declare SZfront=20*Sc; // z scaling for the front
+#declare SZrear=100*Sc;// z scaling for the rear
+
+//--------------------------------------------
+// Main parts
+//--------------------------------------------
+#declare Part1=blob{ // bottom front
+ threshold 0.6
+ sphere{0,1,1}
+ cylinder{-z*2,z,0.04,-1 translate <-0.2,-0.3,1> pigment{Black}}
+ cylinder{-z*2,z,0.04,-1 translate <-0.17,-0.18,1> pigment{Black}}
+ sphere{0,1,1 scale <0.1,0.45,1.05>}
+ sphere{0,1,1 scale <0.3,0.45,0.8>}
+}
+#declare Part2=blob{ // top front
+ threshold 0.6
+ sphere{0,1,1}
+ sphere{0,1,1 scale <0.3,0.45,0.8>}
+ sphere{0,1,1 scale <0.2,1.2,1.05>}
+}
+#declare Part3=blob{ // bottom rear
+ threshold 0.6
+ sphere{0,1,1}
+ cylinder{-x,0,1,1 scale <0.5,0.03,0.02> translate <0,-0.05,0.45>}
+ cylinder{-y,0,1,1 scale <0.03,0.2,0.02> translate <0,-0.05,0.45>}
+}
+#declare Part4=blob{ // top rear
+ threshold 0.6
+ sphere{0,1,1}
+ cylinder{-y,y,2,2 scale <0.03,0.3,0.012> translate <0,0.5,0.45>}
+ sphere{0,1,1 scale <0.2,1.2,0.4>}
+
+ cylinder{-x,0,1,1 scale <0.2,0.2,0.04> rotate x*-10 translate <0,1.5,0.2>}
+ cylinder{0,y,0.2,2 scale <0.6,2.5,0.4>*0.7 translate <0,-0.05,0.16>}
+ cylinder{0,y,0.2,2 scale <0.4,2.5,0.4>*0.7 translate <0,-0.05,0.165>}
+ cylinder{0,y,0.2,2 scale <0.2,2.5,0.4>*0.7 translate <0,-0.05,0.17>}
+}
+
+
+//--------------------------------------------
+// Top
+//--------------------------------------------
+#declare HalfSubTop=union{
+ difference{
+ object{Part2} // top front
+ plane{y,0}
+ plane{z,0 inverse}
+ plane{x,0 inverse}
+ scale <SX,SYtop,SZfront>
+ }
+ difference{
+ object{Part4} // top rear
+ plane{y,0}
+ plane{z,0}
+ plane{x,0 inverse}
+ scale <SX,SYtop,SZrear>
+ }
+}
+#declare SubTop=union{
+ object{HalfSubTop}
+ object{HalfSubTop scale <-1,1,1>}
+ texture{txtSubTop}
+}
+//--------------------------------------------
+// Bottom
+//--------------------------------------------
+#declare HalfSubBottom=union{
+ difference{
+ object{Part1} // bottom front
+ plane{y,0 inverse}
+ plane{z,0 inverse}
+ plane{x,0 inverse}
+ scale <SX,SYbot,SZfront>
+ }
+ difference{
+ object{Part3} // bottom rear
+ plane{y,0 inverse}
+ plane{z,0}
+ plane{x,0 inverse}
+ scale <SX,SYbot,SZrear>
+ }
+}
+
+#declare SubBottom=union{
+ object{HalfSubBottom}
+ object{HalfSubBottom scale <-1,1,1>}
+ texture{txtSubBottom}
+}
+//--------------------------------------------
+// Decorative elements
+//--------------------------------------------
+#declare Balustrade=union{
+ #declare rB1=0.02;
+ #declare rB2=0.04;
+ #declare yB=1;
+ #declare rB3=yB*6;
+ #declare rB4=3;
+ #declare zB=20;
+ #declare zB2=8;
+ #declare i=0;
+ #while (i<zB)
+ cylinder{0,y*yB,rB1 translate z*i}
+ #declare i=i+zB/12;
+ #end
+ cylinder{0,z*zB,rB2 translate y*yB}
+ cylinder{0,z*zB,rB2 translate y*yB*0.3}
+ cylinder{0,z*zB,rB2 translate y*yB*0.6}
+ union{
+ difference{torus{rB3,rB2 rotate z*90} plane{y,0} plane{z,0 inverse} plane{z,0 rotate x*-45}}
+ cylinder{0,-z*zB*0.1,rB2 translate y*rB3 rotate x*-45}
+ translate y*(yB-rB3)
+ }
+ union{
+ difference{torus{rB4,rB2} plane{x,0 inverse} translate <0,yB,0>}
+ difference{torus{rB4,rB1} plane{x,0 inverse} translate <0,yB*0.5,0>}
+ #while (i<180)
+ cylinder{0,y*yB,rB1 translate -z*rB4 rotate y*i}
+ #declare i=i+180/14;
+ #end
+ scale <0.4,1,1>
+ translate z*(rB4+zB)
+ }
+ union{
+ difference{torus{rB3,rB2 rotate z*90} plane{y,0} plane{z,0 inverse} plane{z,0 rotate x*-65}}
+ cylinder{0,-z*zB*0.1,rB2 translate y*rB3 rotate x*-65}
+ translate y*(yB-rB3)
+ scale <1,1,-1>
+ translate z*(zB+rB4*2)
+ }
+
+}
+
+
+
+//--------------------------------------------
+// guns
+//--------------------------------------------
+#declare Guns0=union{
+ superellipsoid{<0.3,0.3> translate z scale <0.8,1,4>}
+ union{
+ cone{0,0.4,z*12,0.3}
+ union{
+ cone{0,0.3,z*1.5,0.5}
+ difference{
+ sphere{0,0.5}
+ cylinder{-z,z,0.3}
+ translate z*1.5
+ }
+ translate z*12
+ }
+ translate z*8
+ }
+ translate -z*3
+}
+
+#declare Wheel=blob{
+ threshold 0.6
+ sphere{0,1.3,1 scale <1,1.2,1>}
+ cylinder{0,-y*3,0.8,1}
+ #declare Teta=0;
+ #while (Teta<360)
+ cylinder{0,x*3.4,0.4,1 rotate y*Teta}
+ cylinder{0,y,0.4,1 translate x*3 rotate y*Teta}
+ sphere{0,0.6,1 translate x*3 rotate y*Teta}
+ sphere{0,0.4,1 translate x*3 rotate y*(Teta+6)}
+ sphere{0,0.4,1 translate x*3 rotate y*(Teta+12)}
+ sphere{0,0.4,1 translate x*3 rotate y*(Teta+18)}
+ sphere{0,0.4,1 translate x*3 rotate y*(Teta+24)}
+ sphere{0,0.4,1 translate x*3 rotate y*(Teta+30)}
+ sphere{0,0.4,1 translate x*3 rotate y*(Teta+36)}
+ sphere{0,0.4,1 translate x*3 rotate y*(Teta+42)}
+ sphere{0,0.4,1 translate x*3 rotate y*(Teta+48)}
+ sphere{0,0.4,1 translate x*3 rotate y*(Teta+54)}
+ sphere{0,0.5,1 translate x*3 rotate y*(Teta+60)}
+ sphere{0,0.5,1 translate x*3 rotate y*(Teta+66)}
+ #declare Teta=Teta+72;
+ #end
+}
+#declare Guns1=union{
+ object{Guns0}
+ object{Wheel rotate y*10 scale 0.7 rotate z*90 translate -x*1.5}
+
+}
+#declare Eye=union{
+ torus{4.5,0.5}
+ difference{
+ sphere{0,4.3}
+ box{-5,5 scale <1,1,0.05>}
+ box{-5,5 scale <1,1,0.05> translate z}
+ box{-5,5 scale <1,1,0.05> translate z*2}
+ box{-5,5 scale <1,1,0.05> translate z*3}
+ box{-5,5 scale <1,1,0.05> translate z*4}
+ box{-5,5 scale <1,1,0.05> translate -z}
+ box{-5,5 scale <1,1,0.05> translate -z*2}
+ box{-5,5 scale <1,1,0.05> translate -z*3}
+ box{-5,5 scale <1,1,0.05> translate -z*4}
+ scale <1,0.7,1>
+ }
+}
+#declare Ring1=union{
+ cylinder{-0.2*x,0.2*x,1.2}
+ torus{1.1,0.1 rotate z*90 scale <2,1,1> translate -x*0.2}
+ torus{1.1,0.1 rotate z*90 scale <2,1,1> translate x*0.2}
+}
+#declare Elbow1=intersection{torus{2,1} plane{z,0 inverse} plane{x,0 inverse} }
+
+
+#declare Thingie=union{
+ torus{1.5,0.3 rotate z*90 translate -x}
+ cylinder{-x,x,1.5}
+ superellipsoid{<0.2,0.2> scale <1.5,2,2.5> translate x*2.5}
+ object{Eye scale 1.5/7 rotate -x*90 translate <2.5,0,-2.5>}
+ object{Eye scale 1.5/7 rotate -x*90 translate <2.5,0,-2.5> scale <1,1,-1>}
+ sphere{0,1.5 scale <0.5,1,1> translate x*4}
+ sphere{0,1.5 scale <0.5,1,1> translate x*16}
+ cylinder{x*4,x*16,1.2}
+ torus{1.9,0.1 rotate z*90 translate x*16.5}
+ cylinder{x*16.5,x*17.5,2}
+ torus{1.9,0.1 rotate z*90 translate x*17.5}
+ cylinder{x*17.5,x*23,1.5}
+ union{
+ torus{0.5,0.1}
+ intersection{torus{2.5,0.5 rotate x*90} plane{y,0 inverse} plane{x,0} translate x*2.5}
+ torus{0.5,0.1 translate -x*2.5 rotate z*-30 translate x*2.5 }
+ torus{0.5,0.1 translate -x*2.5 rotate z*-60 translate x*2.5 }
+ torus{0.5,0.1 translate -x*2.5 rotate z*-90 translate x*2.5 }
+ union{
+ cylinder{0,9*x,0.5}
+ cylinder{2*x,5*x,0.7}
+ torus{0.5,0.2 rotate z*90 translate x*2}
+ torus{0.7,0.2 scale <0.2,1,1> rotate z*90 translate x*2.3}
+ torus{0.7,0.2 scale <0.2,1,1> rotate z*90 translate x*2.6}
+ torus{0.7,0.2 scale <0.2,1,1> rotate z*90 translate x*2.9}
+ torus{0.7,0.2 scale <0.2,1,1> rotate z*90 translate x*3.2}
+ torus{0.7,0.2 scale <0.2,1,1> rotate z*90 translate x*3.5}
+ torus{0.7,0.2 scale <0.2,1,1> rotate z*90 translate x*3.8}
+ torus{0.7,0.2 scale <0.2,1,1> rotate z*90 translate x*4.1}
+ torus{0.7,0.2 scale <0.2,1,1> rotate z*90 translate x*4.4}
+ torus{0.7,0.2 scale <0.2,1,1> rotate z*90 translate x*4.7}
+ torus{0.5,0.2 rotate z*90 translate x*5}
+ torus{0.5,0.3 rotate z*90 translate x*8}
+ cone{0,0.7,x,0.9 translate x*8}
+ torus{0.9,0.2 rotate z*90 translate x*9}
+ translate <2.5,2.5,0>
+ }
+ translate <2.5,2,1.7>
+ }
+ union{
+ torus{0.5,0.1}
+ intersection{torus{2.5,0.5 rotate x*90} plane{y,0 inverse} plane{x,0} translate x*2.5}
+ torus{0.5,0.1 translate -x*2.5 rotate z*-30 translate x*2.5 }
+ torus{0.5,0.1 translate -x*2.5 rotate z*-60 translate x*2.5 }
+ torus{0.5,0.1 translate -x*2.5 rotate z*-90 translate x*2.5 }
+ union{
+ cylinder{0,9*x,0.5}
+ cylinder{3*x,6*x,0.7}
+ torus{0.5,0.2 rotate z*90 translate x*3}
+ torus{0.7,0.2 scale <0.2,1,1> rotate z*90 translate x*3.3}
+ torus{0.7,0.2 scale <0.2,1,1> rotate z*90 translate x*3.6}
+ torus{0.7,0.2 scale <0.2,1,1> rotate z*90 translate x*3.9}
+ torus{0.7,0.2 scale <0.2,1,1> rotate z*90 translate x*4.2}
+ torus{0.7,0.2 scale <0.2,1,1> rotate z*90 translate x*4.5}
+ torus{0.7,0.2 scale <0.2,1,1> rotate z*90 translate x*4.8}
+ torus{0.7,0.2 scale <0.2,1,1> rotate z*90 translate x*5.1}
+ torus{0.7,0.2 scale <0.2,1,1> rotate z*90 translate x*5.4}
+ torus{0.7,0.2 scale <0.2,1,1> rotate z*90 translate x*5.7}
+ torus{0.5,0.2 rotate z*90 translate x*6}
+ torus{0.5,0.3 rotate z*90 translate x*8}
+ cone{0,0.7,x,0.9 translate x*8}
+ torus{0.9,0.2 rotate z*90 translate x*9}
+ translate <2.5,2.5,0>
+ }
+ translate <2.5,2,-1.7>
+ }
+ union{
+ superellipsoid{<0.2,0.2> scale <1,1.3,2.6>}
+ object{Eye scale 1/7 rotate -x*90 translate z*-2.6}
+ object{Eye scale 1/7 rotate -x*90 translate z*2.6}
+ object{Eye scale 1/7 rotate y*90 translate <0,1.3,1.7>}
+ object{Eye scale 1/7 rotate y*90 translate <0,1.3,-1.7>}
+ cylinder{x,x*3,1}
+ torus{1,0.2 rotate z*90 translate x*3}
+ intersection{torus{4.5,1 rotate x*90} plane{y,0 inverse} plane{x,0 inverse} scale <0.5,1,1> translate <3,-4.5,0>}
+ torus{1,0.3 scale <0.5,4,1> translate <3+2.25,-3,0>}
+ translate <15,4.5,0>
+ }
+ #declare Teta=0;
+ #while (Teta<360)
+ union{
+ box{<0,-0.1,-0.05>,<12,0.1,0.05> translate <4,1.2,0>}
+ cylinder{-x,2*x,0.1 translate y*1.5}
+ sphere{0,0.2 translate <20,1.5,0>}
+ sphere{0,0.1 translate <16.8,2,0>}
+ sphere{0,0.1 translate <17.2,2,0> rotate x*10}
+ cylinder{x*20,x*23,0.18 translate y*1.5}
+ rotate x*Teta
+ }
+ #declare Teta=Teta+20;
+ #end
+
+ translate x
+}
+#declare GunSupport=union{
+ superellipsoid{<0.6,0.6> translate y scale <0.3,3,1> translate -z*2}
+ union{
+ union{
+ superellipsoid{<0.7,0.7> translate y scale <1.5,3.8,1>}
+ #declare i=0;
+ #while (i<6)
+ sphere{0,0.2 translate <-1,i+0.5,0.8>}
+ sphere{0,0.2 translate <0,i+0.1,1>}
+ sphere{0,0.2 translate <1,i+0.5,0.8>}
+ #declare i=i+0.7;
+ #end
+ rotate -x*10 translate z*0.6
+ }
+
+ cylinder{y*4,y*9,0.6}
+ sphere{0,1 scale <4,1,4>}
+ }
+}
+#declare Guns=union{
+ union{
+ object{Thingie rotate y*180 scale 0.5 rotate y*-90 rotate z*45 translate <0,4,5>}
+ superellipsoid{<0.6,0.6> translate -z scale <0.6,1,3> translate -x*0.5}
+ object{Guns1 translate -x*1.7}
+ object{Guns1 translate -x*1.7 scale <-1,1,1>}
+ rotate x*-20
+ translate y*10
+ }
+ object{GunSupport}
+}
+
+#declare GunsBack=union{
+ union{
+ object{Thingie rotate y*180 scale 0.5 rotate y*-90 rotate z*45 translate <0,4,5>}
+ superellipsoid{<0.6,0.6> translate -z scale <0.6,1,3> translate -x*0.5}
+ object{Guns1 translate -x*1.7}
+ object{Guns1 translate -x*1.7 scale <-1,1,1>}
+ rotate x*-5
+ translate y*10
+ }
+ object{GunSupport}
+}
+
+//--------------------------------------------
+// snorkels and vertical thingies
+//--------------------------------------------
+#declare Snorkel1=union{
+ cone{0,0.3,y*2,0.25}
+ cone{y*2,0.25,y*3,0.1}
+ union{
+ difference{sphere{0,1 scale<0.3,0.2,0.3>}plane{y,0 inverse}}
+ difference{sphere{0,1 scale<0.3,0.6,0.3>}plane{y,0}}
+ translate y*3
+ }
+ scale <0.8,1,0.8>
+}
+#declare Snorkel2=blob{
+ threshold 0.6
+ cylinder{-y,y*4,0.2,1}
+ sphere{0,0.4,1 scale <1,1,2> translate y*3.5}
+ sphere{0,0.3,1 scale <3,1,1> translate y*2.5}
+ scale <0.8,1,0.8>
+ }
+#declare Snorkel3=union{
+ blob{
+ threshold 0.6
+ cylinder{0,y*3.4,0.25,1 scale <1,1,3>}
+ cylinder{0,y*5,0.03,1 translate <0,0,-0.5>}
+
+ }
+ union{
+ cylinder{0,y*4,0.03}
+ sphere{0,0.1 translate y*4}
+ translate <-0.1,0,0.5>
+ }
+ scale <0.8,1,0.8>
+}
+
+//--------------------------------------------
+// lots of decorative stuff
+//--------------------------------------------
+#declare nDeco=13;
+#declare Deco=array[nDeco]
+#declare Deco[0]=union{
+ cylinder{0,y*2,0.2}
+ torus{1,0.2 rotate x*90 translate y*3}
+ scale 0.5
+}
+#declare Deco[1]=cone{-y*0.5,0.2,y*4,0.1}
+#declare Deco[2]=blob{
+ threshold 0.6
+ cylinder{-x,x,0.25,1 scale <1,1,2>}
+ cylinder{0,-y,0.21,1 translate -x*0.8}
+ cylinder{0,-y,0.21,1 translate x*0.8}
+ translate y*0.7
+ scale 1
+}
+#declare Deco[3]=object{Deco[2] rotate y*90}
+#declare Deco[4]=torus{1,0.2 rotate z*90}
+#declare Deco[5]=object{Deco[3] rotate y*90 scale <1,1.4,1>}
+#declare Deco[6]=union{
+ cylinder{0,y*0.4,0.1}
+ sphere{0,1 scale <0.1,0.1,0.5> translate y*0.4}
+}
+#declare Deco[7]=difference{sphere{0,1} cylinder{-z,0,0.8} scale <2,0.5,2>translate -y*0.2}
+#declare Deco[8]=difference{sphere{0,1} cylinder{-z,0,0.9} scale <2,0.5,4>translate -y*0.2}
+#declare Deco[9]=cone{0,0.08,y*2,0.03 scale <1,1,2>}
+#declare Deco[10]=sphere{0,1 scale <0.2,0.1,0.4>}
+#declare Deco[11]=object{Deco[4] scale 1.2}
+#declare Deco[12]=object{Deco[5] scale 1.3}
+#declare Ladder=union{
+ #declare i=0;
+ #while (i<9)
+ object{Deco[3] scale 0.8 rotate z*90 translate y*i*0.8}
+ #declare i=i+1;
+ #end
+}
+
+#declare Decos=union{
+ #declare rd=seed(4);
+ #declare Start0=-40;
+ #declare End0=40;
+ #declare nstep=200;
+ #declare i=0;
+ #declare k=0;
+ #while (i<1)
+ #declare j=i;
+ #declare Start=<-rand(rd)*5*(mod(k,2)*2-1),1,(1-j)*Start0+j*End0>;
+ #declare Dir=y;
+ #declare Norm1=<0,0,0>;
+ #declare Inter=trace( SubTop, Start, Dir, Norm1);
+ #if (vlength(Norm1)!=0)
+ #if (vlength(vcross(Norm1,y))<0.9)
+ #declare n=int(rand(rd)*nDeco);
+ object{Deco[n] scale 0.4 mOrient(Inter,Inter+Norm1)}
+ #end
+ #end
+ #declare k=k+1;
+ #declare i=i+1/nstep;
+ #end
+}
+
+
+#declare Submarine=union{
+ union{
+ object{SubTop}
+ object{Decos texture{txtSubTop}}
+ object{Ladder translate <-1.5,4,40>}
+ object{Ladder translate <1.5,4,40>}
+ object{Guns rotate y*180 scale 0.3 translate <0,4,30>}
+ object{GunsBack scale 0.3 translate <0,4,70>}
+ union{
+ object{Snorkel1 translate z*3}
+ object{Snorkel2}
+ object{Snorkel3 translate -z*2}
+ scale 2*<1,1.1,1>
+ translate <0,10,50>
+ }
+ object{Balustrade scale 2.5 translate <-4,2,5>}
+ object{Balustrade scale 2.5 translate <-4,2,5> scale <-1,1,1>}
+ union{
+ object{Balustrade scale 2 translate <-3,2,5>}
+ object{Balustrade scale 2 translate <-3,2,5> scale <-1,1,1>}
+ rotate y*180
+ translate z*100
+ }
+ texture{txtSub0}
+ scale <1,1.3,1>
+ }
+ object{SubBottom}
+}
+
+
+
+//============================================
+// Final
+//============================================
+#declare posSub=<19,5,0>;
+#declare rotSub=-15;
+
+//--------------------------------------------
+// mines
+//--------------------------------------------
+union{
+ light_group{
+ object{Mine rotate y*80 scale 14 }
+ light_source{<-10,-20,-40> color rgb -4 shadowless} // negative light !!!
+ translate <-110, 41, -205>
+ global_lights on
+ }
+ light_group{
+ object{Mine rotate -y*10 scale 8 }
+ light_source{<-10,-20,-40> color rgb -2 shadowless}
+ translate <-75, 25, -165>
+ global_lights on
+ }
+ object{Mine rotate y*125 scale 5 translate <105, -5, -155>}
+ translate y*-8
+}
+union{
+ #declare rd=seed(0);
+ #declare i=0;
+ #while (i<20)
+
+ object{Mine rotate y*125 scale 3 translate <50+rand(rd)*(200+i*10),(0.5-rand(rd))*60,i*30>}
+ object{Mine rotate y*150 scale 3 translate <-50-rand(rd)*(200+i*10),(0.5-rand(rd))*60,i*30>}
+
+ object{Mine rotate y*10 scale 3 translate <50+rand(rd)*(200+i*10),(0.5-rand(rd))*140+50+i*10,i*30>}
+ object{Mine rotate y*37 scale 3 translate <-50-rand(rd)*(200+i*10),(0.5-rand(rd))*140+50+i*10,i*30>}
+ #declare i=i+1;
+ #end
+ rotate y*rotSub translate posSub
+ translate -z*150
+ translate x*30
+}
+//--------------------------------------------
+// submarine and media
+//--------------------------------------------
+union{
+ object{Submarine scale 3/4 translate z*-10 translate y*10}
+ sphere{0,1 scale 410 hollow
+ texture{pigment{Clear}finish{ambient 0 diffuse 0}}
+ interior{
+ media{
+ scattering {5,0.00034 eccentricity 0.7 extinction 0.8}
+ absorption <255-23,255-171,255-239>*0.0005/255
+ intervals 3
+ method 3
+ }
+ }
+ }
+
+ scale 4
+ rotate y*rotSub translate posSub
+}
diff --git a/render_povray/templates_pov/biscuit.pov b/render_povray/templates_pov/biscuit.pov
new file mode 100644
index 00000000..aab90fab
--- /dev/null
+++ b/render_povray/templates_pov/biscuit.pov
@@ -0,0 +1,370 @@
+// This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
+// To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a
+// letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.
+
+//oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo//
+// //
+// Windows users: to start rendering this image, press Alt+G or the 'Run' //
+// button on the toobar. //
+// //
+// Experienced windows users: try right-clicking on the line below ... //
+// //
+// +w320 +h240
+// +w800 +h600 +a0.3 +am2
+// //
+// See the docs for full explanations of new features such as the above. //
+// //
+//oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo//
+
+// Persistence Of Vision raytracer sample file.
+// Copyright 2001 Fabien Mosen
+//
+// Updated: 2013/02/15 for 3.7
+//
+#version 3.6;
+global_settings{ assumed_gamma 1.3 max_trace_level 5}
+
+#include "colors.inc"
+#include "functions.inc"
+#include "logo.inc"
+
+
+camera{ location <20,40,28>
+ angle 40 // direction 2*z
+ right x*image_width/image_height // keep propotions with any aspect ratio
+ look_at <0,2,0>
+ }
+
+light_source {<-140,200, 300> rgb <1.0, 1.0, 0.95>*1.5}
+light_source {< 140,200,-300> rgb <0.9, 0.9, 1.00>*0.9 shadowless}
+
+#declare r1 = seed(0);
+
+//----------------------- THE TABLE
+#declare Pig_1 =
+pigment {
+ gradient z
+ color_map {
+ [0.00, rgb <0.01, 0.59, 0.81>]
+ [0.70, rgb <0.01, 0.59, 0.81>]
+ [0.70, rgb <0.98, 0.98, 0.87>]
+ [1.00, rgb <0.98, 0.98, 0.87>]
+ }
+ frequency 4
+}
+#declare Pig_2 =
+pigment {
+ bozo
+ color_map {
+ [0.00, rgb <0.35, 0.58, 0.88>*1.0]
+ [0.25, rgb <0.35, 0.58, 0.88>*1.1]
+ [0.50, rgb <0.35, 0.58, 0.88>*0.9]
+ [0.75, rgb <0.35, 0.58, 0.88>*1.0]
+ [1.00, rgb <0.35, 0.58, 0.88>*0.8]
+ }
+ scale 0.1
+}
+
+#declare Nappe =
+cylinder {0,y*-1,50
+ texture {
+ pigment {
+ gradient x
+ pigment_map {
+ [0.0, Pig_1]
+ [0.5, Pig_1]
+ [0.5, Pig_2]
+ [1.0, Pig_2]
+ }
+ warp {turbulence .05 octaves 2}
+ }
+ normal {quilted 0.6 scale 0.025 warp {turbulence 0.05 octaves 2}}
+ scale 5
+ translate 10
+ }
+}
+
+object {Nappe}
+
+//----------------------- BISCUITS
+#declare Tex_Biscuit =
+texture {
+ pigment {color rgb <0.98, 0.83, 0.58>}
+ normal {dents 1.2 scale 0.01}
+ finish {phong 0 brilliance 0.7}
+}
+
+#declare Base_Biscuit =
+union {
+ blob {
+ threshold 0.7
+ #declare I = 0;
+ #while (I < 359)
+ sphere {<4,0,0>, 1+rand(r1)*0.1, 1 rotate y*I}
+ #declare I = I+(360/28);
+ #end
+ }
+ cylinder {<0,0,0>, <0,0.5,0>, 4}
+ texture {Tex_Biscuit}
+}
+
+#declare Chocolate =
+union {
+ difference {
+ cone {<0,0,0>, 4.2, <0,0.4,0>, 4}
+ cone {<0,0.1,0>, 3.6, <0,0.401,0>, 3.75}
+ }
+ torus {
+ 3.55, 0.1
+ translate y*0.2
+ clipped_by {torus {3.55+0.1, 0.1 translate y*0.1}}
+ }
+ union {
+ #declare I = -4;
+ #while (I < 4)
+ cylinder {<-4,0.1,I>,<4,0.1,I>, 0.05}
+ #declare I = I+0.5;
+ #end
+ clipped_by {cone {<0,0,0>, 4.2, <0,0.4,0>, 4}}
+ }
+ torus {3.96, 0.04 translate y*0.4}
+ torus {3.79, 0.04 translate y*0.4}
+}
+
+#declare LogoFun =
+object{Povray_Logo_Prism rotate x*90 scale 2.2 translate -0.3*z}
+
+#declare ProjLogo =
+blob {
+ threshold 0.6
+ #declare I = 0;
+ #while (I < 1)
+ #declare Pos = <-2+rand(r1)*4, 0, -2+rand(r1)*4>;
+ #if (inside(LogoFun,Pos))
+ sphere {Pos, 0.08, 1}
+ #end
+ #declare I = I+0.0002;
+ #end
+}
+
+#declare Black_Chocolate =
+texture {
+ pigment {color rgb <0.24, 0.10, 0.03>}
+ normal {wrinkles 0.2}
+ finish {specular 0.3}
+ }
+#declare Milk_Chocolate =
+texture {
+ pigment {color rgb <0.48, 0.26, 0.13>}
+ normal {wrinkles 0.2}
+ finish {specular 0.2}
+}
+#declare White_Chocolate =
+texture {
+ pigment {color rgb <0.96, 0.95, 0.75>}
+ normal {wrinkles 0.2}
+ finish {ambient 0.3 specular 0.01}
+}
+
+#declare Icing = texture {
+ pigment {rgbf <0.95, 0.95, 1.00, 0.1>*1.2}
+ normal {bumps 0.1}
+}
+
+#declare Biscuit_1 =
+union {
+ object {Base_Biscuit}
+ object {Chocolate translate y*0.5 texture {Black_Chocolate}}
+ disc {
+ <0,0.101,0>, y, 3.6
+ translate y*0.5
+ texture {Black_Chocolate} normal {bumps 0.3 scale 0.05}
+ }
+ object {ProjLogo scale 1.5 rotate y*-90 translate <-0.4,0.6,0.5> texture {Icing}}
+ translate y*0.5
+}
+#declare Biscuit_2 =
+union {
+ object {Base_Biscuit}
+ object {Chocolate translate y*0.5 texture {Milk_Chocolate}}
+ disc {
+ <0,0.101,0>, y, 3.6
+ translate y*0.5
+ texture {Milk_Chocolate} normal {bumps 0.3 scale 0.05}
+ }
+ object {ProjLogo scale 1.5 rotate y*-90 translate <-0.4,0.6,0.5> texture {White_Chocolate}}
+ translate y*0.5
+}
+#declare Biscuit_3 =
+union {
+ object {Base_Biscuit}
+ object {Chocolate translate y*0.5 texture {White_Chocolate}}
+ disc {
+ <0,0.101,0>, y, 3.6
+ translate y*0.5
+ texture {White_Chocolate} normal {bumps 0.3 scale 0.05}
+ }
+ object {ProjLogo scale 1.5 rotate y*-90 translate <-0.4,0.6,0.5> texture {Milk_Chocolate}}
+ translate y*0.5
+}
+
+object {Biscuit_2 rotate y*-80 translate <-3.5,0,2>}
+object {Biscuit_1 rotate y*-120 translate <3.5,0,-4>}
+object {Biscuit_3 rotate x*-4 translate <8.5,0.9,0>}
+
+#macro SevenBiscuits (Bisc,Num)
+ union {
+ #declare I = 0;
+ #while (I < Num)
+ object {Bisc translate x*9 rotate y*60*I}
+ #declare I = I+1;
+ #end
+ object {Bisc}
+ }
+#end
+
+//----------------------- CRUMBS
+#declare Fun_Sphere = function {x*x + y*y +z*z}
+
+#declare Crumb =
+isosurface {
+ function {Fun_Sphere(x,y,z) + f_noise3d(x*2,y*2,z*2)*1}
+ threshold 1
+ max_gradient 3.9
+ //max_gradient 15
+ accuracy 0.01
+ contained_by {box {-1,1}}
+ scale 0.5
+}
+
+#declare r1 = seed(0);
+
+#declare I = 0;
+#while (I < 1)
+ object {
+ Crumb
+ rotate rand(r1)*360
+ scale 0.2+rand(r1)*0.3
+ translate <rand(r1)*10,0,rand(r1)*10>
+ texture {Tex_Biscuit}
+ }
+ object {
+ Crumb
+ rotate rand(r1)*360
+ scale 0.1+rand(r1)*0.15
+ translate <rand(r1)*10,0,rand(r1)*10>
+ texture {Tex_Biscuit}
+ }
+ #declare I = I+0.03;
+#end
+
+//----------------------- METAL BOX
+#declare Pig3 =
+pigment {
+ gradient y
+ color_map {
+ [0, rgb <0.1, 0.5, 0.7>]
+ [1, rgb <0.7, 0.6, 0.4>]
+ }
+ scale 0.5
+}
+
+#declare Pig4 =
+pigment {
+ crackle
+ color_map {
+ [0, rgb <1.0, 0.5, 0.6>]
+ [1, rgb <0.0, 0.0, 0.0>]
+ }
+ scale 0.2
+}
+
+#declare MetalBoxPig =
+pigment {
+ radial frequency 60
+ pigment_map {
+ [0.0, Pig3]
+ [0.5, Pig3]
+ [0.5, Pig4]
+ [1.0, Pig4]
+ }
+}
+
+#declare BiscuitBox =
+union {
+ difference {
+ cylinder {<0,0,0>, <0,5,0>, 14}
+ cylinder {<0,0.1,0>, <0,5.1,0>, 13.9}
+ }
+ torus {14, 0.1 translate y*5}
+ torus {14, 0.1 translate y*0.1}
+ torus {14, 0.1 scale <1,2,1> translate y*4}
+ cylinder {
+ <0,0.3,0>,<0,3.5,0>, 14.01 open
+ pigment {MetalBoxPig}
+ finish {phong 0.8 reflection {0.01, 0.15}}
+ }
+ pigment {Gray60}
+ finish {phong 0.8 metallic reflection {0.5, 0.7}}
+}
+
+union {
+ object {BiscuitBox}
+ object {SevenBiscuits (Biscuit_1,6)}
+ object {SevenBiscuits (Biscuit_3,6) rotate y*30 translate y*1}
+ object {SevenBiscuits (Biscuit_2,5) rotate y*0 translate y*2}
+ rotate y*-75 translate <-18,0,-12>
+}
+
+//-----------------------CUP OF TEA
+#declare TeaCup =
+union {
+ difference {
+ cylinder {<0,1.2,0>, <0,6,0>, 4.2}
+ cylinder {<0,1,0>, <0,6.2,0>, 3.8}
+ }
+
+ difference {
+ cylinder {<0,0.2,0>, <0,2.5,0>, 4}
+ torus {2.8, 1 translate y*2.5}
+ torus {4, 1 translate y*0}
+ cylinder {<0,1.5,0>, <0,2.6,0>, 2.8}
+ }
+
+ difference {
+ #declare LiquidLevel = 5;
+ cylinder {<0,1.4,0>, <0,LiquidLevel,0>, 4}
+ torus {3.6, 0.2 translate y*LiquidLevel}
+ cylinder {<0,LiquidLevel-0.2,0>,<0,LiquidLevel+0.3,0>,3.6}
+ pigment {Orange*0.8 filter 0.6}
+ finish {phong 0.7 reflection 0.15}
+ normal {bumps 0.05 scale 1}
+ }
+
+ torus {4.0, 0.2 translate y*6.0}
+ torus {4.0, 0.2 translate y*1.2}
+ torus {2.8, 0.2 translate y*0.2}
+
+ union {
+ difference {
+ cylinder {<0.2,0,0>,<-0.2,0,0>,0.5}
+ torus {0.5, 0.2 rotate z*90 translate x*0.2}
+ translate y*1.25
+ }
+ difference {
+ cylinder {<0.2,0,0>,<-0.2,0,0>,0.5}
+ torus {0.5, 0.2 rotate z*90 translate x*0.2}
+ translate y*-1.25
+ }
+ torus {1.25, 0.3 rotate x*90 clipped_by {plane {x,0 inverse}} translate x*0.8}
+ cylinder {<0,-1.25,0>,<0.8,-1.25,0>,0.3}
+ cylinder {<0,1.25,0>,<0.8,1.25,0>,0.3}
+ scale <1,1,1.5> translate <4.2,4,0> rotate y*-90
+ }
+
+ pigment {White}
+ normal {bumps 0.05 scale 3}
+ finish {phong 0.8 reflection 0.1}
+}
+
+object {TeaCup rotate y*50 translate <4,0,-14>}
diff --git a/render_povray/templates_pov/bsp_Tango.pov b/render_povray/templates_pov/bsp_Tango.pov
new file mode 100644
index 00000000..da5c0945
--- /dev/null
+++ b/render_povray/templates_pov/bsp_Tango.pov
@@ -0,0 +1,61 @@
+// This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
+// To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a
+// letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.
+
+// Persistence Of Vision Raytracer sample file.
+// BSP test scene by Lance Birch - thezone.firewave.com.au
+// Render with +BM2 to enable BSP tree bounding (POV-Ray v3.7 beta 12 or later).
+
+/***************************************************************
+ * $File: //depot/povray/smp/distribution/scenes/bsp/Tango.pov $
+ * $Revision: #1 $
+ * $Change: 5418 $
+ * $DateTime: 2011/03/06 09:25:00 $
+ * $Author: jholsenback $
+ **************************************************************/
+
+#version 3.7;
+
+global_settings {assumed_gamma 1.0}
+#default {texture {finish {ambient 0.03}} pigment {rgb 1}}
+background {rgb 1}
+
+camera {ultra_wide_angle location <0,0,-55> look_at <0,0,0> angle 100 rotate <0,32,45> translate <-25,-25,0>}
+light_source {0*x color rgb 2.9 area_light <8,0,0> <0,0,8> 8, 8 adaptive 2 jitter circular orient translate <100,0,-100>}
+
+#declare StrandCorner = difference {
+ cylinder {<0,0,0> <0,0,.1> 1}
+ cylinder {<0,0,-0.1> <0,0,.2> .25}
+ box {<-1.1,1.1,-0.1> <1.1,0,.2>}
+ box {<-1.1,1.1,-0.1> <0,-1.1,.2>}
+};
+
+#declare S = seed(12);
+#declare CStrand = 1;
+#declare CDir = 1;
+
+#while (CStrand <= 300)
+ #declare StartOffset = (rand(S)*30)-15;
+ #declare CHeight = <70-StartOffset,70+StartOffset,-CStrand/10>;
+
+ #while ((CHeight.y > -45) & (CHeight.x > -45))
+ #declare CDir = -CDir;
+ #declare StrandSegLength = floor(rand(S)*12)+1;
+ #if (CDir = 1)
+ box {CHeight+<-0.375,0,0> CHeight+<0.375,-StrandSegLength,.1>}
+ #declare CHeight = CHeight + <-0.625,-(StrandSegLength+0.625),0>;
+ object {StrandCorner translate CHeight+<0,0.625,0>}
+ #else
+ box {CHeight+<0,-0.375,0> CHeight+<-StrandSegLength,0.375,.1>}
+ #declare CHeight = CHeight + <-(StrandSegLength+0.625),-0.625,0>;
+ object {StrandCorner rotate <0,0,180> translate CHeight+<0.625,0,0>}
+ #end
+ #end
+ #if (CDir = 1)
+ object {StrandCorner rotate <0,0,270> translate CHeight+<0,0.625,0>}
+ #else
+ object {StrandCorner rotate <0,0,270> translate CHeight+<0.625,0,0>}
+ #end
+
+ #declare CStrand = CStrand + 1;
+#end
diff --git a/render_povray/templates_pov/chess2.pov b/render_povray/templates_pov/chess2.pov
new file mode 100644
index 00000000..b52070d6
--- /dev/null
+++ b/render_povray/templates_pov/chess2.pov
@@ -0,0 +1,727 @@
+// This work is licensed under the POV-Ray v3.7 distribution license.
+// To view a copy of this license, visit http://www.povray.org/licences/v3.7/.
+
+// Persistence Of Vision raytracer sample file.
+// POV-Ray scene description for chess board.
+// By Ville Saari
+// Copyright (c) 1991 Ferry Island Pixelboys
+//
+// This scene has 430 primitives in objects and 41 in bounding shapes and
+// it takes over 40 hours to render by standard amiga.
+//
+// If you do some nice modifications or additions to this file, please send
+// me a copy. My Internet address is: vsaari@niksula.hut.fi
+//
+// -w320 -h240
+// -w800 -h600 +a0.3
+
+// Note : CHESS2.POV was created from Ville Saari's chess.pov
+// -- Dan Farmer 1996
+// - Cchanged textures
+// - Added camera blur and changed focal length
+// - Use sky sphere
+// - Modularized the code
+// - Added felt pads to bottom of pieces
+
+// remaining manual bounding commented out by Bob Hughes, August 31, 2001
+
+#version 3.6;
+
+global_settings {
+ assumed_gamma 2.2
+ }
+
+#include "shapes.inc"
+#include "colors.inc"
+#include "textures.inc"
+#include "skies.inc"
+#include "metals.inc"
+#include "woods.inc"
+
+#declare FB_Quality_Off = 0;
+#declare FB_Quality_Fast = 1;
+#declare FB_Quality_Default = 2;
+#declare FB_Quality_High = 3;
+
+#declare FB_Quality= FB_Quality_High;
+
+camera {
+ location <59, 20, -55>
+ direction <0, 0, 2>
+ up <0, 1, 0>
+ right x*image_width/image_height // keep propotions with any aspect ratio
+ look_at <0, -1, 1>
+
+#if(FB_Quality != FB_Quality_Off)
+ aperture 2.25
+ focal_point <0, 0, 0>
+#end
+
+#switch(FB_Quality)
+#case(FB_Quality_Off)
+ aperture 0
+ #debug "\nNo focal blur used...\n"
+#break
+#case (FB_Quality_Fast)
+ blur_samples 7
+ confidence 0.5 // default is 0.9
+ variance 1/64 // default is 1/128 (0.0078125)
+ #debug "\nFast focal blur used...\n"
+#break
+#case(FB_Quality_Default)
+ blur_samples 19
+ confidence 0.90 // default is 0.9
+ variance 1/128 // default is 1/128 (0.0078125)
+ #debug "\nDefault focal blur used...\n"
+#break
+#case(FB_Quality_High)
+ blur_samples 37
+ confidence 0.975 // default is 0.9
+ variance 1/255 // default is 1/128 (0.0078125)
+ #debug "\nHigh Quality focal blur used...\n"
+#break
+#else
+ #debug "\nNo focal blur used...\n"
+#end
+}
+
+light_source { <800, 600, -200> colour White }
+
+#declare PawnBase =
+union {
+ intersection {
+ sphere { <0, 0, 0>, 2.5 }
+ plane { -y, 0 }
+ }
+ cylinder { 0, y*0.35, 2.5 pigment { green 0.65 } }
+}
+
+#declare PieceBase =
+union {
+ intersection {
+ sphere { <0, 0, 0>, 3 }
+ plane { -y, 0 }
+ }
+ cylinder { 0, y*0.35, 3.0 pigment { green 0.65 } }
+}
+
+#declare Pawn = union {
+ sphere { <0, 7, 0>, 1.5 }
+
+ sphere { <0, 0, 0>, 1
+ scale <1.2, 0.3, 1.2>
+ translate 5.5*y
+ }
+
+ intersection {
+ plane { y, 5.5 }
+ object {
+ Hyperboloid_Y
+ translate 5*y
+ scale <0.5, 1, 0.5>
+ }
+ plane { -y, -2.5 }
+ }
+
+ sphere { <0, 0, 0>, 1
+ scale <2, 0.5, 2>
+ translate <0, 2.3, 0>
+ }
+ object { PawnBase }
+}
+
+
+#declare Rook = union {
+ intersection {
+ union {
+ plane { +x, -0.5 }
+ plane { -x, -0.5 }
+ plane { y, 9 }
+ }
+
+ union {
+ plane { +z, -0.5 }
+ plane { -z, -0.5 }
+ plane { y, 9 }
+ }
+
+ plane { y, 10 }
+ object { Cylinder_Y scale <2, 1, 2> }
+ object { Cylinder_Y scale <1.2, 1, 1.2> inverse }
+ plane { -y, -8 }
+ }
+
+ intersection {
+ plane { y, 8 }
+ object { Hyperboloid_Y
+ scale <1, 1.5, 1>
+ translate 5.401924*y
+ }
+ plane { -y, -3 }
+ }
+
+ sphere { <0, 0, 0>, 1
+ scale <2.5, 0.5, 2.5>
+ translate 2.8*y
+ }
+
+ object { PieceBase }
+}
+
+#declare Knight = union {
+ intersection {
+ object { Cylinder_Z
+ scale <17.875, 17.875, 1>
+ translate <-18.625, 7, 0>
+ inverse
+ }
+
+ object { Cylinder_Z
+ scale <17.875, 17.875, 1>
+ translate <18.625, 7, 0>
+ inverse
+ }
+
+ object { Cylinder_X
+ scale <1, 5.1, 5.1>
+ translate <0, 11.2, -5>
+ inverse
+ }
+
+ union {
+ plane { y, 0
+ rotate 30*x
+ translate 9.15*y
+ }
+ plane { z, 0
+ rotate -20*x
+ translate 10*y
+ }
+ }
+
+ union {
+ plane { -y, 0
+ rotate 30*x
+ translate 7.15*y
+ }
+ plane { y, 0
+ rotate 60*x
+ translate 7.3*y
+ }
+ }
+
+ union {
+ plane { y, 0
+ rotate -45*z
+ }
+ plane { y, 0
+ rotate 45*z
+ }
+ translate 9*y
+ }
+
+ object { Cylinder_Y scale <2, 1, 2> }
+ sphere { <0, 7, 0>, 4 }
+ }
+
+ sphere { <0, 0, 0>, 1
+ scale <2.5, 0.5, 2.5>
+ translate <0, 2.8, 0>
+ }
+
+ object { PieceBase }
+}
+
+#declare Bishop = union {
+ sphere { <0, 10.8, 0>, 0.4 }
+
+ intersection {
+ union {
+ plane { -z, -0.25 }
+ plane { +z, -0.25 }
+ plane { y, 0 }
+ rotate 30*x
+ translate 8.5*y
+ }
+
+ sphere { <0, 0, 0>, 1
+ scale <1.4, 2.1, 1.4>
+ translate 8.4*y
+ }
+
+ plane { -y, -7 }
+ }
+
+ sphere { <0, 0, 0>, 1
+ scale <1.5, 0.4, 1.5>
+ translate 7*y
+ }
+
+ intersection {
+ plane { y, 7 }
+ object {
+ Hyperboloid_Y
+ scale <0.6, 1.4, 0.6>
+ translate 7*y
+ }
+ plane { -y, -3 }
+ }
+
+ sphere { <0, 0, 0>, 1
+ scale <2.5, 0.5, 2.5>
+ translate 2.8*y
+ }
+
+ object { PieceBase }
+}
+
+#declare QueenAndKing = union {
+ sphere { <0, 10.5, 0>, 1.5 }
+
+ intersection {
+ union {
+ sphere { <1.75, 12, 0>, 0.9 rotate 150*y }
+ sphere { <1.75, 12, 0>, 0.9 rotate 120*y }
+ sphere { <1.75, 12, 0>, 0.9 rotate 90*y }
+ sphere { <1.75, 12, 0>, 0.9 rotate 60*y }
+ sphere { <1.75, 12, 0>, 0.9 rotate 30*y }
+ sphere { <1.75, 12, 0>, 0.9 }
+ sphere { <1.75, 12, 0>, 0.9 rotate -30*y }
+ sphere { <1.75, 12, 0>, 0.9 rotate -60*y }
+ sphere { <1.75, 12, 0>, 0.9 rotate -90*y }
+ sphere { <1.75, 12, 0>, 0.9 rotate -120*y }
+ sphere { <1.75, 12, 0>, 0.9 rotate -150*y }
+ sphere { <1.75, 12, 0>, 0.9 rotate 180*y }
+ inverse
+ }
+
+ plane { y, 11.5 }
+
+ object { QCone_Y
+ scale <1, 3, 1>
+ translate 5*y
+ }
+
+ plane { -y, -8 }
+ }
+
+ sphere { <0, 0, 0>, 1
+ scale <1.8, 0.4, 1.8>
+ translate 8*y
+ }
+
+ intersection {
+ plane { y, 8 }
+ object { Hyperboloid_Y
+ scale <0.7, 1.6, 0.7>
+ translate 7*y
+ }
+ plane { -y, -3 }
+ }
+
+ sphere { <0, 0, 0>, 1
+ scale <2.5, 0.5, 2.5>
+ translate 2.8*y
+ }
+
+ object { PieceBase }
+}
+
+#declare Queen = union {
+ sphere { <0, 12.3, 0>, 0.4 }
+ object { QueenAndKing }
+}
+
+#declare King = union {
+ intersection {
+ union {
+ intersection {
+ plane { y, 13 }
+ plane { -y, -12.5 }
+ }
+
+ intersection {
+ plane { +x, 0.25 }
+ plane { -x, 0.25 }
+ }
+ }
+
+ plane { +z, 0.25 }
+ plane { -z, 0.25 }
+ plane { +x, 0.75 }
+ plane { -x, 0.75 }
+ plane { +y, 13.5 }
+ plane { -y, -11.5 }
+ }
+
+ object { QueenAndKing }
+}
+
+#declare WWood = texture {
+ T_Silver_3B
+}
+
+#declare BWood = texture {
+ T_Gold_3C
+}
+
+#declare WPawn = object {
+ Pawn
+
+ // bounded_by { sphere { <0, 4, 0>, 4.72 } }
+
+ texture {
+ WWood
+ pigment { quick_color red 0.95 green 0.62 }
+ }
+}
+
+#declare BPawn = object {
+ Pawn
+
+ // bounded_by { sphere { <0, 4, 0>, 4.72 } }
+
+ texture {
+ BWood
+ pigment { quick_color red 0.4 green 0.2 }
+ }
+}
+
+#declare WRook = object {
+ Rook
+
+ // bounded_by { sphere { <0, 5, 0>, 5.831 } }
+
+ texture {
+ WWood
+ pigment { quick_color red 0.95 green 0.62 }
+ }
+}
+
+#declare BRook = object {
+ Rook
+
+ // bounded_by { sphere { <0, 5, 0>, 5.831 } }
+
+ texture {
+ BWood
+ pigment { quick_color red 0.4 green 0.2 }
+ }
+}
+
+#declare WKnight = object {
+ Knight
+
+ // bounded_by { sphere { <0, 5, 0>, 5.831 } }
+
+ texture {
+ WWood
+ pigment { quick_color red 0.95 green 0.62 }
+ }
+}
+
+#declare BKnight = object {
+ Knight
+ rotate 180*y
+
+ // bounded_by { sphere { <0, 5, 0>, 5.831 } }
+
+ texture {
+ BWood
+ pigment { quick_color red 0.4 green 0.2 }
+ }
+}
+
+#declare WBishop = object {
+ Bishop
+
+ // bounded_by { sphere { <0, 5.5, 0>, 6.265 } }
+
+ texture {
+ WWood
+ pigment { quick_color red 0.95 green 0.62 }
+ }
+}
+
+#declare BBishop = object {
+ Bishop
+ rotate 180*y
+
+ // bounded_by { sphere { <0, 5.5 ,0>, 6.265 } }
+
+ texture {
+ BWood
+ pigment { quick_color red 0.4 green 0.2 }
+ }
+}
+
+#declare WQueen = object {
+ Queen
+/*
+ bounded_by {
+ intersection {
+ sphere { <0, 6, 0>, 6.71 }
+ object { Cylinder_Y scale <3, 1, 3> }
+ }
+ }
+*/
+ texture {
+ WWood
+ pigment { quick_color red 0.95 green 0.62 }
+ }
+}
+
+#declare BQueen = object {
+ Queen
+/*
+ bounded_by {
+ intersection {
+ sphere { <0, 6, 0>, 6.71 }
+ object { Cylinder_Y scale <3, 1, 3> }
+ }
+ }
+*/
+ texture {
+ BWood
+ pigment { quick_color red 0.4 green 0.2 }
+ }
+}
+
+#declare WKing = object {
+ King
+/*
+ bounded_by {
+ intersection {
+ sphere { <0, 6.5, 0>, 7.16 }
+ object { Cylinder_Y scale <3, 1, 3> }
+ }
+ }
+*/
+ texture {
+ WWood
+ pigment { quick_color red 0.95 green 0.62 }
+ }
+}
+
+#declare BKing = object {
+ King
+/*
+ bounded_by {
+ intersection {
+ sphere { <0, 6.5, 0>, 7.16 }
+ object { Cylinder_Y scale <3, 1, 3> }
+ }
+ }
+*/
+ texture {
+ BWood
+ pigment { quick_color red 0.4 green 0.2 }
+ }
+}
+
+/* Sky */
+#declare SkySphere = sky_sphere { S_Cloud1 }
+
+/* Ground */
+#declare Ground =
+plane { y, -80
+ pigment { green 0.65 }
+ finish {
+ ambient 0.25
+ diffuse 0.5
+ }
+}
+
+#declare FarSide =
+union {
+ object { BPawn translate <-28, 0, 20> }
+ object { BPawn translate <-20, 0, 20> }
+ object { BPawn translate <-12, 0, 20> }
+ object { BPawn translate < -4, 0, 20> }
+ object { BPawn translate < 4, 0, 20> }
+ object { BPawn translate < 12, 0, 20> }
+ object { BPawn translate < 20, 0, 20> }
+ object { BPawn translate < 28, 0, 20> }
+
+ object { BRook translate <-28, 0, 28> }
+ object { BKnight translate <-20, 0, 28> }
+ object { BBishop translate <-12, 0, 28> }
+ object { BQueen translate < -4, 0, 28> }
+ object { BKing translate < 4, 0, 28> }
+ object { BBishop translate < 12, 0, 28> }
+ object { BKnight translate < 20, 0, 28> }
+ object { BRook translate < 28, 0, 28> }
+/*
+ bounded_by {
+ object {
+ Cylinder_X
+ scale <1, 9.56, 9.56>
+ translate <0, 6.5, 24>
+ }
+ }
+*/
+}
+
+#declare NearSide =
+union {
+ object { WPawn translate <-28, 0, -20> }
+ object { WPawn translate <-20, 0, -20> }
+ object { WPawn translate <-12, 0, -20> }
+ object { WPawn translate < -4, 0, -20> }
+ object { WPawn translate < 4, 0, -20> }
+ object { WPawn translate < 12, 0, -20> }
+ object { WPawn translate < 20, 0, -20> }
+ object { WPawn translate < 28, 0, -20> }
+
+ object { WRook translate <-28, 0, -28> }
+ object { WKnight translate <-20, 0, -28> }
+ object { WBishop translate <-12, 0, -28> }
+ object { WQueen translate < -4, 0, -28> }
+ object { WKing translate < 4, 0, -28> }
+ object { WBishop translate < 12, 0, -28> }
+ object { WKnight translate < 20, 0, -28> }
+ object { WRook translate < 28, 0, -28> }
+
+
+}
+
+#declare Pieces =
+union {
+ object { NearSide }
+ object { FarSide }
+/*
+ bounded_by {
+ intersection {
+ plane { y, 13.5 }
+ sphere { -30*y, 63 }
+ }
+ }
+*/
+}
+
+#declare FramePiece =
+intersection {
+ plane { +y, -0.15 }
+ plane { -y, 3 }
+ plane { -z, 35 }
+ plane { <-1, 0, 1>, 0 } // 45 degree bevel
+ plane { < 1, 0, 1>, 0 } // 45 degree bevel
+}
+
+#declare Frame =
+union {
+ union {
+ object { FramePiece }
+ object { FramePiece rotate 180*y }
+ texture {
+ T_Wood20
+ scale 2
+ rotate y*87
+ translate x*1
+ finish {
+ specular 1
+ roughness 0.02
+ ambient 0.35
+ }
+ }
+ }
+
+ union {
+ object { FramePiece rotate -90*y }
+ object { FramePiece rotate 90*y }
+ texture {
+ T_Wood20
+ scale 2
+ rotate y*2
+ finish {
+ specular 1
+ roughness 0.02
+ ambient 0.35
+ }
+ }
+ }
+}
+#declare Board =
+ box { <-32, -1, -32> <32, 0, 32>
+ texture {
+ tiles {
+ texture {
+ pigment {
+ //marble
+ wrinkles
+ turbulence 1.0
+ colour_map {
+ [0.0 0.7 colour White
+ colour White]
+ [0.7 0.9 colour White
+ colour red 0.8 green 0.8 blue 0.8]
+ [0.9 1.0 colour red 0.8 green 0.8 blue 0.8
+ colour red 0.5 green 0.5 blue 0.5]
+ }
+ scale <0.6, 1, 0.6>
+ rotate -30*y
+ }
+ finish {
+ specular 1
+ roughness 0.02
+ reflection 0.25
+ }
+ } // texture
+ tile2
+ texture {
+ pigment {
+ granite
+ scale <0.3, 1, 0.3>
+ colour_map {
+ [0 1 colour Black
+ colour red 0.5 green 0.5 blue 0.5]
+ }
+ }
+ finish {
+ specular 1
+ roughness 0.02
+ reflection 0.25
+ }
+ }
+ } // texture
+ scale <8, 1, 8>
+ } //texture
+ } // intersection
+
+
+
+/* Table */
+#declare Table =
+union {
+ intersection {
+ plane { +y, -3 }
+ plane { -y, 8 }
+ sphere { <0, -5.5, 0>, 55 }
+ }
+
+ intersection {
+ plane { y, -8 }
+ object {
+ Hyperboloid_Y
+ scale <10, 20, 10>
+ translate -20*y
+ }
+ }
+
+ pigment {
+ granite
+ scale 6
+ }
+ finish {
+ specular 1
+ roughness 0.02
+ reflection 0.3
+ }
+}
+
+object { Pieces }
+object { Board }
+object { Frame }
+object { Ground }
+object { Table }
+sky_sphere { SkySphere }
diff --git a/render_povray/templates_pov/cornell.pov b/render_povray/templates_pov/cornell.pov
new file mode 100644
index 00000000..e4b34cd6
--- /dev/null
+++ b/render_povray/templates_pov/cornell.pov
@@ -0,0 +1,130 @@
+// This work is licensed under the Creative Commons Attribution 3.0 Unported License.
+// To view a copy of this license, visit http://creativecommons.org/licenses/by/3.0/
+// or send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View,
+// California, 94041, USA.
+
+// Persistence Of Vision Ray Tracer Scene Description File
+// File: cornell.pov
+// Desc: Radiosity demo scene. See also http://www.Graphics.Cornell.EDU/online/box/
+// Date: August 2001
+// Auth: Kari Kivisalo
+
+// +w300 +h300
+
+#version 3.7;
+global_settings {
+ assumed_gamma 1.0
+ radiosity{
+ pretrace_start 0.04
+ pretrace_end 0.01
+ count 200
+ recursion_limit 3
+ nearest_count 10
+ error_bound 0.5
+ }
+}
+
+#declare Finish=finish{diffuse 0.75 ambient 0}
+
+#declare White=texture{pigment{rgb<1,1,1>} finish{Finish}}
+#declare Red=texture{pigment{rgb<0.57,0.025,0.025>} finish{Finish}}
+#declare Green=texture{pigment{rgb<0.025,0.236,0.025>} finish{Finish}}
+
+#declare LightColor=<1,0.67,0.21>;
+
+#declare N=3; // Divisions per side
+#declare DX=13/N; // Dimensions of sub patches
+#declare DZ=10.5/N;
+
+#declare SubPatch=
+ light_source{
+ <27.8,54.88,27.95>
+ color LightColor*7
+ area_light DX*x, DZ*z, 4, 4 jitter adaptive 0
+ spotlight radius -90 falloff 90 tightness 1 point_at <27.8,0,27.95> // for cosine falloff
+ fade_power 2 fade_distance (DX+DZ)/2
+ }
+
+#declare i=0;#while (i<N)
+ #declare j=0;#while (j<N)
+ light_source{SubPatch translate<i*DX-(13-DX)/2,0,j*DZ-(10.5-DZ)/2>}
+ #declare j=j+1;#end
+#declare i=i+1;#end
+
+
+
+
+camera{
+ location <27.8, 27.3,-80.0>
+ direction <0, 0, 1>
+ up <0, 1, 0>
+ right <-1, 0, 0>
+ angle 39.5
+}
+
+
+// ------------------------ OBJECTS ----------------------------
+
+// Light Patch
+
+box{
+ <21.3,54.87,33.2><34.3,54.88,22.7> no_shadow
+ pigment{rgb<1,1,1>} finish{ambient 0.78 diffuse 0}
+}
+
+union{
+ // Floor
+ triangle{<55.28, 0.0, 0.0>,<0.0, 0.0, 0.0>,<0.0, 0.0, 55.92>}
+ triangle{<55.28, 0.0, 0.0>,<0.0, 0.0, 55.92>,<54.96, 0.0, 55.92>}
+ // Ceiling
+ triangle{<55.60, 54.88, 0.0>,<55.60, 54.88, 55.92>,<0.0, 54.88, 55.92>}
+ triangle{<55.60, 54.88, 0.0>,<0.0, 54.88, 55.92>,<0.0, 54.88, 0.0>}
+ // Back wall
+ triangle{<0.0, 54.88, 55.92>,<55.60, 54.88, 55.92>,<54.96, 0.0, 55.92>}
+ triangle{<0.0, 54.88, 55.92>,<54.96, 0.0, 55.92>,<0.0, 0.0, 55.92>}
+ texture {White}
+}
+
+union {
+ // Right wall
+ triangle{<0.0, 54.88, 0.0>,<0.0, 54.88, 55.92>,<0.0, 0.0, 55.92>}
+ triangle{<0.0, 54.88, 0.0>,<0.0, 0.0, 55.92>,<0.0, 0.0, 0.0>}
+ texture {Green}
+}
+
+union {
+ // Left wall
+ triangle{<55.28, 0.0, 0.0>,<54.96, 0.0, 55.92>,<55.60, 54.88, 55.92>}
+ triangle{<55.28, 0.0, 0.0>,<55.60, 54.88, 55.92>,<55.60, 54.88, 0.0>}
+ texture {Red}
+}
+
+union {
+ // Short block
+ triangle{<13.00, 16.50, 6.50>,<8.20, 16.50, 22.50>,<24.00, 16.50, 27.20>}
+ triangle{<13.00, 16.50, 6.50>,<24.00, 16.50, 27.20>,<29.00, 16.50, 11.40>}
+ triangle{<29.00, 0.0, 11.40>,<29.00, 16.50, 11.40>,<24.00, 16.50, 27.20>}
+ triangle{<29.00, 0.0, 11.40>,<24.00, 16.50, 27.20>,<24.00, 0.0, 27.20>}
+ triangle{<13.00, 0.0, 6.50>,<13.00, 16.50, 6.50>,<29.00, 16.50, 11.40>}
+ triangle{<13.00, 0.0, 6.50>,<29.00, 16.50, 11.40>,<29.00, 0.0, 11.40>}
+ triangle{<8.20, 0.0, 22.50>,<8.20, 16.50, 22.50>,<13.00, 16.50, 6.50>}
+ triangle{<8.20, 0.0, 22.50>,<13.00, 16.50, 6.50>,<13.00, 0.0, 6.50>}
+ triangle{<24.00, 0.0, 27.20>,<24.00, 16.50, 27.20>,<8.20, 16.50, 22.50>}
+ triangle{<24.00, 0.0, 27.20>,<8.20, 16.50, 22.50>,<8.20, 0.0, 22.50>}
+ texture { White }
+}
+
+union {
+ // Tall block
+ triangle{<42.30, 33.00, 24.70>,<26.50, 33.00, 29.60>,<31.40, 33.00, 45.60>}
+ triangle{<42.30, 33.00, 24.70>,<31.40, 33.00, 45.60>,<47.20 33.00 40.60>}
+ triangle{<42.30, 0.0, 24.70>,<42.30, 33.00, 24.70>,<47.20, 33.00, 40.60>}
+ triangle{<42.30, 0.0, 24.70>,<47.20, 33.00, 40.60>,<47.20, 0.0, 40.60>}
+ triangle{<47.20, 0.0, 40.60>,<47.20, 33.00, 40.60>,<31.40, 33.00, 45.60>}
+ triangle{<47.20, 0.0, 40.60>,<31.40, 33.00, 45.60>,<31.40, 0.0 45.60>}
+ triangle{<31.40, 0.0, 45.60>,<31.40, 33.00, 45.60>,<26.50, 33.00, 29.60>}
+ triangle{<31.40, 0.0, 45.60>,<26.50, 33.00, 29.60>,<26.50, 0.0, 29.60>}
+ triangle{<26.50, 0.0, 29.60>,<26.50, 33.00, 29.60>,<42.30, 33.00, 24.70>}
+ triangle{<26.50, 0.0, 29.60>,<42.30, 33.00, 24.70>,<42.30, 0.0, 24.70>}
+ texture {White}
+}
diff --git a/render_povray/templates_pov/diffract.pov b/render_povray/templates_pov/diffract.pov
new file mode 100644
index 00000000..0c7a0228
--- /dev/null
+++ b/render_povray/templates_pov/diffract.pov
@@ -0,0 +1,195 @@
+// This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
+// To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a
+// letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.
+
+// Persistence Of Vision raytracer sample file.
+//
+// -w320 -h240
+// -w800 -h600 +a0.3
+
+#version 3.6;
+global_settings{ assumed_gamma 1.0 max_trace_level 5 }
+
+#include "colors.inc"
+#include "woods.inc"
+
+
+#declare IOR = 1.45;
+#declare Fade_Distance = 2;
+#declare Fade_Power = 3;
+
+#declare Texture01 = texture {
+ pigment {
+ color rgbf <1, 1, 1, 1>
+ }
+ finish {
+ diffuse 0.000001
+ metallic on
+ ambient 0
+ reflection 0.05
+ specular 1
+ roughness 0.001
+ irid {
+ 0.65 // contribution to overall color
+ thickness 0.8 // affects frequency, or "busy-ness"
+ turbulence 0.1 // Variance in film thickness
+ }
+ }
+}
+
+#declare Interior01 =
+ interior {
+ fade_distance Fade_Distance
+ fade_power Fade_Power
+ ior IOR
+ caustics 1.0
+ }
+
+
+#declare Texture02a = texture {
+ T_Wood1
+ scale 2
+ rotate x*90
+ translate x*5
+ finish {
+ ambient 0.4
+ }
+}
+#declare Texture02 = texture {
+ pigment {
+ color rgb<0.800, 0.800, 0.800>
+ }
+ finish {
+ brilliance 0.5
+ metallic on
+ diffuse 0.200
+ ambient 0.000
+ specular 0.300
+ roughness 0.02
+ }
+
+}
+
+#declare Texture03 = texture { Texture01 }
+
+//----------------------------------------------------------------------
+// This scene uses a non-standard camera set-up.
+// (See CAMERA in the included documentation for details.)
+// If you are new to POV-Ray, you might want to try a different demo scene.
+//----------------------------------------------------------------------
+camera { // Camera StdCam
+ angle 45
+ location <3.50, -15.00, 3.00>
+ direction <0.0, 0.0, 1.6542>
+ sky <0.0, 0.0, 1.0> // Use right handed-system!
+ up <0.0, 0.0, 1.0> // Where Z is up
+ right x*image_width/image_height // keep propotions with any aspect ratio
+ look_at <0.000, 0.000, -2.7500>
+}
+
+#declare Intensity = 20;
+#declare L_Fade_Distance = 20;
+#declare L_Fade_Power = 2;
+#declare ALL = 8;
+#declare ALW = 8;
+#declare ALR = 6;
+
+#declare Area_Light=off;
+
+light_source { // Light1
+ <-0.2, 100, 65>
+ color Cyan * Intensity
+#if(Area_Light)
+ area_light x*ALL, z*ALW, ALR, ALR
+ adaptive 1
+ jitter
+#end
+ fade_distance L_Fade_Distance
+ fade_power L_Fade_Power
+}
+
+light_source { // Light1
+ <0, 95, 65>
+ color Yellow * Intensity
+#if(Area_Light)
+ area_light x*ALL, z*ALW, ALR, ALR
+ adaptive 1
+ jitter
+#end
+ fade_distance L_Fade_Distance
+ fade_power L_Fade_Power
+}
+
+light_source { // Light1
+ <0.2, 90, 65>
+ color Magenta * Intensity
+#if(Area_Light)
+ area_light x*ALL, z*ALW, ALR, ALR
+ adaptive 1
+#end
+ jitter
+ fade_distance L_Fade_Distance
+ fade_power L_Fade_Power
+}
+
+sky_sphere {
+ pigment {
+ gradient y
+ color_map {
+ [0.0 color Gray10]
+ [1.0 color Gray30]
+ }
+ }
+}
+
+union {
+ cylinder { <-3,0,0>, <3,0,0>, 0.3 }
+ torus { 1.0, 0.25
+ rotate z*90
+ }
+ texture {Texture01}
+ interior {Interior01}
+ translate <0.0, -4.0, -0.5>
+}
+
+box { <-1, -1, -1>, <1, 1, 1>
+ texture {Texture01}
+ interior {Interior01}
+
+ scale <3.0, 0.5, 0.5>
+ translate -1.75*z
+ rotate x*45
+ translate -1.5*y
+}
+
+sphere { <0,0,0>,1
+ texture {Texture03}
+ interior {Interior01}
+ translate <3, 3, -1>
+}
+sphere { <0,0,0>,1
+ texture {Texture03}
+ interior {Interior01}
+
+ translate <0,3.0, -0.5>
+}
+sphere { <0,0,0>,1
+ texture {Texture03}
+ interior {Interior01}
+ translate <-3.0, 3.0, -1>
+}
+cone { 0, 1, -2*z, 0
+ texture {Texture03}
+ interior {Interior01}
+ translate <-4.0, 0.3, 0>
+}
+cone { 0, 1, -2*z, 0
+ texture {Texture03}
+ interior {Interior01}
+ translate <4.0, 0.3, 0>
+}
+
+plane { z, -2
+ hollow on
+ pigment { Gray60 }
+}
diff --git a/render_povray/templates_pov/diffuse_back.pov b/render_povray/templates_pov/diffuse_back.pov
new file mode 100644
index 00000000..4aa70aef
--- /dev/null
+++ b/render_povray/templates_pov/diffuse_back.pov
@@ -0,0 +1,251 @@
+// This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
+// To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a
+// letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.
+
+// Persistence of Vision Raytracer Scene Description File
+// File: diffuse_back.pov
+// Author: Christoph Lipka
+// Description: Demonstrates diffuse backside illumination
+//
+// -w640 -h480
+// -w800 -h600 +a0.3
+//
+// Warning: this will take time!
+
+#version 3.7;
+
+#declare Photons=on;
+#declare Radiosity=on;
+
+global_settings {
+ max_trace_level 25
+ assumed_gamma 2.2
+ #if (Photons)
+ photons {
+ count 100000
+ }
+ #end
+ #if (Radiosity)
+ radiosity {
+ pretrace_start 0.04
+ pretrace_end 0.005
+ count 1000
+ nearest_count 10
+ error_bound 0.5
+ recursion_limit 2
+ low_error_factor .25
+ gray_threshold 0.0
+ minimum_reuse 0.002
+ brightness 1
+ adc_bailout 0.01/2
+ always_sample off
+ }
+ #end
+}
+
+#if (Radiosity)
+ default {
+ finish { ambient 0 }
+ }
+#else
+ default {
+ finish { ambient 0.2 }
+ }
+#end
+
+// ----------------------------------------
+
+#declare OverallBrightness = 8;
+#declare OverallScale = 100;
+
+camera {
+ right x*image_width/image_height // keep propotions with any aspect ratio
+ location < 1,1.6,-2.5>*OverallScale
+ look_at <-2.0,1.2,0>*OverallScale
+}
+
+light_source {
+ vnormalize(<-500,200,-250>)*1000*OverallScale
+ color rgb 1.3 * OverallBrightness
+ area_light x*10*OverallScale,y*10*OverallScale, 9,9 adaptive 1 jitter circular orient
+ photons {
+ refraction on
+ reflection on
+ }
+}
+
+sky_sphere {
+ pigment {
+ gradient y
+ color_map {
+ [0.0 rgb <0.6,0.7,1.0>*OverallBrightness*0.5]
+ [0.7 rgb <0.0,0.1,0.8>*OverallBrightness*0.5]
+ }
+ }
+}
+
+
+// ----------------------------------------
+
+plane { y, -10
+ texture {
+ pigment { color rgb <1.0, 0.8, 0.6> }
+ finish { diffuse 0.5 }
+ }
+}
+
+#declare M_SolidWhite= material {
+ texture {
+ pigment { rgb 1 }
+ finish { ambient 0 diffuse 0.8 specular 0.2 reflection { 0.2 } }
+ }
+}
+
+// Room
+
+difference {
+ box { <-3.1,-1,-4>, <3.1,3.5,4> } // solid block
+ box { <-3,-0.2,-3>, <3,2.5,3> } // main room cutout
+ box { <-3.2,0.3,-2>, <2.9,2,2> } // window cutout
+ texture {
+ pigment { color rgb <0.9, 0.9, 0.9> }
+ finish { diffuse 1.0 }
+ }
+ scale OverallScale
+}
+
+// Window Bars
+
+union {
+ cylinder { <-3.05,0, 1>, <-3.05,2, 1>, 0.05 }
+ cylinder { <-3.05,0,-1>, <-3.05,2,-1>, 0.05 }
+ material { M_SolidWhite }
+ scale OverallScale
+}
+
+// Baseboards
+
+#declare Baseboard = union {
+ cylinder { <-3,0.1,0>, <3,0.1,0>, 0.025 }
+ box { <-3,0,0>, <3,0.1,-0.025> }
+ material { M_SolidWhite }
+ translate z*3
+}
+
+union {
+ object { Baseboard }
+ object { Baseboard rotate y*90 }
+ object { Baseboard rotate y*180 }
+ object { Baseboard rotate y*270 }
+ scale OverallScale
+}
+
+
+box { <-3,0,-3>, <3,-0.1,3>
+ pigment { color rgb <1.0, 0.8, 0.6> }
+ scale OverallScale
+}
+
+
+// Curtains
+
+#declare M_Curtains= material {
+ texture {
+ pigment { rgb <1.0,0.8,0.6> }
+ finish {
+ ambient 0
+ diffuse 0.7,0.2
+ }
+ }
+}
+
+#declare Curtain= union {
+ polygon{ 5, <0,0.1,2.0>, <0,0.1,0.1>, <0,2.45,0.1>, <0,2.45,2.0>, <0,0.1,2.0> material { M_Curtains } }
+ cylinder { <0,0.1,2.025>, <0,0.1,0.075>, 0.025 material { M_SolidWhite } }
+ cylinder { <0,2.45,2.025>, <0,2.45,0.075>, 0.025 material { M_SolidWhite } }
+ translate <-2.8,0,0>
+ material { M_Curtains }
+}
+
+union {
+ object { Curtain }
+ object { Curtain scale <1,1,-1> }
+ scale OverallScale
+}
+
+// Screen
+
+#declare M_Screen= material {
+ texture {
+ pigment { rgbt <1,1,1, 0.01> }
+ finish {
+ ambient 0
+ diffuse 0.55,0.45
+ specular 0.2
+ reflection { 0.2 }
+ }
+ }
+}
+
+#declare Screen = cylinder { <0,0,0>, <0,1.0,0>, 0.5
+ open
+ clipped_by { plane { x, 0.1 } }
+ material { M_Screen }
+}
+
+union {
+ object { Screen rotate y*45 translate <-2.25,0,2> }
+ object { Screen rotate y*0 translate <-2.25,0,-1.0> }
+ scale OverallScale
+}
+
+// Glass Objects
+
+#declare M_Glass= material {
+ texture {
+ pigment {rgbt 1}
+ finish {
+ ambient 0.0
+ diffuse 0.05
+ specular 0.6
+ roughness 0.005
+ reflection {
+ 0.1, 1.0
+ fresnel on
+ }
+ conserve_energy
+ }
+ }
+ interior {
+ ior 1.5
+ fade_power 1001
+ fade_distance 0.9 * 10
+ fade_color <0.5,0.8,0.6>
+ }
+}
+
+sphere {
+ <0,1,0>, 1
+ scale 0.2
+ translate <-1.8,0,0.5>
+ material { M_Glass }
+ photons { // photon block for an object
+ target 1.0
+ refraction on
+ reflection on
+ }
+ scale OverallScale
+}
+
+cylinder {
+ <0,0.01,0>, <0,2.5,0>, 1
+ scale 0.2
+ translate <-3.05,0.3,0.4>
+ material { M_Glass }
+ photons { // photon block for an object
+ target 1.0
+ refraction on
+ reflection on
+ }
+ scale OverallScale
+}
diff --git a/render_povray/templates_pov/float5.pov b/render_povray/templates_pov/float5.pov
new file mode 100644
index 00000000..2d865cb4
--- /dev/null
+++ b/render_povray/templates_pov/float5.pov
@@ -0,0 +1,81 @@
+// This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
+// To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a
+// letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.
+
+// Persistence of Vision Raytracer Scene Description File
+// File: float5.pov
+// Description: Demonstrates various new float math functions and #while loop
+// Modified for 3.5: changed "log()" to "ln()".
+//
+// -w320 -h240
+// -w800 -h600 +a0.3
+
+#version 3.6;
+
+global_settings {
+ assumed_gamma 1.0
+ }
+
+#include "colors.inc"
+
+#declare Rad=1/8;
+#declare Font="cyrvetic.ttf"
+
+#declare Xval=-6.0;
+
+#while (Xval <= 6.0)
+ sphere{<Xval,exp(Xval),0>,Rad pigment{color rgb<1,0.2,0>}}
+
+ #if (Xval != 0.0)
+ sphere{<Xval,pow(Xval,-1),0>,Rad pigment{color rgb<0.2,0.7,0>}}
+ #end
+
+ sphere{<Xval,pow(Xval,2),0>,Rad pigment{Blue}}
+ sphere{<Xval,pow(Xval,3),0>,Rad pigment{Cyan}}
+
+ #if (Xval > 0.0)
+ sphere{<Xval,ln(Xval),0>,Rad pigment{Magenta}}
+ #end
+
+ #declare Xval=Xval+0.02;
+#end
+
+ text{ttf Font "Y=exp(X)",0.1,0 translate <-6.5, 0.5,0> pigment{color rgb<1,0.2,0>}}
+ text{ttf Font "Y=pow(X,-1)",0.1,0 translate <-6.5,-1.5,0> pigment{color rgb<0.2,0.7,0>}}
+ text{ttf Font "Y=pow(X,2)",0.1,0 translate <-6.5, 3,0> pigment{Blue}}
+ text{ttf Font "Y=pow(X,3)",0.1,0 translate <-6.5,-4,0> pigment{Cyan}}
+ text{ttf Font "Y=ln(X)",0.1,0 translate < 2.5, 2,0> pigment{Magenta}}
+
+camera {
+ location <0, 0, -120>
+ angle 7 // direction <0, 0, 12>
+ right x*image_width/image_height
+ look_at <0, 0, 0>
+}
+
+light_source { <5000, 10000, -20000> color White}
+light_source { <-500, -1000, 2000> color White}
+plane { -z, -Rad pigment {checker color rgb <1,1,1>*1.2 color rgb <1,1,.8>} }
+
+union{ // X-axis
+ cylinder{-x*5.5,x*5.5,.1}
+ cone{-x*6.5,0,-x*5.5,.2}
+ cone{ x*6.5,0, x*5.5,.2}
+ translate z*Rad
+ pigment{rgb<1,.8,1>}
+}
+
+union{ // Y-axis
+ cylinder{-y*4,y*4,.1}
+ cone{-y*5,0,-y*4,.2}
+ cone{ y*5,0, y*4,.2}
+ translate z*Rad
+ pigment{rgb<.8,1,1>}
+}
+
+union{ // Axes labels
+ text{ttf Font "X",0.1,0 translate <5.5,-1,0>}
+ text{ttf Font "Y",0.1,0 translate <-.75,4,0>}
+ pigment{rgb<1,.4,0>}
+}
+
diff --git a/render_povray/templates_pov/gamma_showcase.pov b/render_povray/templates_pov/gamma_showcase.pov
new file mode 100644
index 00000000..d601868f
--- /dev/null
+++ b/render_povray/templates_pov/gamma_showcase.pov
@@ -0,0 +1,189 @@
+// This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
+// To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a
+// letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.
+
+// Persistence of Vision Ray Tracer Scene Description File
+// File: gamma_showcase.pov
+// Vers: 3.7
+// Desc: Gamma Handling Test Scene - An arrangement of spheres on a marble plane
+// Date: 2010-12-21
+// Auth: Christoph Lipka
+// MORE INFORMATION: http://wiki.povray.org/content/Documentation:Tutorial_Section_3.3#Gamma_Handling
+//
+
+// +w640 +h480 +a0.3 +am1 +fN -d File_Gamma=sRGB Output_File_Name=gamma_showcase.png
+// +w640 +h480 +a0.3 +am1 +fN -d File_Gamma=1.0 Output_File_Name=gamma_showcase_linear.png
+// +w320 +h240 +a0.3 +am1 +fN -d File_Gamma=sRGB Output_File_Name=gamma_showcase_ref0.png Declare=Stripes=off
+// +w320 +h240 +a0.3 +am1 +fN -d File_Gamma=sRGB Output_File_Name=gamma_showcase_ref1.png Declare=Stripes=off Declare=Gamma=1.2
+// +w320 +h240 +a0.3 +am1 +fN -d File_Gamma=sRGB Output_File_Name=gamma_showcase_ref2.png Declare=Stripes=off Declare=Gamma=0.8
+// +w640 +h480 +a0.3 +am1 -f +d
+
+#version 3.7;
+
+#include "colors.inc"
+#include "stones.inc"
+
+#ifndef (Stripes)
+ #declare Stripes = on;
+#end
+#ifndef (Gamma)
+ #declare Gamma = 1.0;
+#end
+
+global_settings {
+ max_trace_level 5
+ assumed_gamma 1.0
+ radiosity {
+ pretrace_start 0.08
+ pretrace_end 0.01
+ count 35
+ nearest_count 5
+ error_bound 1.8
+ recursion_limit 2
+ low_error_factor .5
+ gray_threshold 0.0
+ minimum_reuse 0.015
+ brightness 1
+ adc_bailout 0.01/2
+ }
+}
+
+#default {
+ texture {
+ pigment {rgb 1}
+ finish {
+ ambient 0.0
+ diffuse 0.6
+ specular 0.6 roughness 0.001
+ reflection { 0.0 1.0 fresnel on }
+ conserve_energy
+ }
+ }
+}
+
+// ----------------------------------------
+
+#local TestRed = rgb <0.5,0.1,0.1>;
+#local TestGreen = rgb <0.1,0.5,0.1>;
+#local TestBlue = rgb <0.1,0.1,0.5>;
+
+#local CameraFocus = <0,0.5,0>;
+#local CameraDist = 8;
+#local CameraDepth = 1.8;
+#local CameraTilt = 20;
+
+camera {
+ location <0,0,0>
+ direction z*CameraDepth
+ right x*image_width/image_height
+ up y
+ translate <0,0,-CameraDist>
+ rotate x*CameraTilt
+ translate CameraFocus
+}
+
+#macro LightSource(Pos,Color)
+ light_source {
+ Pos
+ color Color
+ spotlight
+ point_at <0,0,0>
+ radius 175/vlength(Pos)
+ falloff 200/vlength(Pos)
+ area_light x*vlength(Pos)/10, y*vlength(Pos)/10, 9,9 adaptive 1 jitter circular orient
+ }
+
+#end
+
+LightSource(<-500,500,-500>,TestRed + <0.2,0.2,0.2>)
+LightSource(< 0,500,-500>,TestGreen + <0.2,0.2,0.2>)
+LightSource(< 500,500,-500>,TestBlue + <0.2,0.2,0.2>)
+
+// ----------------------------------------
+
+#macro DarkStripeBW(TargetBrightness)
+ #if (TargetBrightness < 0.5)
+ (0.0)
+ #else
+ (TargetBrightness*2 - 1.0)
+ #end
+#end
+
+#macro BrightStripeBW(TargetBrightness)
+ #if (TargetBrightness < 0.5)
+ (TargetBrightness*2)
+ #else
+ (1.0)
+ #end
+#end
+
+#macro DarkStripeRGB(TargetColor)
+ <DarkStripeBW(TargetColor.red),DarkStripeBW(TargetColor.green),DarkStripeBW(TargetColor.blue)>
+#end
+
+#macro BrightStripeRGB(TargetColor)
+ <BrightStripeBW(TargetColor.red),BrightStripeBW(TargetColor.green),BrightStripeBW(TargetColor.blue)>
+#end
+
+#macro StripedPigment(TargetColor)
+ #if (Stripes)
+ function { abs(mod(abs(image_height*CameraDepth*y/z+0.5),2.0)-1.0) }
+ color_map {
+ [0.5 color rgb DarkStripeRGB(TargetColor) ]
+ [0.5 color rgb BrightStripeRGB(TargetColor) ]
+ }
+ translate <0,0,-CameraDist>
+ rotate x*CameraTilt
+ translate CameraFocus
+ #else
+ color TargetColor
+ #end
+#end
+
+
+plane {
+ y, 0
+ texture { T_Stone11 }
+ interior { ior 1.5 }
+}
+
+#macro GammaAdjust(C,G)
+ #local C2 = color rgbft <pow(C.red,G),pow(C.green,G),pow(C.blue,G),pow(C.filter,G),pow(C.transmit,G)>;
+ (C2)
+#end
+
+#macro TestSphere(Pos,Radius,TargetColor,Split)
+ sphere {
+ Pos + y*Radius, Radius
+ texture { pigment { color GammaAdjust(TargetColor,Gamma) } }
+ interior { ior 1.5 }
+ }
+ #if (Split)
+ sphere {
+ Pos + y*Radius + x*0.001, Radius
+ texture { pigment { StripedPigment(TargetColor) } }
+ interior { ior 1.5 }
+ }
+ #end
+#end
+
+TestSphere(<-2,0,1>, 1, TestRed, true)
+TestSphere(< 0,0,1>, 1, TestGreen, true)
+TestSphere(< 2,0,1>, 1, TestBlue, true)
+
+#local Steps = 6;
+#for(I,0,1,1/Steps)
+ #if (I < 0.5)
+ #local Color2 = TestRed;
+ #else
+ #local Color2 = TestBlue;
+ #end
+ #local P = abs(I-0.5)*2;
+ TestSphere(<I*4-2,0,-0.5>, 2/Steps, (1-P)*TestGreen + P*Color2, true)
+#end
+
+#local Steps = 8;
+#for(I,0,1,1/Steps)
+ TestSphere(<I*4-2,0,-1.5>, 2/Steps, rgb I, true)
+ TestSphere(<I*4-2,0,-2.0>, 2/Steps, GammaAdjust(rgb I, 2.2*Gamma), false)
+#end
diff --git a/render_povray/templates_pov/grenadine.pov b/render_povray/templates_pov/grenadine.pov
new file mode 100644
index 00000000..1c409b13
--- /dev/null
+++ b/render_povray/templates_pov/grenadine.pov
@@ -0,0 +1,375 @@
+// This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
+// To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a
+// letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.
+
+// Persistence of Vision Ray Tracer Scene Description File
+// File: grenadine.pov
+// Desc: Glass with liquid
+// Date: 1999/06/04
+// Auth: Ingo Janssen
+// Updated: 2013/02/15 for 3.7
+//
+// -w320 -h240
+// -w800 -h600 +a0.3
+
+#version 3.7;
+
+#include "glass.inc"
+
+
+global_settings {
+ assumed_gamma 1.0
+ max_trace_level 5
+ photons {
+ spacing 0.01 // higher value 'lower' quality, faster parsing.
+ autostop 0
+ jitter 0.5
+ max_trace_level 15
+ }
+}
+
+light_source {
+ <500, 550, -100>
+ rgb <1, 1, 1>
+ spotlight
+ radius 1
+ falloff 1.1
+ tightness 1
+ point_at <-19,-4,7>
+}
+
+camera {
+ location <-0.5, 2.5, -7.0>
+ right x*image_width/image_height // keep propotions with any aspect ratio
+ look_at <-0.5, 0.5, 0.0>
+}
+
+sky_sphere {
+ pigment {
+ gradient y
+ color_map { [0.0 rgb <0.2,0,1>] [1.0 color rgb 1] }
+ }
+}
+
+union { //plane & background
+ difference {
+ box {<-20,-1,0>,<20,13,13>}
+ cylinder{<-21,13,0>,<21,13,0>,13}
+ }
+ plane {y, 0}
+ translate <0,-1.9999,7>
+ pigment {rgb .5}
+ finish {diffuse .5 ambient 0}
+}
+
+//====== The Lemon ======
+#declare SS=seed(7);
+#declare R_uit= 3;
+#declare R_in=2.9;
+
+#declare Ring = difference {
+ cylinder {< 0 , 0, 0>, <1 , 0, 0>, R_uit}
+ cylinder {<-0.1, 0, 0>, <1.1, 0, 0>, R_in}
+}
+
+#declare R2_uit= 0.8;
+#declare R2_in=0.7;
+
+#declare Ring2 = difference {
+ cylinder {< 0 , 0, 0>, < 1 , 0, 0>, R2_uit}
+ cylinder {<-0.1, 0, 0>, < 1.1, 0, 0>, R2_in}
+}
+
+#declare LemonOut= intersection {
+ merge {
+ difference {
+ merge {
+ object {Ring translate < 0.01, 0, (R_uit+R_in)/2>}
+ object {Ring translate <-1.01, 0,-(R_uit+R_in)/2>}
+ }
+ box {<-1.1, 0.1,-1>, <1.1, 2, 1>}
+ }
+ difference {
+ box {<-1, 0,-(R_uit-R_in)/2>, < 1, 1.1, (R_uit-R_in)/2>}
+ box {
+ <-2.5, 0,-1>, <2.5, 2, 1>
+ translate <0, 0.5, 0>
+ rotate <0, 0,-20>
+ }
+ }
+ difference{
+ object {
+ Ring2
+ translate <-0.5, 0, 0>
+ scale <2.2, 1, 1>
+ translate < 0, 0, (R2_uit+R2_in)/2>
+ }
+ box {<-2.1, 0,-1>,<2.1,-3, 1>}
+ translate <0, 0.499999, 0>
+ rotate <0, 0,-20>
+ }
+ }
+ merge {
+ cylinder {<0, 0,-0.5>, <0, 0, 0.5>, 0.8}
+ torus {0.8, 0.2 scale <1, 1.1, 1> rotate <90, 0, 0>}
+ }
+}
+
+#declare BS1= array[24] {
+ < 24.8, 49.8>, < 13.0, 31.4>, < 4.0, 8.8>, < 0.1, 9.4>
+ < 0.1, 9.4>, <- 7.4, 10.7>, <-12.5, 30.4>, <-21.1, 49.8>
+ <-21.1, 49.8>, <-33.3, 76.9>, <-39.8, 87.0>, <-29.2, 91.4>
+ <-29.2, 91.4>, <-20.0, 95.3>, <-10.0, 95.9>, < 0.0, 95.9>
+ < 0.0, 95.9>, < 10.0, 95.9>, < 21.3, 95.8>, < 30.0, 90.7>
+ < 30.0, 90.7>, < 41.3, 84.0>, < 45.1, 86.5>, < 24.8, 49.8>
+}
+
+#declare BS2= array[24] {
+ < 24.8, 55.8>, < 13.0, 31.4>, < 4.0, 8.8>, < 0.1, 15.0>
+ < 0.1, 15.0>, <- 7.4, 10.7>, <-12.5, 30.4>, <-21.1, 49.8>
+ <-21.1, 49.8>, <-33.3, 76.9>, <-39.8, 87.0>, <-29.2, 91.4>
+ <-29.2, 91.4>, <-20.0, 95.3>, <-10.0, 95.9>, < 0.0, 95.9>
+ < 0.0, 95.9>, < 10.0, 95.9>, < 21.3, 95.8>, < 30.0, 90.7>
+ < 30.0, 90.7>, < 41.3, 84.0>, < 45.1, 86.5>, < 24.8, 55.8>
+}
+
+
+#declare BS3= array[24] {
+ < 23.0, 49.8>, < 13.0, 31.4>, < 4.0, 8.8>, < 0.1, 6.0>
+ < 0.1, 6.0>, <- 7.4, 10.7>, <-12.5, 30.4>, <-21.1, 49.8>
+ <-21.1, 49.8>, <-33.3, 76.9>, <-39.8, 87.0>, <-29.2, 91.4>
+ <-29.2, 91.4>, <-20.0, 95.3>, <-10.0, 95.9>, < 0.0, 95.9>
+ < 0.0, 95.9>, < 10.0, 95.9>, < 21.3, 95.8>, < 30.0, 90.7>
+ < 30.0, 90.7>, < 41.3, 84.0>, < 45.1, 85.0>, < 23.0, 49.8>
+}
+
+
+#declare BS4= array[24] {
+ < 24.8, 49.8>, < 13.0, 31.4>, < 4.0, 11.8>, < 0.1, 9.0>
+ < 0.1, 9.0>, <- 7.4, 13.7>, <-12.5, 30.4>, <-21.1, 49.8>
+ <-21.1, 49.8>, <-33.3, 76.9>, <-39.8, 87.0>, <-21.2, 91.4>
+ <-21.2, 91.4>, <-20.0, 95.3>, <-10.0, 95.9>, < 0.0, 95.9>
+ < 0.0, 95.9>, < 10.0, 95.9>, < 21.3, 95.8>, < 30.0, 90.7>
+ < 30.0, 90.7>, < 41.3, 84.0>, < 45.1, 86.5>, < 24.8, 49.8>
+}
+
+#declare J=0;
+#declare Part1= prism {
+ bezier_spline
+ -0.5, 0.5, 24,
+ #while (J<24)
+ #declare P= BS1[J];
+ P
+ #declare J=J+1;
+ #end
+ scale < 0.0095, 1, 0.0095>
+}
+
+#declare J=0;
+#declare Part2= prism {
+ bezier_spline
+ -0.5, 0.5, 24,
+ #while (J<24)
+ #declare P= BS2[J];
+ P
+ #declare J=J+1;
+ #end
+ scale < 0.0095, 1, 0.0095>
+}
+
+#declare J=0;
+#declare Part3= prism {
+ bezier_spline
+ -0.5, 0.5, 24,
+ #while (J<24)
+ #declare P= BS3[J];
+ P
+ #declare J=J+1;
+ #end
+ scale < 0.0095, 1, 0.0095>
+}
+
+#declare J=0;
+#declare Part4= prism {
+ bezier_spline
+ -0.5, 0.5, 24,
+ #while (J<24)
+ #declare P= BS4[J];
+ P
+ #declare J=J+1;
+ #end
+ scale < 0.0095, 1, 0.0095>
+}
+
+#declare LemonTex= texture {
+ pigment {
+ granite
+ scale <0.2,5,1>
+ colour_map {
+ [0.4 rgbf <1,0.65,0,0.4>]
+ [0.6 rgbf <1,0.8,0,0.4>]
+ [0.7 rgbf <1,0.9,0,0.6>]
+ [0.9 rgb <1,0.7,0>*1.5 ]
+ }
+ }
+ normal {granite -0.1 turbulence 0.3 scale <0.2,5,1>}
+ finish {
+ specular .9
+ roughness 0.01
+ }
+}
+
+#declare Parts= union {
+ object {Part1 }
+ object {Part2 rotate <0, 360/7 ,0>}
+ object {Part3 rotate <0,2*(360/7),0>}
+ object {Part4 rotate <0,3*(360/7),0>}
+ object {Part1 rotate <0,4*(360/7),0>}
+ object {Part2 rotate <0,5*(360/7),0>}
+ object {Part3 rotate <0,6*(360/7),0>}
+ rotate <90,0,0>
+}
+
+#declare LemonSlice = union {
+ intersection {
+ object {LemonOut}
+ object {Part1 rotate <90,0,0>}
+ texture {LemonTex rotate <90,0,0> translate rand(SS)*5}
+ }
+ intersection {
+ object {LemonOut}
+ object {Part2 rotate <0,360/7,0> rotate <90,0,0>}
+ texture {LemonTex rotate <0,360/7,0> rotate <90,0,0> translate rand(SS)*5}
+ }
+ intersection {
+ object {LemonOut}
+ object {Part3 rotate <0,2*(360/7),0> rotate <90,0,0>}
+ texture {LemonTex rotate <0,2*(360/7),0> rotate <90,0,0> translate rand(SS)*5}
+ }
+ intersection {
+ object {LemonOut}
+ object {Part4 rotate <0,3*(360/7),0> rotate <90,0,0>}
+ texture {LemonTex rotate <0,3*(360/7),0> rotate <90,0,0> translate rand(SS)*5}
+ }
+ intersection {
+ object {LemonOut}
+ object {Part1 rotate <0,4*(360/7),0> rotate <90,0,0>}
+ texture {LemonTex rotate <0,4*(360/7),0> rotate <90,0,0> translate rand(SS)*5}
+ }
+ intersection {
+ object {LemonOut}
+ object {Part2 rotate <0,5*(360/7),0> rotate <90,0,0>}
+ texture {LemonTex rotate <0,5*(360/7),0> rotate <90,0,0> translate rand(SS)*5}
+ }
+ intersection {
+ object {LemonOut}
+ object {Part3 rotate <0,6*(360/7),0> rotate <90,0,0>}
+ texture {LemonTex rotate <0,6*(360/7),0> rotate <90,0,0> translate rand(SS)*5}
+ }
+
+ difference { //outside
+ object {LemonOut}
+ object {Parts}
+ texture {
+ cylindrical
+ rotate <90,0,0>
+ texture_map {
+ [0.05, pigment {rgb <1,0.8,0>}
+ normal {granite .1 scale 0.1}
+ finish {phong 0.8 phong_size 20}
+ ]
+ [0.06, pigment {rgb <1,0.9,0.7>}
+ normal {granite .07 scale 0.5}
+ ]
+ }
+ }
+ }
+}
+
+//====== The Glass ======
+
+#declare Ri=0.95;
+
+#declare Glass= merge {
+ difference {
+ cylinder { -y*2,y*2,1 }
+ sphere {-y*0.8,Ri}
+ cylinder { -y*0.8,y*2.01,Ri}
+ sphere {-y*1.9,0.1}
+ }
+ torus {0.975, 0.026 translate <0,2,0>}
+ // texture {T_Glass1}
+ // interior {ior 1.5}
+ // converted to material 26Sep2008 (jh)
+ material {
+ texture {
+ pigment {color rgbf<1.0, 1.0, 1.0, 0.7>}
+ finish {F_Glass1}
+ }
+ interior {ior 1.5}
+ }
+}
+
+
+//====== The bubbles and the juce ======
+
+#declare Bubble= difference {
+ sphere {0,0.1}
+ sphere {0,0.09999999}
+}
+
+#declare S= seed(7);
+#declare I=0;
+#declare Bubbles= intersection {
+ union {
+ #while (I<60)
+ object {
+ Bubble
+ scale rand(S)
+ scale <1,0.7,1>
+ translate <1,0.6,0>
+ rotate <0,360*rand(S),0>
+ }
+ object {
+ Bubble
+ scale rand(S)*0.5
+ translate <rand(S),0.58,0>
+ rotate <0,360*rand(S),0>
+ }
+ #declare I=I+1;
+ #end //while
+ }
+ cylinder{y*0.5,y*0.85,Ri+0.00000001}
+}
+
+#declare Liquid= merge {
+ sphere {-y*0.8,Ri+0.00000001}
+ cylinder {-y*0.8,y*0.6,Ri+0.00000001}
+ object {Bubbles}
+ pigment {rgbf <0.9, 0.1, 0.2, 0.95>}
+ finish {reflection 0.3}
+ interior{ior 1.2}
+}
+
+//====== The glass and juice =====
+union {
+ object {Glass}
+ object {Liquid}
+ photons {
+ target
+ refraction on
+ reflection on
+ collect off
+ }
+}
+
+object {
+ LemonSlice
+ scale <0.8,0.8,1>
+ translate <-0.99,0,0>
+ rotate <0,-30,0>
+ translate <0,2,0>
+ photons {
+ pass_through
+ }
+} \ No newline at end of file
diff --git a/render_povray/templates_pov/isocacti.pov b/render_povray/templates_pov/isocacti.pov
new file mode 100644
index 00000000..c0e8cde0
--- /dev/null
+++ b/render_povray/templates_pov/isocacti.pov
@@ -0,0 +1,242 @@
+// This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
+// To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a
+// letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.
+
+// Persistence Of Vision raytracer sample file.
+// Updated: Feb-2013 for 3.7
+//
+// -w320 -h240
+// -w800 -h600 +a0.3
+
+#version 3.7;
+global_settings { assumed_gamma 1.3 }
+
+#include "stdinc.inc"
+#include "arrays.inc"
+
+
+
+sky_sphere {
+ pigment {gradient y
+ color_map {
+ [0 color Blue*0.6]
+ [1 color White]
+ }
+ }
+}
+
+#default {finish {ambient 0}}
+#declare RS = seed(464786);
+//----------------------------------------
+#declare CamLoc = < 5, 10,-10>;
+camera {
+ location CamLoc
+ right x*image_width/image_height // keep propotions with any aspect ratio
+ angle 45
+ look_at <0, 0, 0>
+}
+
+light_source {<-20, 30, -30>*3 color White*1.5}
+light_source {CamLoc color rgb 0.3}
+//----------------------------------------
+
+#declare Ground =
+isosurface {
+ function {y - f_snoise3d(x/7, 0, z/2)*0.5}
+ threshold 0
+ max_gradient 1.1
+ contained_by {box {<-100,-3,-100>, < 100, 1, 100>}}
+
+/* texture {
+ pigment {color rgb < 1, 0.9, 0.65>}
+ normal {granite bump_size 0.1 scale 0.01}
+ }*/
+ texture{
+ pigment{
+ color rgb <.518, .339, .138>
+ }
+ normal{
+ bumps 5
+ scale 0.05
+ }
+ finish{
+ specular .3
+ roughness .8
+ }
+ }
+
+ texture{
+ pigment{
+ wrinkles
+ scale 0.05
+ color_map{
+ [0.0 color rgbt <1, .847, .644, 0>]
+ [0.2 color rgbt <.658, .456, .270, 1>]
+ [0.4 color rgbt <.270, .191, .067, .25>]
+ [0.6 color rgbt <.947, .723, .468, 0>]
+ [0.8 color rgbt <.356, .250, .047, 1>]
+ [1.0 color rgbt <.171, .136, .1, 1>]
+ }
+ }
+
+ }
+}
+object {Ground}
+
+#declare RockColors = array[5]
+{
+ color rgb < 0.5, 0.4, 0.35>,
+ color rgb < 0.4, 0.5, 0.4>,
+ color rgb < 0.8, 0.75, 0.65>,
+ color rgb 0.8,
+ color rgb 0.5
+}
+
+#declare CtrlPtrn = function {pattern {bozo scale < 7, 1, 2>}}
+#declare L = 0;
+#while(L < 750)
+ #declare Pt = trace(Ground, < rand(RS)*25 - 15, 10, rand(RS)*25 - 10>, -y);
+ #if(rand(RS) > CtrlPtrn(Pt.x, Pt.y, Pt.z))
+// sphere {o, 0.03 + pow(rand(RS), 2)*0.15
+ isosurface {
+ function {f_r(x, y, z) - 1 + f_noise3d(x, y, z)*0.5}
+ threshold 0
+ contained_by {sphere {o, 1}}
+ #if(rand(RS) < 0.5) scale VRand_In_Box(< 1, 0.9, 1>, < 2, 1, 3>, RS) #end
+ rotate y*rand(RS)*360
+ translate -y*0.35
+ scale 0.03 + pow(rand(RS),2)*0.35
+ texture {
+ pigment {Rand_Array_Item(RockColors, RS)*RRand(0.1, 1, RS)}
+ normal {granite bump_size 0.5 scale 0.01}
+ }
+ translate Pt
+ }
+ #declare L = L + 1;
+ #end
+#end
+
+#macro MakeSpineBunch(Pt, Dir, Jitter, Len, BaseRad, Num)
+ #local L = 0;
+ #while(L < Num)
+ #local NewDir = vnormalize(Dir + Jitter*(< rand(RS), rand(RS), rand(RS)>*2 - 1));
+ cone {Pt, BaseRad, Pt + NewDir*Len, 0}
+ #local L = L + 1;
+ #end
+#end
+#macro MakeSpineRows(Body, Stretch, AltJitter, Ridges, Bunches, Spines, SpineJitter, SpineLen, SpineRad)
+ #declare J = 0;
+ #local AltDelta = 180/Bunches;
+ union {
+ #while(J < Ridges)
+ #declare K = 0;
+ #while(K < Bunches)
+ #declare Orig = vrotate(-y*50, x*(K + rand(RS)*AltJitter)*AltDelta);
+ #declare Orig = vrotate(Orig, y*(360*J/Ridges + 360/(Ridges*4)))*Stretch;
+ #declare PtNorm = y;
+ #declare Pt = trace(Body, Orig,-Orig, PtNorm);
+ MakeSpineBunch(Pt, PtNorm, SpineJitter, SpineLen, SpineRad, Spines)
+ #declare K = K + 1;
+ #end
+ #declare J = J + 1;
+ #end
+ }
+#end
+
+#declare sinw = function (x) {(sin(x) + 1)/2}
+
+#declare Ridges = 40;
+#declare RidgeDepth = 0.075;
+
+#declare cactus1Body =
+isosurface {
+ function {sqrt(x*x + pow(y - sqrt((x*x/4) + (z*z/4))*1.5, 2) + z*z) - 1 -
+ (sin(atan2(x, z)*Ridges)*0.5*RidgeDepth)
+ }
+ threshold 0
+ max_gradient 5
+
+ contained_by {sphere {< 0, 0, 0>, 3.1}}
+ texture {
+ pigment {radial
+ color_map {
+ [0.00 color rgb < 0.3, 0.65, 0.4>*0.8]
+ [0.65 color rgb < 0.3, 0.65, 0.4>*0.8]
+ [1.00 color rgb < 0.3, 0.65, 0.4>*0.2]
+ }
+ frequency Ridges sine_wave
+ }
+ normal {dents 0.1 poly_wave 2 scale < 1, 0.15, 1>}
+ }
+}
+#declare Cactus1 =
+union {
+ object {cactus1Body}
+ object {MakeSpineRows(cactus1Body, 1, 0.2, Ridges, 24, 3, 0.5, 1, 0.01)
+ texture {pigment {color rgb < 0.98, 0.98, 0.5>}}
+ }
+ scale < 1, 0.75, 1>
+ translate y*0.35
+}
+
+
+#declare Ridges = 32;
+#declare RidgeDepth = 0.1;
+#declare cactus2Body =
+
+isosurface {
+ function {
+ f_r(x, y*0.35, z) - 1 - sqrt(x*x + z*z)*0.2
+ - (sinw(atan2(x, z)*Ridges)*RidgeDepth)
+ }
+ threshold 0
+ max_gradient 5
+ contained_by {sphere {< 0, 0, 0>, 3.1}}
+ texture {
+ pigment {color rgb < 0.3, 0.65, 0.4>}
+ normal {bozo 0.1 scale < 1, 0.15, 1>}
+ }
+}
+
+#declare Cactus2 =
+union {
+ object {cactus2Body}
+ object {MakeSpineRows(cactus2Body, < 1, 3, 1>, 1, Ridges, 64, 3, 1, 0.5, 0.01)
+ texture {pigment {color rgb < 0.98, 0.98, 0.5>}}
+ }
+ translate y*2
+}
+
+
+
+#declare Ridges = 75;
+#declare RidgeDepth = 0.05;
+#declare cactus3Body =
+
+isosurface {
+ function {
+ sqrt(x*x + pow((y/1.5),2) + z*z) - 1 - sqrt(x*x + z*z)*0.2
+ - (sinw(atan2(x, z)*Ridges)*RidgeDepth)
+ }
+ threshold 0
+ max_gradient 5
+ contained_by {sphere {< 0, 0, 0>, 3.1}}
+ texture {
+ pigment {color rgb < 0.1, 0.5, 0.25>}
+ normal {bozo 0.1 scale 0.15}
+ }
+}
+#declare Cactus3 =
+union {
+ object {cactus3Body}
+ object {MakeSpineRows(cactus3Body, < 1, 1.5, 1>, 1, Ridges, 24, 5, 1, 0.35, 0.01)
+ texture {pigment {color rgb < 0.98, 0.98, 0.85>}}
+ }
+ translate y*1.25
+}
+
+object {Cactus1 translate < 3, 0,-3>}
+object {Cactus2}
+object {Cactus3 translate <-2, 0,-3.5>}
+
+//----------------------------------------
diff --git a/render_povray/templates_pov/mediasky.pov b/render_povray/templates_pov/mediasky.pov
new file mode 100644
index 00000000..9347424e
--- /dev/null
+++ b/render_povray/templates_pov/mediasky.pov
@@ -0,0 +1,147 @@
+// This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
+// To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a
+// letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.
+
+// Persistence of Vision Raytracer Scene Description File
+// File: mediasky.pov
+// Author: Chris Huff
+// Description: This file demonstrates the use of scattering media
+// to create a sky with clouds. It attempts to simulate an actual
+// atmosphere: there is an outer shell of media that scatters blue
+// light, and an inner cloud shell that scatters white. The scattered
+// light from the outer shell makes the sky appear blue, and the light
+// that passes through is tinted orange by its passage, giving the
+// clouds an orange color.
+//
+// Updated: 2013/02/15 for 3.7
+//
+// -w320 -h180
+// +w640 +h360 +a0.3
+// use 16:9 aspect ratio
+//
+//*******************************************
+
+#version 3.7;
+
+#include "colors.inc"
+
+global_settings {
+ assumed_gamma 1.0
+ max_trace_level 5
+}
+
+#declare CamPos = <-5, 1,-25>;
+
+camera {
+ location CamPos
+ up y
+ right x*image_width/image_height // keep propotions with any aspect ratio
+ look_at < 0, 7.5, 0>
+ angle 90
+}
+
+light_source {CamPos, color Gray30 media_interaction off}
+//light_source {vrotate(z, <-1, 8, 0>)*500000, color rgb < 1, 0.8, 0.65>}
+
+#declare SunPos = vrotate(z, <-12, 8, 0>)*1000000;
+light_source {SunPos, color White*2}
+sphere {SunPos, 75000
+ texture {
+ pigment {color White}
+ finish {ambient 10 diffuse 0}
+ }
+ no_shadow
+}
+
+
+#declare PlanetSize = 50000;
+
+//the ocean
+sphere {< 0, 0, 0>, 1
+ scale PlanetSize
+ translate -y*PlanetSize
+ hollow
+ texture {
+// pigment {color rgb < 1, 1, 1>}
+ pigment {color rgbf < 1, 1, 1, 1>}
+ finish {
+ ambient 0 diffuse 0.7
+ reflection {0.5, 1
+ fresnel//use the fresnel form of angle-dependant reflection
+ metallic//use metallic reflection
+ }
+ conserve_energy
+ metallic//use metallic highlights
+ }
+ normal {bumps bump_size 0.075 scale < 4, 1, 1>*0.025}
+ }
+ interior {
+ ior 1.33//required for fresnel reflection
+ media {
+ method 3
+ samples 2 intervals 1
+ absorption color rgb < 0.75, 0.5, 0.25>*0.005
+ }
+ }
+}
+//the ocean floor
+sphere {< 0, 0, 0>, 1
+ scale PlanetSize - 100
+ translate -y*PlanetSize
+ texture {
+ pigment {color rgb 1}
+ }
+}
+
+#macro SkyShell(minAlt, maxAlt, Int)
+ difference {
+ sphere {< 0, 0, 0>, 1 scale (PlanetSize + maxAlt)}
+ sphere {< 0, 0, 0>, 1 scale (PlanetSize + minAlt)}
+ hollow
+ texture {pigment {color rgbf 1}}
+ translate -y*PlanetSize
+ interior {Int}
+ }
+#end
+
+//A much more realistic sky could be done using multiple layers
+//of clouds to simulate clouds of different densities and with
+//different altitudes. Of course, this would render a lot slower...
+
+//the "cloud shell", creates clouds.
+SkyShell(1000, 1300,
+ interior {
+ media {
+ method 3 aa_threshold 0.1 aa_level 3
+ samples 4 intervals 1
+ scattering {2, color White*0.0075 extinction 1}
+ density {wrinkles
+ scale < 5, 2, 2>*200
+ warp {turbulence 2}
+ color_map {
+ [0 color rgb 1]
+ [0.5 color rgb 0.85]
+ [0.55 color rgb 0.035]
+ [1 color rgb 0.035]
+ }
+ }
+ }
+/* media {
+ method 3
+ samples 2 intervals 1
+ scattering {2, color White*0.0075*0.015 extinction 1}
+ }*/
+ }
+)
+
+//the "atmosphere shell", creates the blue sky and orange light.
+SkyShell(1001, 2200,
+ interior {
+ media {
+ method 3
+ samples 2 intervals 1
+ scattering {4, color rgb < 0.25, 0.6, 0.9>*0.00075 extinction 1}
+ }
+ }
+)
+
diff --git a/render_povray/templates_pov/patio-radio.pov b/render_povray/templates_pov/patio-radio.pov
new file mode 100644
index 00000000..a5a0a0ca
--- /dev/null
+++ b/render_povray/templates_pov/patio-radio.pov
@@ -0,0 +1,292 @@
+// This work is licensed under the Creative Commons Attribution 3.0 Unported License.
+// To view a copy of this license, visit http://creativecommons.org/licenses/by/3.0/
+// or send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View,
+// California, 94041, USA.
+
+// Persistence Of Vision raytracer sample file.
+//
+// -w320 -h240
+// -w800 -h600 +a0.3
+
+//===================== RENAISSANCE PATIO =====================================
+
+//===================== RADIANCE AND ENVIRONMENT SETTINGS =====================
+#version 3.7;
+#declare Rad_Quality = 2;
+
+global_settings {
+ assumed_gamma 1.0
+
+#switch (Rad_Quality)
+ #case (1)
+ radiosity { // --- Settings 1 (fast) ---
+ pretrace_start 0.08
+ pretrace_end 0.02
+ count 50
+ error_bound 0.5
+ recursion_limit 1
+ }
+ #break
+ #case (2)
+ radiosity { // --- Settings 2 (medium quality) ---
+ pretrace_start 0.08
+ pretrace_end 0.01
+ count 120
+ error_bound 0.25
+ recursion_limit 1
+ }
+ #break
+ #case (3)
+ radiosity { // --- Settings 3 (high quality) ---
+ pretrace_start 0.08
+ pretrace_end 0.005
+ count 400
+ error_bound 0.1
+ recursion_limit 1
+ }
+ #break
+ #case (4)
+ radiosity { // --- Settings 4 (medium quality, recursion_limit 2) ---
+ pretrace_start 0.08
+ pretrace_end 0.005
+ count 350
+ error_bound 0.15
+ recursion_limit 2
+ }
+ #break
+ #end
+
+}
+
+fog {
+ fog_type 2
+ fog_alt 1.3
+ fog_offset 0
+ color rgb <0.7, 0.8, 0.9>
+ distance 800
+}
+
+light_source {<1000, 10000, -15000> color rgb <1.0, 0.9, 0.78>*2.3}
+
+sphere { // --- Sky ---
+ <0, 0, 0>, 1
+ texture {
+ pigment {
+ gradient y
+ color_map {
+ [0.0 color rgb < 1.0, 1.0, 1.0 >]
+ [0.3 color rgb < 0.5, 0.6, 1.0 >]
+ }
+ }
+ finish { diffuse 0 #if (version < 3.7) ambient 1 #else emission 1 #end }
+ }
+ scale 10000
+ hollow on
+ no_shadow
+}
+
+//===================== THE SCENERY ITSELF ====================================
+
+#include "colors.inc"
+
+camera { location <500,150,0>
+ angle 65 // direction z
+ right x*image_width/image_height
+ look_at <0,150,320>
+ }
+
+plane {y,0 pigment {color rgb <0.776,0.706,0.706>}}
+
+#declare Arch_01 =
+union {
+ difference {
+ cylinder {<-20,0,0>,<20,0,0>,140}
+ cylinder {<-21,0,0>,<21,0,0>,130}
+ torus {130 2 rotate z*90 translate x*20}
+ torus {130 2 rotate z*90 translate x*-20}
+ }
+ difference {
+ cylinder {<-18,0,0>,<18,0,0>,130}
+ cylinder {<-21,0,0>,<21,0,0>,125}
+ }
+ torus {139 1 rotate z*90 translate x*20}
+ torus {136 1 rotate z*90 translate x*20}
+ torus {139 1 rotate z*90 translate x*-20}
+ torus {136 1 rotate z*90 translate x*-20}
+clipped_by {plane {y,0 inverse}}
+}
+
+#macro SphereBox (Radius)
+ #local SpRad = sqrt (Radius*Radius + Radius*Radius);
+ intersection {
+ sphere {0,SpRad}
+ box {<-Radius,0,-Radius>,<Radius,Radius,Radius>}
+ }
+#end
+
+#declare Column_01 = union {
+ box {<-40,0,-40>,<40,50,40>}
+ box {<-35,50,-35>,<35,60,35>}
+ cylinder {<0,60,0>,<0,66,0>,28}
+ torus {28 3 translate y*63}
+ difference {
+ cylinder {<0,66,0>,<0,70,0>,25}
+ torus {25 2 translate y*68}
+ }
+ cylinder {<0,70,0>,<0,74,0>,25}
+ torus {25 2 translate y*72}
+ cylinder {<0,74,0>,<0,76,0>,25}
+ sphere {<0,0,0>,23 scale <1,15,1> translate y*76 clipped_by {cylinder {<0,76,0>,<0,265,0>,30}}}
+ torus {20 2 translate y*255}
+ torus {19 2 translate y*258}
+ object {SphereBox (20) rotate z*180 translate y*(260+22)}
+ box {<-25,282,-25>,<25,285,25>}
+ box {<-20,285,-22>,<20,295,22>}
+ difference {
+ cylinder {<-22,290,0>,<22,290,0>,5}
+ cylinder {<-23,290,0>,<23,290,0>,3}
+ }
+ box {<-23,295,-23>,<23,298,23>}
+ box {<-28,298,-28>,<28,300,28>}
+}
+
+#declare Vault_01 =
+difference {
+ box {<-160,0,-160>,<160,250,160>}
+ cylinder {<-170,0,0>,<170,0,0>,130}
+ cylinder {<-170,0,0>,<170,0,0>,130 rotate y*90}
+}
+
+#declare Vault_02 = //(vault de coin)
+difference {
+ union {
+ box {<-180,0,-160>,<180,250,160>}
+ box {<-160,0,-180>,<160,250,180>}
+ }
+ cylinder {<-190,0,0>,<190,0,0>,130}
+ cylinder {<-190,0,0>,<190,0,0>,130 rotate y*90}
+}
+
+#declare Spindle_01 =
+lathe{
+ cubic_spline
+ 12,
+ <0.017005,-0.005668>,
+ <0.117619,-0.004251>,
+ <0.123287,0.072272>,
+ <0.068020,0.124704>,
+ <0.076523,0.195559>,
+ <0.141709,0.444967>,
+ <0.075106,0.524324>,
+ <0.138875,0.616435>,
+ <0.055267,0.916859>,
+ <0.137458,0.973543>,
+ <0.161549,1.000468>,
+ <0.204061,0.991965>
+}
+
+#declare Band_01 =
+union {
+ box {<0,0,-25>,<-1,60,25>}
+ box {<0,0,-25>,<5,2,25>}
+ box {<0,8,-25>,<3,2,25>}
+ box {<0,8,-25>,<6,15,25>}
+ box {<0,8,-10>,<6,15,-8>}
+ box {<0,8,10>,<6,15,8>}
+ box {<0,20,-25>,<3,19,25>}
+ box {<0,50,-25>,<5,60,25>}
+ box {<0,50,-25>,<3,55,25>}
+ box {<0,20,-2>,<3,40,-4>}
+ box {<0,20,-6>,<3,40,-8>}
+ box {<0,20,2>,<3,40,4>}
+ box {<0,20,6>,<3,40,8>}
+ box {<0,42,-25>,<6,40,25>}
+ box {<0,0,-2>,<7,8,-4>}
+ box {<0,0,-6>,<7,8,-8>}
+ box {<0,0,2>,<7,8,4>}
+ box {<0,0,6>,<7,8,8>}
+}
+
+#declare Balcony_01 = union {
+ box {<-10,0,-.5>,<10,10,.5>}
+ cylinder {<-10,5,-.5>,<-10,5,.5>,4}
+ cylinder {<10,5,-.5>,<10,5,.5>,4}
+}
+
+#declare Group1 = union {
+ object {Arch_01 translate <-490,300,0>}
+ object {Arch_01 translate <-490,300,300>}
+ object {Arch_01 translate <-490,300,-300>}
+
+ object {Column_01 translate <-490,0,150>}
+ object {Column_01 translate <-490,0,-150>}
+ object {Column_01 translate <-490,0,-450>}
+ object {Column_01 translate <-490,0,450>}
+
+ object {Column_01 translate <-790,0,150>}
+ object {Column_01 translate <-790,0,-150>}
+ object {Column_01 translate <-790,0,-450>}
+ object {Column_01 translate <-790,0,450>}
+ object {Column_01 translate <-790,0,-450-40>}
+ object {Column_01 translate <-790,0,450+40>}
+
+ object {Arch_01 rotate y*90 translate <-490-150,300,150>}
+ object {Arch_01 rotate y*90 translate <-490-150,300,-150>}
+ object {Arch_01 rotate y*90 translate <-490-150,300,450>}
+ object {Arch_01 rotate y*90 translate <-490-150,300,-450>}
+ object {Arch_01 rotate y*90 translate <-490-150,300,450+40>}//doubleaux
+ object {Arch_01 rotate y*90 translate <-490-150,300,-450-40>}
+
+ object {Vault_01 translate <-640,300,0>}
+ object {Vault_01 translate <-640,300,300>}
+ object {Vault_01 translate <-640,300,-300>}
+ object {Vault_02 translate <-640,300,640>}//coin
+
+ #declare I=0;
+ #while (I < 1000)
+ object {Band_01 translate <-480,500,(-470 + I)>}
+ #declare I=I+50;
+ #end
+
+ #declare I=0;
+ #while (I < 1000)
+ object {Spindle_01 scale <60,60,60> translate <-500,550,(-500 + I)>}
+ #declare I=I+40;
+ #end
+
+ object {Balcony_01 scale <1,1,1020> translate <-500,610,0>}
+ object {Balcony_01 scale <1,1,1020> translate <-500,610,0> rotate y*90}
+ object {Balcony_01 scale <1,1,1020> translate <-500,610,0> rotate y*180}
+ object {Balcony_01 scale <1,1,1020> translate <-500,610,0> rotate y*270}
+
+ box {<-790,0,-810>,<-810,450,810>}
+
+}
+
+#declare PatioComplete = union {
+ object {Group1}
+ object {Group1 rotate y*90}
+ object {Group1 rotate y*180}
+ object {Group1 rotate y*270}
+}
+
+object {PatioComplete
+ pigment {Wheat}
+ finish {ambient 0.0 diffuse 0.6}
+}
+
+#declare Paving_01 =
+union {
+ box {<-40,0,-490>,<40,.1,490> translate x*150}
+ box {<-40,0,-490>,<40,.1,490> translate x*-150}
+ box {<-40,0,-490>,<40,.1,490> translate x*490}
+ box {<-40,0,-490>,<40,.1,490> translate x*-480}
+
+ texture {
+ pigment {color rgb <0.706,0.714,0.776>*.8}
+ finish {ambient 0.0 diffuse 0.6}
+ }
+}
+
+object {Paving_01 translate <-10,0,0>}
+object {Paving_01 rotate y*90 translate <-10,0,0>}
diff --git a/render_povray/templates_pov/subsurface.pov b/render_povray/templates_pov/subsurface.pov
new file mode 100644
index 00000000..088ba102
--- /dev/null
+++ b/render_povray/templates_pov/subsurface.pov
@@ -0,0 +1,176 @@
+// This work is licensed under the Creative Commons Attribution 3.0 Unported License.
+// To view a copy of this license, visit http://creativecommons.org/licenses/by/3.0/
+// or send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View,
+// California, 94041, USA.
+
+// Persistence of Vision Ray Tracer Scene Description File
+// File: subsurface.pov
+// Vers: 3.7
+// Desc: Subsurface Scattering Demo - Candle on a Checkered Plane
+// Date: 2011-02-25
+// Auth: Christoph Lipka
+//
+// Recommended settings:
+// +W640 +H480 +A0.3
+// Rendering time:
+// ~4 min on a 2.3GHz AMD Phenom X4 9650 QuadCore
+
+#version 3.7;
+
+#include "colors.inc"
+
+global_settings {
+ assumed_gamma 1.0
+ mm_per_unit 40
+ subsurface { samples 400, 40 }
+ ambient_light 0.3
+}
+
+// ----------------------------------------
+
+camera {
+ location <0.0, 2.5, -4.0>
+ angle 50 // direction 1.5*z
+ right x*image_width/image_height
+ look_at <0.5, 1.0, 0.0>
+}
+
+sky_sphere {
+ pigment {
+ gradient y
+ color_map {
+ [0.0 rgb <0.6,0.7,1.0>]
+ [0.7 rgb <0.0,0.1,0.8>]
+ }
+ }
+}
+
+light_source {
+ <-30, 30, -30>
+ color rgb <1,1,1>
+}
+
+// ----------------------------------------
+
+// a checkered white/"black" marble plane
+plane {
+ y, -0.01
+ texture {
+ checker
+ texture {
+ // marble parameters derived from Jensen et al. "A Practical Model for Subsurface Light Transport", Siggraph 2001
+ pigment {
+ crackle
+ turbulence 0.7
+ color_map {
+ [0.5 color rgb <0.83,0.79,0.75>*1.0]
+ [0.9 color rgb <0.83,0.79,0.75>*0.8]
+ [1.0 color rgb <1.00,0.75,0.70>*0.5]
+ }
+ scale 0.3
+ }
+ normal {
+ agate 0.085
+ turbulence 2
+ }
+ finish{
+ diffuse 0.8
+ specular 0.6
+ reflection { 0.2 fresnel }
+ conserve_energy
+ subsurface { translucency <0.4562, 0.3811,0.3325> }
+ }
+ }
+ texture {
+ pigment{ crackle turbulence 0.25
+ form <-1,1,0.05>
+ color_map { [0.00 color rgb<1,1,1>]
+ [0.025 color rgb<0.252,0.482,0.372>]
+ [0.05 color rgb<0.082,0.092,0.072>]
+ [0.15 color rgb<0.05,0.09,0.06>]
+ [0.52 color rgb<0.008,0.019,0.012>]
+ [0.65 color rgb<0.0025,0.0029,0.0014>]
+ [0.75 color rgb<0.0060,0.0084,0.0065>]
+ [1.00 color rgb<0.008,0.012,0.012>]
+ }
+ }
+ normal {
+ agate 0.085
+ turbulence 2
+ }
+ finish{
+ diffuse 0.8
+ specular 0.6
+ reflection { 0.2 fresnel }
+ conserve_energy
+ subsurface { translucency <0.4562, 0.3811,0.3325> }
+ }
+ }
+ scale 4
+ translate <0.7,0,1>
+ }
+ interior { ior 1.5 }
+}
+
+// the classic chrome sphere
+sphere { <1.5,0.7,1>, 0.7
+ pigment { color rgb 1 }
+ finish {
+ ambient 0 diffuse 0
+ specular 0.7 roughness 0.01
+ conserve_energy
+ reflection { 0.7 metallic }
+ }
+}
+
+// a candle...
+blob {
+ threshold 0.5
+ cylinder { <0.0, 0.0, 0.0>,
+ <0.0, 2.0, 0.0>, 1.0, 1.0 } // candle "body"
+ sphere { <0.0, 2.5, 0.0>, 0.8, -2.0 } // (used to shape the candle top)
+ sphere { <0.0,-0.52, 0.0>, 0.8, -2.0 } // (used to shape the candle bottom)
+ sphere { <0.0, 2.0, -0.5>, 0.1, -0.2 } // the "notch" where wax runs over
+ cylinder { <0.0, 1.88,-0.52>,
+ <0.0, 1.5, -0.52>, 0.05, 0.2 } // a streak of wax running over
+ sphere { <0.0, 1.5, -0.55>, 0.07, 0.2 } // a drop of of wax running over
+ texture {
+ // bees' wax
+ pigment { color rgb <0.8,0.50,0.01> }
+ finish{
+ diffuse 0.6 specular 0.6 roughness 0.1
+ subsurface { translucency <5,3,1>*0.5 }
+ }
+ }
+ interior { ior 1.45 }
+ rotate -y*45
+}
+
+// ... and the wick
+intersection {
+ box { <-1,-1,-1>, <0,1,1> }
+ torus { 0.15, 0.03 }
+ rotate x*90
+ translate <0.15, 1.95, 0.0>
+ pigment { color rgb 0 }
+ finish { ambient 0 diffuse 1 specular 0 }
+ no_shadow
+}
+
+// a classic-textured slab for comparison
+superellipsoid {
+ <0.1,0.1>
+ texture {
+ pigment { color rgb <0.9,0.6,0.6> }
+ finish{
+ diffuse 1.0
+ specular 0.6
+ reflection { 0.2 fresnel }
+ conserve_energy
+ }
+ }
+ interior { ior 1.45 }
+ scale <0.25,0.05,0.25>
+ rotate y*30
+ translate <1.2,0.05,0.25>
+}
diff --git a/render_povray/templates_pov/wallstucco.pov b/render_povray/templates_pov/wallstucco.pov
new file mode 100644
index 00000000..b6231266
--- /dev/null
+++ b/render_povray/templates_pov/wallstucco.pov
@@ -0,0 +1,186 @@
+// This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
+// To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a
+// letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.
+
+// Persistence Of Vision Ray Tracer Scene Description File
+// Desc: Brick wall & Stucco
+// Date: 2000/03/14
+// Updated: 2001/07/26
+// Auth: Ingo Janssen
+// Updated: 2013/02/15 for 3.7
+//
+// -w320 -h240
+// -w800 -h600 +a0.3
+//
+
+#version 3.7;
+global_settings { assumed_gamma 1.0
+ noise_generator 1 } // change to 2 or 3.
+
+light_source {
+ < 500, 500,500>
+ rgb 1
+}
+
+camera {
+ location <0.2, 0.0,-25.0>
+ look_at <0.0, 0.0, 0.0>
+ right x*image_width/image_height // keep propotions with any aspect ratio
+ angle 65
+}
+
+//====== Doing the Stucco ======
+
+#declare L2=0.55; //clock; //Set amount of decay of stucco, higher value is more decay. animate
+#declare PWrink= pigment { //Mortar
+ wrinkles
+ scale 0.25
+ colour_map {
+ [0, rgb 0.5]
+ [L2, rgb 0.96]
+ }
+}
+#declare Stucco= pigment { //Stucco
+ granite
+ scale 0.05
+ colour_map {
+ [0, rgb 0.96]
+ [1, rgb 1]
+ }
+}
+
+#declare StuMor= pigment { //Stucco & Mortar
+ pigment_pattern{
+ wrinkles
+ scale 0.25
+ }
+ pigment_map {
+ [L2, PWrink]
+ [L2, Stucco]
+ }
+}
+
+#declare HF_Stucco=height_field { //Turn it into a hightfield
+ function 500, 500{ //500,500 for test higher is better, but watch the memory
+ pigment{StuMor }
+ }
+ translate -0.5
+ rotate -90*x
+ scale <20,20,2>
+ pigment { //Use the mortar to colour up the stucco
+ pigment_pattern {
+ wrinkles
+ scale 0.25
+ }
+ color_map {
+ [L2, rgb 0.5]
+ [L2, rgb <1,1,0.95>]
+ }
+ warp {planar z, 0}
+ translate <-0.5, -0.5, 0>
+ rotate <180,0,0>
+ scale <20,20,2>
+ }
+}
+
+//====== Lay some Bricks ======
+
+//Size : dimension of the brick in a vector x, y, z
+//Mortar : width of the joint.
+//Turbulence etc : control the stone deformation.
+#macro BrickWall(Size, Mortar, Turbulence, Octaves, Lambda, Omega)
+
+ #local Brick= pigment {
+ boxed // one single brick ...
+ scale <Size.x/2,Size.y/2,Size.z/2>
+ translate <Size.x/2+Mortar,Size.y/2+Mortar,0>
+ warp {repeat x*(Size.x+Mortar)} // ... repeated over and over again.
+ warp {repeat y*(2*(Size.y+Mortar))}
+ }
+
+ #declare FBrickWall= function {
+ pigment {
+ pigment_pattern {
+ gradient y
+ warp {repeat y}
+ scale <1,2*(Size.y+Mortar),1>
+ }
+ pigment_map {
+ [0.5, Brick
+ warp { // deforming the bricks ...
+ turbulence Turbulence
+ octaves Octaves
+ lambda Lambda
+ omega Omega
+ }
+ translate <0,-(Mortar/2),0>
+ ]
+ [0.5, Brick // ... row by row.
+ warp {
+ turbulence Turbulence
+ octaves Octaves
+ lambda Lambda
+ omega Omega
+ }
+ translate <(Size.x/2)+Mortar,(Size.y+(Mortar/2)),0>
+ ]
+ }
+ }
+ }
+#end
+
+#declare Wall=pigment {
+ BrickWall(<4,1,1>,0.2,<0.05,0.1,0>,6,0.5,0.5)
+ function{FBrickWall(x,y,z).gray}
+ pigment_map { // give some stucture to the joint ...
+ [0, granite
+ scale 0.1
+ colour_map {
+ [0, rgb 0][1, rgb 0.3]
+ }
+ ]
+ [0.05, crackle // ... and the bricks.
+ scale <3,1,1>
+ turbulence 0.5
+ colour_map {
+ [0, rgb 0.34][1, rgb 0.5]
+ }
+ ]
+ }
+ scale 0.04
+}
+
+#declare HF_Wall=height_field { // Build the wall
+ function 500, 500 { //500,500, for test, higher is better & slower. Watch the memory use.
+ pigment{Wall}
+ }
+ smooth
+ translate -0.5
+ rotate <-90,0,0>
+ scale <33,33,1>
+ pigment {
+ Wall
+ pigment_map {
+ [0, rgb 0.6]
+ [0.05, wrinkles
+ turbulence 0.3
+ scale <2,0.3,1>
+ colour_map {
+ [0.0, rgb <0.5,0.3,0.25>]
+ [0.15, rgb <0.5,0.3,0.25>/1.3]
+ [0.3, rgb <0.5,0.3,0.25>]
+ [0.6, rgb <0.6,0.3,0.25>/1.6]
+ [0.8, rgb <0.5,0.3,0.25>]
+ [1.0, rgb <0.5,0.3,0.35>/2]
+ }
+ ]
+ }
+ translate <-0.5, -0.5, 0>
+ rotate -90*x
+ warp {planar y, 0}
+ scale <33,33,1>
+ }
+}
+
+object {HF_Stucco}
+object {HF_Wall translate <0,0,-0.8>}