POV-Ray : Documentation : 2.5.3 Finish
  POV-Ray 3.6 Documentation Online View  
2.5.2.4 Scaling normals   2.5.3.1 Ambient

2.5.3 Finish

The finish properties of a surface can greatly affect its appearance. How does light reflect? What happens in shadows? What kind of highlights are visible. To answer these questions you need a finish.

The syntax for finish is as follows:

FINISH:
    finish { [FINISH_IDENTIFIER] [FINISH_ITEMS...] }
FINISH_ITEMS:
    ambient COLOR | diffuse Amount | brilliance Amount |
    phong Amount | phong_size Amount | specular Amount |
    roughness Amount | metallic [Amount] | reflection COLOR |
    crand Amount | conserve_energy BOOL_ON_OF |
    reflection { Color_Reflecting_Min [REFLECTION_ITEMS...] }|
    irid { Irid_Amount [IRID_ITEMS...] }
REFLECTION_ITEMS:
    COLOR_REFLECTION_MAX | fresnel BOOL_ON_OFF |
    falloff FLOAT_FALLOFF | exponent FLOAT_EXPONENT |
    metallic FLOAT_METALLIC
IRID_ITEMS:
    thickness Amount | turbulence Amount

The FINISH_IDENTIFIER is optional but should proceed all other items. Any items after the FINISH_IDENTIFIER modify or override settings given in the FINISH_IDENTIFIER. If no identifier is specified then the items modify the finish values in the current default texture.

Note: transformations are not allowed inside a finish because finish items cover the entire surface uniformly. Each of the FINISH_ITEMS listed above is described in sub-sections below.

In earlier versions of POV-Ray, the refraction, ior, and caustics keywords were part of the finish statement but they are now part of the interior statement. They are still supported under finish for backward compatibility but the results may not be 100% identical to previous versions. See "Why are Interior and Media Necessary?" for details.

A finish statement is part of a texture specification. However it can be tedious to use a texture statement just to add a highlights or other lighting properties to an object. Therefore you may attach a finish directly to an object without explicitly specifying that it as part of a texture. For example instead of this:

  object { My_Object texture { finish { phong 0.5 } } }

you may shorten it to:

  object { My_Object finish { phong 0.5 } }

Doing so creates an entire texture structure with default pigment and normal statements just as if you had explicitly typed the full texture {...} around it.

Finish identifiers may be declared to make scene files more readable and to parameterize scenes so that changing a single declaration changes many values. An identifier is declared as follows.

FINISH_DECLARATION:
    #declare IDENTIFIER = FINISH |
    #local IDENTIFIER = FINISH

Where IDENTIFIER is the name of the identifier up to 40 characters long and FINISH is any valid finish statement. See "#declare vs. #local" for information on identifier scope.

2.5.2.4 Scaling normals   2.5.3.1 Ambient


Copyright 2003-2021 Persistence of Vision Raytracer Pty. Ltd.