TUD Organische ChemieImmelGraphicsPovray 3.5benchmarkView or Print this frame onlyView or Print (this frame only)

Example Graphics

(low quality jpg-image only)
benchmark

Example file (benchmark.pov):

// Persistence Of Vision Ray Tracer Scene Description File
//
// File: benchmark.pov
// POV-Ray Vers: 3.5
// Benchmark Vers: 1.02
// Desc: POV-Ray 3.5 benchmark scene
// Date: October/November 2001
//
// Assembled by Christoph Hormann
// Contributions by:
// - Ingo Janssen
// - Mick Hazelgrove
//
// ==================================================================
//
// Standard POV-Ray v3.5 benchmark version 1.02
//
// This is the official POV-Ray v3.5 benchmark scene. It is designed
// to test a variety of POV-Ray features and should render in a
// reasonable amount of time on current machines. Note that the
// radiosity feature is still experimental and not very suitable for
// comparing results of different versions, therefore it is turned
// off by default.
//
// Please log all changes made to this file below.
//
// Note that only results generated with the above options and the
// unchanged scene file are allowed to be published as 'official
// POV-Ray benchmark results'. Feel free to do additional tests, but
// make sure the differences are made clear when publishing them.
//
// When publishing results, be sure to quote the exact version of the
// benchmark scene used (1.02), and the exact version of POV-Ray.
//
// ==================================================================
//
// Change history
// --------------
//
// Nov. 2001 Initial release (version 3.5.0)
// Jan. 2002 using 'max()' instead of '&' in isosurface
// Apr. 2002 changed max_gradient of isosurface (new ver is 1.01)
// Jun. 2002 added photons pass_through to clouds (new ver is 1.02)
//
// ==================================================================
//
// Permission is granted for this file and the output from it to be
// freely redistributed in an unmodified form for the purpose of
// generating and maintaining POV-Ray benchmarks. Derivative works
// are permitted provided that they have a clearly different filename
// and do not claim to be the standard benchmark file.
//
// ==================================================================
//
// Suggested command line options if not using an INI file:
//
// -w384 -h384 +a0.3 +v -d -f -x
//
// The following INI options are used when the 'Run Benchmark' command
// is chosen on versions of POV-Ray that support the built-in version.
//
// All_Console=Off
// Antialias_Depth=3
// Antialias=On
// Antialias_Threshold=0.3
// Bits_Per_Color=8
// Bounding=On
// Bounding_Threshold=3
// Buffer_Output=Off
// Buffer_Size=0
// Clock=0
// Continue_Trace=Off
// Create_Histogram=Off
// Cyclic_Animation=Off
// Debug_Console=On
// Display=Off
// Display_Gamma=1.0
// Draw_Vistas=Off
// End_Column=1
// End_Row=1
// Fatal_Console=On
// Fatal_Error_Command=
// Fatal_Error_Return=I
// Field_Render=Off
// Final_Clock=1
// Final_Frame=1
// Height=384
// Histogram_Name=
// Histogram_Grid_Size=0.0
// Initial_Clock=0
// Initial_Frame=1
// Include_Header=
// Jitter_Amount=1
// Jitter=On
// Light_Buffer=On
// Odd_Field=Off
// Output_Alpha=Off
// Output_File_Name=
// Output_File_Type=s
// Output_To_File=Off
// Palette=3
// Pause_When_Done=Off
// Post_Frame_Command=
// Post_Frame_Return=I
// Post_Scene_Command=
// Post_Scene_Return=I
// Preview_End_Size=1
// Preview_Start_Size=1
// Pre_Frame_Command=
// Pre_Frame_Return=I
// Pre_Scene_command=
// Pre_Scene_Return=I
// Quality=9
// Remove_Bounds=On
// Render_Console=On
// Sampling_Method=1
// Split_Unions=Off
// Start_Column=0
// Start_Row=0
// Statistic_Console=On
// Subset_End_Frame=1
// Subset_Start_Frame=1
// Test_Abort_Count=0
// Test_Abort=Off
// User_Abort_Command=
// User_Abort_Return=I
// Verbose=On
// Version=3.5
// Video_Mode=0
// Vista_Buffer=On
// Warning_Console=On
// Width=384
//
// ==================================================================

