home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 1995 January / pcw-0195.iso / polyray / dat / uvmaps / disp3.pi < prev    next >
Text File  |  1994-12-31  |  4KB  |  163 lines

  1. //
  2. // Diplacement map: using a height map for displacement.  In order to handle
  3. // shadows in the image, a depthmapped light is used.  This image is generated
  4. // as two frames.  The first frame makes the shadow map, the second frame
  5. // builds the image
  6. //
  7.  
  8. // Generic Polyray input File
  9. // Polyray input file: Alexander Enzmann
  10. start_frame 0
  11. end_frame 1
  12. outfile disp
  13.  
  14. // Define the characteristics of the depth mapped light
  15. define light_from <-10, 20, -20>
  16. define light_at <0, 0, 0>
  17. define light_up <0, 1, 0>
  18. define light_angle 35
  19.  
  20. if (frame == 0) {
  21.    // The first frame generates the shadow map
  22.    define eye_pos light_from
  23.    define at_pos light_at
  24.    define up_dir light_up
  25.    define fov_angle light_angle
  26.    define x_res 320
  27.    define y_res 240
  28.    define fov_aspect 4/3
  29.    define form 1
  30.    }
  31. else {
  32.    // The second frame generates the actual image
  33.    define eye_pos <0, 0, -15>
  34.    define at_pos <0, 0, 0>
  35.    define up_dir <0, 1, 0>
  36.    define fov_angle 30
  37.    define x_res 480
  38.    define y_res 320
  39.    define fov_aspect 4/3
  40.    define form 0
  41.    }
  42.  
  43. // Set up the camera, the values here depend on what happened in the 
  44. viewpoint {
  45.    from eye_pos
  46.    at at_pos
  47.    angle fov_angle
  48.    up up_dir
  49.    resolution x_res, y_res
  50.    aspect fov_aspect
  51.    image_format form
  52.    }
  53.  
  54. background black
  55.  
  56. // Can only use the light after we have rendered the depth map for it
  57. if (frame == 1)
  58. depthmapped_light {
  59.    depth "disp000.tga"
  60.    from light_from
  61.    at light_at
  62.    up light_up
  63.    hither 0.2
  64.    angle light_angle
  65.    aspect fov_aspect
  66.    }
  67.  
  68. include "..\colors.inc"
  69. include "..\texture.inc"
  70.  
  71. define fract_image image("fract005.jpg")
  72.  
  73. define fract_tex
  74. texture {
  75.    special surface {
  76.       color planar_imagemap(fract_image, <u, 0, v>)
  77.       ambient 0.2
  78.       diffuse 0.7
  79.       specular white, 0.1
  80.       microfacet Cook 5
  81.       }
  82.    }
  83.  
  84. define disp_fn (heightmap(fract_image, <u, 0, v>) + 128) / 256
  85.  
  86. object {
  87.    sphere <0, 1, 0>, 1
  88.    fract_tex
  89.    // shiny_blue
  90.    uv_steps 128, 64
  91.    displace disp_fn
  92.    rotate <0, -90, 0>
  93.    }
  94.  
  95. object { sphere <0, 1, 0>, 2.5 matte_grey dither 0.05 scale <1, 1.5, 1> }
  96. object { sphere <0, 1, 0>, 2.6 matte_grey dither 0.05 scale <1, 1.5, 1> }
  97. object { sphere <0, 1, 0>, 2.7 matte_grey dither 0.05 scale <1, 1.5, 1> }
  98. object { sphere <0, 1, 0>, 2.8 matte_grey dither 0.05 scale <1, 1.5, 1> }
  99. object { sphere <0, 1, 0>, 2.9 matte_grey dither 0.05 scale <1, 1.5, 1> }
  100.  
  101. define marble_turb 4
  102. define marble_fn  sawtooth(P[0] + marble_turb * noise(P,4))
  103. define red_marble_map
  104.    color_map(
  105.       [0.0, 0.8, <0.8, 0.8, 0.6>, <0.8, 0.4, 0.4>]
  106.       [0.8, 1.0, <0.8, 0.4, 0.4>, <0.8, 0.2, 0.2>])
  107. define red_marble
  108. texture {
  109.    special surface {
  110.       color red_marble_map[marble_fn]
  111.       ambient 0.2
  112.       diffuse 0.8
  113.       specular white, 0.5
  114.       microfacet Reitz 10
  115.       }
  116.    rotate <90, 0, 0>
  117.    scale <0.1, 0.1, 0.1>
  118.    }
  119.  
  120. object {
  121.    object { cylinder <0, -3, 0>, <0, -2, 0>, 2 uv_steps 32, 32 }
  122.    + object { disc <0, -2, 0>, <0, 1, 0>, 1, 2 }
  123.    + object { cylinder <0, -3, 0>, <0, -2, 0>, 1 }
  124.    red_marble
  125.    }
  126.  
  127. define freq 12
  128. define candlestick
  129. object {
  130.    cylinder <0, -3, 0>, <0, 3, 0>, 0.1
  131.    uv_steps 32, 64
  132.    displace N * 0.5 * (0.1 + (1 + cos(5 * freq * v)) * exp(-2 * v))
  133.    }
  134. define slat1
  135.    object {
  136.       box <0, 0, -30>, <2.95, 1, 30>
  137.       wooden { scale <0.3, 0.3, 0.3> rotate <10, 5, 0> }
  138.       }
  139. define slat2
  140.    object {
  141.       box <0, 0, -30>, <2.95, 1, 30>
  142.       wooden { scale <0.3, 0.3, 0.3> rotate <10, 5, 0> translate <0, 0, 100> }
  143.       }
  144.  
  145. object {
  146.      candlestick { translate <-3, 0, -3> }
  147.    + candlestick { translate <-3, 0,  3> }
  148.    + candlestick { translate < 3, 0, -3> }
  149.    + candlestick { translate < 3, 0,  3> }
  150.    sapphire_agate
  151.    }
  152. object {
  153.      slat1 { translate <-12, 0, 0> }
  154.    + slat2 { translate < -9, 0, 0> }
  155.    + slat1 { translate < -6, 0, 0> }
  156.    + slat2 { translate < -3, 0, 0> }
  157.    + slat1 { translate <  0, 0, 0> }
  158.    + slat2 { translate <  3, 0, 0> }
  159.    + slat1 { translate <  6, 0, 0> }
  160.    + slat2 { translate <  9, 0, 0> }
  161.    translate <0, -4, 0>
  162.    }
  163.