home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #7 / amigamamagazinepolishissue1998.iso / varia / povray3 / povray3_fpu / pov3demo / showoff / whiltile.pov < prev   
Text File  |  1997-12-12  |  5KB  |  178 lines

  1. // Persistence Of Vision raytracer version 3.0 sample file.
  2. // File: WhilTile.POV 10/01/95
  3. // Auth: Eduard Schwan with modifications by Dan Farmer
  4. // Desc: A tile floor, using the 'while' loop and 'if' statements
  5. //       to create a unique pattern automatically.
  6.  
  7. // Enable this next line to use a simpler test shape for debugging
  8. // #declare DO_SIMPLE_SHAPE = 1
  9.  
  10. #version 3.0
  11. global_settings { assumed_gamma 1.0 }
  12.  
  13. #include "colors.inc"
  14. #include "woods.inc"
  15.  
  16. // ------------------------------------------------------------------
  17. // set viewer's position in the scene
  18. camera {
  19.   location  <0.0, 22.0, -24.0> // position of camera <X Y Z>
  20.   direction 4.0*z              // which way are we looking <X Y Z>
  21.   up        y                  // which way is +up <X Y Z>
  22.   right     4/3*x              // which way is +right <X Y Z> and aspect ratio
  23.   look_at   <0.0, 0.0, -1.0>   // point center of view at this point <X Y Z>
  24. }
  25.  
  26. // ------------------------------------------------------------------
  27. // create a regular point light source
  28. light_source { <10, 10, -10> color rgb 1 translate <-20, 40, -20> }
  29.  
  30.  
  31. // ------------------------------------------------------------------
  32. #declare TileShape =
  33. #ifdef (DO_SIMPLE_SHAPE)
  34.   // simpler shape for debugging
  35.   sphere{0, 1 scale <0.5,0.1,0.5> translate 0.1*y}
  36. #else
  37.   // real tile shape
  38.   intersection  {
  39.     box { -1, 1 }  // square tile
  40.     cylinder { -2*x, +2*x, 0.9 } // rounded edges along X axis
  41.     cylinder { -2*z, +2*z, 0.9 } // rounded edges along Z axis
  42.     sphere { 0, 2.0 translate 2.6*y inverse }  // concave top surface
  43. //  sphere { 0, 1.1 } // rounded corners
  44. //  bounded_by { box { -1, 1 } }
  45.     scale <0.5,0.2,0.5>  // flatten the tile down on Y axis
  46. //    translate 0.2*y  // move it up so its bottom is on origin
  47.   }
  48. #end
  49.  
  50. // ------------------------------------------------------------------
  51. default {
  52.   texture { pigment {rgb 1} finish {ambient 0.2 reflection 0.2 specular 0.7} }
  53. }
  54.  
  55. // light tinted glass
  56. #declare CrystalTex =
  57. texture {
  58.   pigment { rgbf <1.00, 0.70, 0.70, 0.95> }
  59.   finish { ior 1.8 refraction 1 roughness 0.001 }
  60. }
  61.  
  62. // Black slate marble with white strata
  63. #declare SlateTex =
  64. texture {
  65.   pigment {
  66.     marble
  67.     turbulence 0.8 rotate 60*y
  68.     color_map {
  69.       [0.10 rgb 0.01]
  70.       [0.12 rgb 0.70]
  71.       [0.15 rgb 0.01]
  72.       [0.20 rgb 0.01]
  73.       [0.30 rgb <0.9,0.7,0.6>]
  74.       [0.50 rgb 0.01]
  75.     }
  76.     scale 0.4
  77.   }
  78.   finish {reflection 0.2}
  79. }
  80.  
  81. // green crackle
  82. #declare CrackleTex =
  83. texture {
  84.   pigment { color rgb <0.1, 0.5, 0.1> }
  85.   normal {crackle 0.5 turbulence 0.2 scale 0.3}
  86. }
  87.  
  88. // brown/blue pinwheel radial pattern
  89. #declare PinwheelTex =
  90. texture {
  91.   pigment {
  92.     radial
  93.     frequency 8
  94.     color_map {
  95.       [0.00 blue 0.4]
  96.       [0.50 blue 0.4]
  97.       [0.60 rgb <0.5,0.6,0.9>]
  98.     }
  99.   }
  100. }
  101.  
  102. #declare MSetTex =
  103. texture {
  104.   pigment {
  105.     mandel 100
  106.     color_map {
  107.       [0.0  color MidnightBlue ]
  108.       [0.2  color Yellow  ]
  109.       [0.6  color Scarlet ]
  110.       [0.8  color Magenta ]
  111.       [1.0  color Gray10 ]
  112.     }
  113.     scale .25
  114.     rotate x*90
  115.     translate x*0.225
  116.     //rotate y*45
  117.   }
  118. }
  119.  
  120. // ------------------------------------------------------------------
  121. // declare the set of tiles as a union built by a loop
  122. #declare Max  = 16     // # of tiles across and down
  123. #declare XMax = Max/2
  124. #declare ZMax = Max/2
  125.  
  126. #declare ZCount = -ZMax
  127.  
  128. #declare Tile_Set =
  129. union {
  130.     #while (ZCount <= ZMax)
  131.  
  132.       #declare XCount = -XMax
  133.       #while (XCount <= XMax)
  134.  
  135.       object {
  136.         TileShape
  137.         #if(XCount=0 & ZCount=0)
  138.         // Center tile
  139.           texture { MSetTex }
  140.         #else
  141.           #if (abs(XCount) = abs(ZCount))
  142.             // An "X" pattern of tiles, diagonal through origin
  143.             texture { CrystalTex }
  144.           #else
  145.             #if (abs(XCount)*abs(ZCount) < XMax)
  146.               // A "fat plus" pattern, centered on origin
  147.               texture {
  148.                 SlateTex
  149.                 rotate (XCount+ZCount)*10*y
  150.                 translate <-XCount, 0, -ZCount>  // alter texture per tile
  151.               }
  152.             #else
  153.               #if (abs(mod(XCount,3)) = abs(mod(ZCount,2)))
  154.               // An alternating sprinkle of remaining tiles
  155.               texture {
  156.                 CrackleTex
  157.                 translate <-XCount, 0, -ZCount>  // alter texture per tile
  158.               }
  159.               #else
  160.                 texture { PinwheelTex }
  161.               #end
  162.             #end
  163.           #end
  164.         #end
  165.         translate <XCount, 0, ZCount>
  166.       }
  167.  
  168.       #declare XCount = XCount+1
  169.       #end  // Inner X loop
  170.  
  171.     #declare ZCount = ZCount+1
  172.     #end  // Outer Z loop
  173. }
  174.  
  175. // ------------------------------------------------------------------
  176. // make the tile object
  177. object { Tile_Set rotate y*30}
  178.