#version 3.5;

#include "functions.inc"
#include "colors.inc"
#include "logo.inc"


#declare use_radiosity = false;
// #declare use_radiosity = true;



#declare use_photons = true;
#declare use_area_light = true;

#declare show_clouds = true;
#declare show_objects = true;

#declare Rad = 50000;

global_settings {
max_trace_level 12
assumed_gamma 1.0

#if (use_radiosity=true)

radiosity {
pretrace_start 0.08
pretrace_end 0.01
count 80

nearest_count 5
error_bound 0.5
recursion_limit 1

low_error_factor .5
gray_threshold 0.0
minimum_reuse 0.015
brightness 0.7

adc_bailout 0.01/2

normal on
}

#end

#if (use_photons=true)
photons { spacing 0.007 }
#end

}

#if (use_radiosity=false)
#default {finish {ambient 0.02}}
#else
#default {finish {ambient 0.00}}
#end

//====================================================================================

camera {
location <3.2, 3.2, 1.8>
direction y
sky z
up z
right -x
look_at <-1, -1, 0.9>
angle 45
}


light_source {
<-0.7, 0.83, 0.24>*150000
color rgb <3.43,2.87,1.95>
#if (use_area_light=true)
area_light 4000*x 4000*y 4,4
jitter
orient
circular
#end

media_attenuation on
media_interaction on

photons {
reflection on
refraction on
}
}

#if (use_radiosity=false)
light_source {
<0.9, -0.6, 0.5>*150000
color rgb 0.35

shadowless
}
#end

fog{
fog_type 2
fog_alt 1.5
fog_offset 0
color rgbt <0.75, 0.80, 0.86, 0.2>
distance 400
up z
}


//====================================================================================


#declare RMF = function{ f_ridged_mf(x, y, z, 0.07, 2.2, 7, 0.6, 0.9, 1)}

#declare M_Watx4 =
material {
texture {
pigment { color rgbt <0.21, 0.20, 0.3, 0.96> }
finish {
diffuse 0.0
ambient 0.0

reflection {
0.1, 0.95
fresnel on
exponent 0.8
}

conserve_energy

specular 0.1
roughness 0.007
metallic
}
normal{
function { RMF(x, y, z) } 0.2
scale 0.07
}
}
interior {
ior 1.31
fade_distance 0.8
fade_power 1001.0
fade_color <0.02, 0.20, 0.06>
}
}

box { // --- Water ---
<-1.95, -1.65, 0.42>, < 1.95, 1.65, -5.5>

material { M_Watx4 }
hollow on

photons { collect off }
}

#declare fn_RMF = function{ f_ridged_mf(x, y, z, 0.1, 3.1, 8 ,0.7, 0.8, 2) }


plane { // --- floor ---
z, -0.3

texture {
pigment { color rgb <1.0, 0.85, 0.6> }
finish {
diffuse 0.7
specular 0.1
}
normal {
function { fn_RMF(x, y, z) } 0.3
scale 8
}
}

clipped_by {
box { <-1.95, -1.65, 1>, < 1.95, 1.65, -1> inverse }
}

photons { collect off }
}


isosurface {
function {
z - fn_RMF(x, y, z)*0.07
}

max_gradient 1.3

contained_by { box { <-15, -15, 0.0>, <15, 15, 0.2> } }

texture {
pigment { color rgb <1.0, 0.85, 0.6> }
finish {
diffuse 0.7
specular 0.1
}
}

scale 8
translate -0.16*z

clipped_by {
box { <-1.95, -1.65, 1>, < 1.95, 1.65, -1> inverse }
}

photons { collect off }
}


// ====================================================================================



