home *** CD-ROM | disk | FTP | other *** search
- // Persistence Of Vision raytracer version 3.0 sample file.
- // File by Dan Farmer
- // Radiosity demonstration
-
- #version 3.0
- global_settings { assumed_gamma 2.2 }
-
- #include "colors.inc"
- #include "textures.inc"
-
- #include "consts.inc"
- #declare Rad_Quality = Radiosity_Fast
- #include "rad_def.inc"
-
- // Uses ray_count and error_bound as the main speed/quality tradeoffs
- // Other changes made to emphasize or minimize effects.
- global_settings {
- #switch(Rad_Quality)
-
- // Run it fast, don't try to make it look good, make sure that
- // you can actually see where the radiosity boundaries are.
- #case (Radiosity_Debug)
- radiosity {
- count 10 // Quick, but very blotchy
- error_bound 0.3 // Match to value of the quality you're debugging
- gray_threshold 0 // Emphasize color bleeding drastically
- distance_maximum 10 // Scene-dependent! Leave 0 if unsure of proper value.
- low_error_factor 0.8 // Match to value of the quality you're debugging
- nearest_count 1 // Will tend to cause boundaries to show
- minimum_reuse 0.015 // Match to value of the quality you're debugging
- brightness 3.3 // Doesn't really matter. Not used in final output.
- recursion_limit 1 // 1 is quickest
- }
- #debug "\nRadiosity_Debug in use"
- #break
-
- // Make it look as good as you can, but I'm in a hurry
- #case (Radiosity_Fast)
- radiosity {
- count 80 // Do more calculations to calculate each sample
- error_bound 0.4 // Main quality/time adjustment = sample spacing
- gray_threshold 0.6 // Higher than usual to hide colour bleed errors
- distance_maximum 10 // Scene-dependent! Leave 0 if unsure of proper value.
- low_error_factor 0.9 // Only slightly lower error bound during preview
- nearest_count 5
- minimum_reuse 0.025 // Don't do too many samples in corners
- brightness 3.3 // doesn't really matter. Not used in final output.
- recursion_limit 1 // can be 1 (usual) or 2 (for patient people)
- }
- #debug "\nRadiosity_Fast in use"
- #break
-
- // Typical values
- #case (Radiosity_Normal)
- radiosity {
- count 200 // Calculate reasonable accurate samples
- error_bound 0.3 // Main quality/time adjustment = sample spacing
- gray_threshold 0.5 // Try 0.33-0.50. Just a matter of taste
- distance_maximum 10 // Scene-dependent! Leave 0 if unsure of proper value.
- low_error_factor 0.75
- nearest_count 7
- minimum_reuse 0.017 // reasonable number of samples in corners
- brightness 3.3 // doesn't really matter. Not used in final output.
- recursion_limit 1 // can be 1 (usual) or 2 (for patient people)
- }
- #debug "\nRadiosity_Normal in use"
- #break
-
- // Typical values, but with 2 bounces. Starts slow, but picks up steam!
- #case (Radiosity_2Bounce)
- radiosity {
- count 200 // Calculate reasonable accurate samples
- error_bound 0.3 // Main quality/time adjustment = sample spacing
- gray_threshold 0.5 // Try 0.33-0.50. Just a matter of taste
- distance_maximum 10 // Scene-dependent! Leave 0 if unsure of proper value.
- low_error_factor 0.75
- nearest_count 7
- minimum_reuse 0.017 // reasonable number of samples in corners
- brightness 3.3 // doesn't really matter. Not used in final output.
- recursion_limit 2 // Slow at first, but don't give up, it gets faster
- }
- #debug "\nRadiosity_Normal in use"
- #break
-
- // For patient quality freaks with fast computers about to leave on vacation
- #case (Radiosity_Final)
- radiosity {
- count 800 // Ensure that we get good, accurate samples
- error_bound 0.2 // And calculate lots of them. (more important than count)
- gray_threshold 0.5
- distance_maximum 4 // Scene-dependant!
- low_error_factor 0.7 // force many extra samples to be calculated...
- nearest_count 9 // so we can average them together for smoothness
- minimum_reuse 0.01 // get quite tightly into corners
- brightness 3.3 // doesn't really matter. Not used in final output.
- recursion_limit 1 // Try this = 2, but drop the count to maybe 300
- }
- #debug "\nRadiosity_Final in use"
- #break
- #end
- }
-
- /******************************************
- #declare Radiosity_Defaults = 0
- #declare Radiosity_Test = 1
- #declare Radiosity_Fast = 2
- #declare Radiosity_Final = 3
-
- #declare Rad_Quality = Radiosity_Test
-
- global_settings {
-
- #switch(Rad_Quality)
- #case (Radiosity_Defaults)
- #break
- #case (Radiosity_Test)
- radiosity {
- brightness 3.3
- count 50
- distance_maximum 6
- gray_threshold 0.0
- low_error_factor 0.775
- nearest_count 1
- recursion_limit 1
-
- error_bound 0.25 // Experiment with this
- minimum_reuse 0.15 // Experiment with this
- }
- #break
- #case (Radiosity_Fast)
- radiosity {
- brightness 3.3
- count 500
- distance_maximum 6
- gray_threshold 0.0
- low_error_factor 0.775
- nearest_count 8
- recursion_limit 1
-
- error_bound 0.75
- minimum_reuse 0.15
- }
- #break
- #case (Radiosity_Final)
- radiosity {
- brightness 3.3
- count 1500
- distance_maximum 6
- gray_threshold 0.15
- low_error_factor 0.015
- nearest_count 12
- recursion_limit 1
-
- error_bound 0.015
- minimum_reuse 0.015
- }
- #break
- #end
-
- }
- ******************************/
-
-
- camera {
- location <-1.5, 2, -29.9>
- direction z * 1.75
- up y
- right x * 1.3333
- look_at <0.5, -1.0, 0.0>
- }
-
- #declare Dist=15
- //#declare L = 0.65
- #declare L = 0.35
-
- light_source { <0, 9.5, 0>
- color rgb L
- fade_distance Dist fade_power 2
- shadowless
- }
-
- light_source { <-5, 7.5, 10.>
- color rgb L
- fade_distance Dist fade_power 2
- shadowless
- }
-
-
- #declare Ambient = 0.35
- #declare Ambient = 0.25
- box { -1, 1
- scale <10, 10, 30>
- pigment { White }
- finish { ambient Ambient }
- }
-
- box { -1, 1 scale <9, 8, 0.2>
- pigment {
- gradient z
- color_map {
- [0.0 color Red ]
- [0.5 color Red ]
- [0.5 color Blue ]
- [1.0 color Blue ]
- }
- translate -z*0.5
- }
- finish { ambient Ambient }
- rotate y*90
- rotate y*(clock*360)
- translate z*10
- }
-
-