// 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 // Gave knight/horse two ears, was only one, and remaining manual bounding // commented out, August 31, 2001, by Bob Hughes. // Modified again 2016.85, changes to King crown and Knight, resized pieces // to be similar to a Staunton chess set. //cmd:+am2 +a0.2 +j1 #version 3.7; #declare Original=no; // see lines past 632 for other chess options #declare Rad=off; // slow #declare SSS=off; // very slow, only needed for the newer chess pieces global_settings { assumed_gamma #if (Original=yes) 2.2 // compatible with old scene appearance #else 1.0 #end // newer gamma #if (Rad=on) radiosity { normal on #if (SSS=on) subsurface on #end } #end #if (SSS=on) subsurface {samples 66,33} mm_per_unit 12 #end } #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; // for improvement use in conjunction with antialiasing +a command #declare FB_Quality= FB_Quality_Off; camera { location <59, 20, -55> //direction <0, 0, 2> up <0, 1, 0> right x*image_width/image_height // keep proportions with any aspect ratio look_at <0, -1, 1> angle 38 #if(FB_Quality != FB_Quality_Off) aperture 2 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 9 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 33 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 67 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 } /* Sky */ #declare SkySphere = sky_sphere { S_Cloud1 } /* Ground */ #declare Ground = plane { y, -80 pigment { green 0.65 } finish { ambient 0.25 diffuse 0.5 } } #if (Original=yes) // use original chess pieces? #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 } } } #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 SetPieces = union { object { NearSide } object { FarSide } /* bounded_by { intersection { plane { y, 13.5 } sphere { -30*y, 63 } } } */ } #ifndef (ChessBoard) #declare ChessBoard=no; #end #else // use new modified chess pieces? #declare ChessBoard=yes; // use from include file? base at -2.001*y #declare WhitePaint=no; // use white paint instead of ivory? #declare RedBlack=no; // use red instead of black? #declare GlassPieces=no; // use clear and opaque glass? #include "chess-set_mod.inc" #end // use original chess pieces? #if (Original=yes|ChessBoard=no) // original board if not new from above #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 #if (Original=yes) 0.35 #else 0.05 #end } } } 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 #if (Original=yes) 0.35 #else 0.05 #end } } } } #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 object { Frame } object { Board } #end // original board and table /* 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 } #if (Original=no) translate y*0.989 // move table up close to bottom of new chessboard. #end } #if (Original=yes|ChessBoard=no) // use original chess set? Otherwise new set. object { SetPieces } #end object { Ground } object { Table } sky_sphere { SkySphere }