sphere { // --- Sky ---
<0, 0, 0>, 1
texture {
pigment {
gradient z
pigment_map {
[0.00 color rgb <0.6667, 0.7255, 0.7725>]
[0.19
spherical
color_map {
[0.08 color rgb <0.33, 0.37, 0.90> ]
[0.14 color rgb <0.3210, 0.53, 0.9259> ]
[0.26 color rgb <0.3610, 0.57, 0.9259> ]
[0.50 color rgb < 0.880, 0.935, 0.976 > ]
}
scale 1.8
translate <-0.7, 0.7, 0.24>
]
}
}
finish {
diffuse 0
ambient 1
}
}
scale Rad*<20, 20, 4>
translate -2*z
no_shadow
hollow on

photons { collect off pass_through }
}

#if (show_clouds)

// from mick

difference {
sphere { 0,Rad}
sphere {0,Rad-15000}
material{
texture{
pigment{ rgbf 1 }
finish {
ambient 0
diffuse 0
}
}
interior{
media{
scattering {2,<.013,.012,.008>/1.3 extinction 1/1.3 }
method 3
samples 7,7
intervals 1

density { // one
wrinkles
ramp_wave

noise_generator 1

color_map {
[0 rgb 0]
[0.5 rgb 0]
[0.7 rgb 0.275]
[1 rgb 0.475]
} // color_map

scale <10000,9000,5000>/3
rotate z*29
translate <1000,0,Rad-30000>
} // density

density { // two
marble
warp { turbulence 1.65 octaves 7 }
noise_generator 1

color_map {
[0 rgb 0]
[0.4 rgb 0]
[0.85 rgb 0.25]
[1 rgb 0.5]
} // color_map

scale <10000,7500,5000>*5
rotate z*-25
translate <0,0,Rad-30000>
} // density

} // media
} // interior
} // material
hollow

rotate z*70
rotate y*15
translate <0,0,32000-Rad>
rotate -102*z

scale <1,1,0.4>

photons { collect off pass_through }

} // difference

#end

// ====================================================================================


#declare Metal_Texture =
texture {
pigment { color rgb <0.65, 0.55, 0.5> }
finish {
ambient 0.0
diffuse 0.15
specular 0.3
metallic
roughness 0.01
reflection {
0.8
metallic
}
}
}

#declare Stone_Tex =
texture {
pigment {
crackle
pigment_map {
[0.03
bozo
color_map {
[0 color rgb <0.2, 0.14, 0.05>]
[1 color rgb <0.2, 0.14, 0.05>]
}
warp { turbulence 0.6 }
]
[0.055
granite
color_map {
[0.0 color rgb <1, 0.95, 0.9>]
[0.5 color rgb <0.6, 0.5, 0.52>]
[1.0 color rgb <0.9, 0.8, 0.7>]
}
warp { turbulence 0.4 lambda 2.4 octaves 8 }
scale 0.5
]
}

warp { turbulence 0.72 lambda 2.25 omega 0.53 octaves 9}

scale 0.3
}
finish {
diffuse 0.55
specular 0.1
}
normal {
granite 0.15
scale 0.06
}
}

#declare Stone_Tex2 =
texture {
pigment {
crackle
pigment_map {
[0.03
bozo
color_map {
[0 color rgb <0.1, 0.08, 0.2>]
[1 color rgb <0.1, 0.08, 0.2>]
}
warp { turbulence 0.6 }
]
[0.055
granite
color_map {
[0.0 color rgb <1, 0.95, 0.9>]
[0.5 color rgb <0.6, 0.5, 0.52>]
[1.0 color rgb <0.9, 0.8, 0.7>]
}
warp { turbulence 0.4 lambda 2.4 octaves 8 }
scale 1.2
]
}

warp { turbulence 0.55 lambda 2.25 omega 0.53 octaves 9 }

scale 0.24
}
finish {
diffuse 0.55
specular 0.1
}
normal {
granite 0.15
scale 0.06
}
}

#declare Stone_Tex3 =
texture {
pigment {
agate
pigment_map {
[0.3
crackle
color_map {
[0.1 color rgb <0.3, 0.28, 0.4>]
[0.2 color rgb <0.8, 0.7, 0.4>]
}
warp { turbulence 0.5 lambda 2.2 omega 0.52 octaves 8 }
scale 0.3
]
[0.5
granite
color_map {
[0.0 color rgb <1, 0.95, 0.9>]
[0.5 color rgb <0.3, 0.6, 0.52>]
[1.0 color rgb <0.3, 0.8, 0.7>]
}
warp { turbulence 0.4 lambda 2.4 octaves 8 }
]
}

warp { turbulence 0.55 }

scale 0.24
}
finish {
diffuse 0.55
specular 0.1
}
normal {
granite 0.15
scale 0.06
}
}

#declare Mat_Glass =
material {
texture {
pigment { color rgbt 1 }
finish {
diffuse 0
ambient 0
specular 0.6
metallic 0.5
roughness 0.005

reflection {
0.05, 0.95
fresnel on
}

conserve_energy
}
}
interior {
ior 1.5
fade_distance 0.12
fade_power 1001
fade_color <0.6, 0.5, 0.7>
}
}


#declare Socket =
union {
difference {
cylinder { -5*z, -0.04*z, 0.8 }
cylinder { -6*z, 0, 0.3 }

#declare Cnt = 0;

#while (Cnt<360)

merge {
cylinder { < 0.0, 0.0, -0.24>, < 1.0, 0.0, -0.24>, 0.1 }
box { < 0.0, -0.1, -0.24>, < 1.0, 0.1, -6> }

rotate Cnt*z
}

#declare Cnt = Cnt+30;
#end
}

#declare Cnt = 0;

#while (Cnt<360)

union {
cylinder { < 0.8, 0.0, -0.04>, < 0.8, 0.0, -5>, 0.05 }
cylinder { < 0.8, 0.0, -0.04>, < 0.8, 0.0, -0.01>, 0.07 }

rotate 15*z
rotate Cnt*z
}

#declare Cnt = Cnt+30;
#end

cylinder { -0.04*z, 0, 0.86 }
torus {
0.83, 0.03
rotate 90*x
}
}

#declare Pos1 = < 0.0, 0.0, 0.6>;
#declare Pos2 = <-2.4, -0.8, 1.0>;
#declare Pos3 = <-1.4, -2.8, 1.3>;
#declare Pos4 = < 1.4, 0.6, 0.5>;

#declare Pos5 = <-10, -5, 1.5>;

object { Socket translate Pos1 texture { Stone_Tex } }

object { Socket translate Pos2 texture { Stone_Tex } }

object { Socket scale 0.8 translate Pos3 texture { Stone_Tex } }

object { Socket scale 0.4 translate Pos4 texture { Stone_Tex } }

object { Socket scale 2 translate Pos5 texture { Stone_Tex } }

difference {
box { <-2.0, -1.7, 0.5>, < 2.0, 1.7, -6> }
box { <-1.9, -1.6, 1.0>, < 1.9, 1.6, -5> }

texture {
Stone_Tex2
}
}

#if (show_objects)

#declare POV_Text =
text {
ttf
"timrom.ttf"
"POV-Ray"
0.25,0
scale 0.3
rotate 90*x
rotate -90*z
}

object {
POV_Text
translate <-1.97, 0.86, 0.5>
texture { Stone_Tex2 }
}

object {
POV_Text
rotate 90*z
translate <-0.5, -1.6, 0.5>
texture { Stone_Tex2 }
}

#end


height_field {

function 300,300 {
pigment {
function { 1-(min(pow(x*x + y*y, 0.25), 1) -0.0001) }

color_map {
[0.0 rgb 0.0]
[1.0 rgb 1.0]
}

translate <0.5,0.5,0>

scale 0.45

warp { turbulence 0.455 }

scale 3
warp { turbulence 0.2 lambda 2.2 octaves 8 }
scale 1/3

}
}

water_level 0.02

rotate 90*x

rotate 43*z

scale <5, 5, 1.3>
scale 2.6

texture {
pigment {
bozo
color_map {
[0.40 color rgb <0.6, 0.6, 0.7>*0.6]
[0.58 color rgb <0.9, 0.6, 0.3>*0.6]
[0.62 color rgb <0.2, 0.6, 0.1>*0.4]
}
warp { turbulence 0.4 }
scale <0.2, 0.2, 3>
}
finish {
diffuse 0.6
specular 0.2
}
}

translate <-18, -13, -0.4>
}


#if (show_objects)

// ---------- Pos1 ----------

difference {
cylinder { -0.0*z, 0.15*z, 0.7 }
cylinder { -0.1*z, 0.25*z, 0.68 }

texture { Metal_Texture }

translate 0.6*z

photons { target reflection on }
}

#declare fn_pigm =
function {
pigment {
bozo
poly_wave 2
color_map {
[0 rgb 0][1 rgb 1]
}
warp { turbulence 0.4 lambda 2.3 omega 0.52 }

scale 0.2
}
}


isosurface {
function {
(max(sqrt(x*x + y*y)-0.25, z-0.7))

- fn_pigm(x, y, z).gray*0.07

}

max_gradient 2.4

contained_by { box { <-0.35, -0.35, 0.0>, <0.35, 0.35, 0.8> } }

texture {
pigment { color rgb <1, 0.45, 0.2> }
finish {
diffuse 0.6
specular 0.2
}
}

translate Pos1
}

object {
Povray_Logo

rotate 90*x
scale 0.4
translate -0.2*y

texture {
pigment { color rgb <0.65, 0.55, 0.9> }
finish {
ambient 0.0
diffuse 0.15
specular 0.3
metallic
roughness 0.01
reflection {
0.8
metallic
}
}
normal {
bumps 0.3
scale 0.3
}
}

rotate -25*z

translate 0.96*z

translate Pos1
}

#end

#if (show_objects)

// ---------- Pos2 ----------

#declare rd = seed(45);

union {

#declare Cnt = 0;

#while (Cnt<360)

superellipsoid {

texture { Metal_Texture }
scale 0.12
translate <0.6, 0.0, 0.12>
rotate (Cnt+30)*z
}

julia_fractal {
< rand(rd), rand(rd)*0.6, -0.54, 0.2 >
quaternion
max_iteration 7
precision 500
scale 0.12
translate <0.6, 0.0, 0.1>
rotate Cnt*z

texture {
pigment { color rgb <1, 0.4, 0.8> }
finish {
ambient 0
diffuse 0.6
specular 0.2
reflection 0.2
}
}
}

#declare Cnt = Cnt+60;
#end

translate Pos2
}

#end

#if (show_objects)

// ---------- Pos3 ----------

sphere {
0, 0.24

translate 0.24*z

material { Mat_Glass }

photons { target reflection on refraction on }

translate Pos3
}

#end

#if (show_objects)


// ---------- Pos4 ----------


// from ingo

#declare Letter =
text {
ttf
"timrom.ttf"
"X"
1,0
scale <1/0.7,1/0.66,1>
translate <0,0,-0.5>
}

#declare xPigm =
function {
pigment {
object {
Letter
pigment {rgb 1}
pigment {rgb 0}
}
warp {repeat x}
warp {repeat y}
scale 1.00002
translate < 0.000001,-0.00001, 0>
}
}

#declare XsinPigm =
function {
pigment {
function {xPigm(sin(x),pow(sin(y),2),z).gray}
}
}

#declare Fn_Obj =
difference {
cylinder {
-2*y, 2*y, 2
pigment {
function{XsinPigm(x,y,z).gray}
warp {planar}
scale <0.5/pi, 1, 1>*0.5
warp {
cylindrical
orientation z
dist_exp 1
}
colour_map {
[0, rgb 1]
[1, rgbf 1]
}
}
finish {
diffuse 0.6
specular 0.4
}
}
cylinder {
-1.9*y, 2.1*y, 1.9
pigment {rgbf 1}
finish {
diffuse 0.6
specular 0.4
}
}

translate 1.96*y
rotate 90*x
scale 0.12
}

object {
Fn_Obj
translate Pos4
}

#end


#if (show_objects)


// ---------- Pos5 ----------


// from ingo

#macro BuildWriteMesh2(VecArr, NormArr, UVArr, U, V)

#debug concat("\n\n Building mesh2: \n - vertex_vectors\n")
#local NumVertices = dimension_size(VecArr,1);
mesh2 {
vertex_vectors {
NumVertices
#local I = 0;
#while (I VecArr[I]
#local I = I+1;
#end
}

#debug concat(" - normal_vectors\n")
#local NumVertices = dimension_size(NormArr,1);
normal_vectors {
NumVertices
#local I = 0;
#while (I NormArr[I]
#local I = I+1;
#end
}

#debug concat(" - uv_vectors\n")
#local NumVertices = dimension_size(NormArr,1);
uv_vectors {
NumVertices
#local I = 0;
#while (I UVArr[I]
#local I = I+1;
#end
}

#debug concat(" - face_indices\n")
#declare NumFaces = U*V*2;
face_indices {
NumFaces
#local I = 0;
#local H = 0;
#while (I #local J = 0;
#while (J #local Ind = (I*U)+I+J;
,
#local J = J+1;
#local H = H+1;
#end
#local I = I+1;
#end
}
}
#end

#macro FnA(X)
#if (X<0.13)
0.5+sin(X*14)*0.4
#else
0.5+sin((X-0.13)*7.2)*0.3
#end
#end


// Build a two-dimensional array with vectors and normals retrieved from a function macro
// ResSpl: the amount of vectors to get from the macro
// based on ingo's code for splines

#macro L_GetVN(ResSpl)
#local I = 0;
#local A = array[ResSpl+1][2]
#while (I<=ResSpl)
#local P0 = 0+;
#if (P0.x=0 & P0.z=0)
#local P0 = <1e-25,P0.y,1e-25>;
#end
#if (I=0)
#local P1 = 0+;
#local P2 = 0+;
#else
#local P1 = P2;
#local P2 = 0+;
#end
#local P3 = vrotate(P0,<0,1,0>);
#local P4 = vrotate(P0,<0,-1,0>);
#local B1 = P4-P0;
#local B2 = P2-P0;
#local B3 = P3-P0;
#local B4 = P1-P0;
#local N1 = vcross(B1,B2);
#local N2 = vcross(B2,B3);
#local N3 = vcross(B3,B4);
#local N4 = vcross(B4,B1);
#local N = vnormalize((N1+N2+N3+N4)*-1);
#local A[I][0] = P0;
#local A[I][1] = N;
#local I = I+1;
#end
A
#end

#macro FnLathe (Rot, ResRot, ResSpl)
#declare VNArr = L_GetVN (ResSpl)
#local VecArr = array[(ResRot+1)*(ResSpl+1)]
#local NormArr = array[(ResRot+1)*(ResSpl+1)]
#local UVArr = array[(ResRot+1)*(ResSpl+1)]
#local R = Rot/ResRot;
#local Dim = dimension_size(VNArr,1);
#local Count = 0;
#local I = 0;
#while (I<=ResRot)
#local J = 0;
#while (J #local VecArr[Count] = vrotate(VNArr[J][0],<0,R*I,0>);
#local NormArr[Count] = vrotate(VNArr[J][1],<0,R*I,0>);
#local UVArr[Count] = ;
#local J = J+1;
#local Count = Count+1;
#end
#local I = I+1;
#end
BuildWriteMesh2(VecArr, NormArr, UVArr, ResSpl, ResRot)
#end


#declare MSH = FnLathe(360, 100, 100)

#declare Obj_Msh =
object {
MSH

uv_mapping

texture {
pigment{
checker
color rgb <1.0, 0.7, 0.5>,
color rgb <0, 0, 0.15>

scale 0.05
}
finish {
diffuse 0.7
specular 0.3
}
}

rotate 90*x
scale <1.9, 1.9, 2.8>


translate Pos5
}


object { Obj_Msh }


#end

© Copyright PD Dr. S. Immel