# CLASSES (Panorama v0.10.0)

- Atmospheric object

- AtmConst

- BSDF

- BsdfLambertian
- BsdfPhong

- Camera

- PinholeCamera

- Image filter

- IF_Cartoon
- IF_ConvertToGrey
- IF_Fog

- Image I/O

- tga

- Light

- PointLight

- Projector
- WarnLight

- Material

- MaterialChecker
- MaterialNoise
- MaterialWorley

- Object

- Aggregate
- Box
- Cone
- Cylinder
- Mesh
- Plane

- Circle
- Triangle

- PhongTriangle

- Rectangle

- Sphere
- Torus

- Renderer

- Raytracer

- Scene

## ATMOSPHERIC OBJECT

Keyword: atm_object
Default class: AtmConst
Common attributes: samples [REAL] . . . Initial number of samples
min_step_size [REAL] . . . Minimum allowed step size for ray marching
transp_th [REAL] . . .Transparency threshold
slope_th [REAL] . . . Slope threshold for adaptive sampling

Example:

`atm_object : class AtmConst`
`{`
`extinction 0.001`
`albedo 0.001`
`}`

#### Atmospheric object classes

- Name: 'AtmConst'
Attributes: 'extinction' [REAL]
'albedo' [REAL]

## BSDF

Keyword: bsdf
Default class: BsdfPhong
Common attributes: None

Example:

`bsdf : class BsdfPhong`
`{`
`exponent 10`
`}`

#### BSDF classes

- Name : 'BsdfLambertian'
Attributes : none
- Name : 'BsdfPhong'
Attributes : 'exponent' [REAL] . . . . Phong exponent.

# CAMERA

Keyword: camera
Default class: PinholeCamera
Common attributes: 'translate' [VECTOR] . . . Move camera to another location
'rotate' [VECTOR] . . . Rotate camera.
'up' [VECTOR] . . . . . . .Vector defining vertical direction (default is <0, 1, 0>).
'look_at' [VECTOR] . . . Point where camera is looking at.

Example:

`camera : class PinholeCamera`
`{`
`translate <0, 0, 600>`
`look_at <0, 0, 0>`
`up <0, 1, 0>`
`}`

#### Camera classes

- Name : 'PinholeCamera'
Attributes : 'angle' [REAL] . . . . . . (default is 45 degree).

## IMAGE FILTER

Keyword: filter (only inside scene definition)
Default class: None
Common attributes: None

Example:

`filter : class IF_Cartoon`
`{`
`outline CBlack`
`levels 4`
`}`

#### `Image filter classes`

- Name : 'IF_Cartoon'
Attributes : 'outline' [COLOR] . . . . Outline color (default is black).
'levels' [REAL] . . . . . Color levels for each channel (default is 2).
'distance_th' [REAL] . . . Threshold value for Z buffer (default is 50).
'normal_th' [REAL] . . . Threshold value for N buffer. Draw outline color if normal difference is bigger than this value (default is 0.6).
- Name : 'IF_ConvertToGrey'
Attributes : none
- Name : 'IF_Fog'
Attributes : 'color' [COLOR] . . . . . Fog color (default is white).
'distance' [REAL] . . . . Fog distance (default is 1000).

## IMAGE I/O

Keyword: output (can only be used inside scene definition)
Default class: tga
Common attributes: 'type' [STRING] . . . Name of a format type.
'name' [STRING] . . . Name of the file.

Example:

`scene`
`{`
`. . .`
`output`
`{`
`type "tga"`
`name "test.tga"`
`}`
`. . .`
`}`
``

#### Image I/O classes

- Name: "tga"
Attributes: none

## LIGHT

Keyword: light
Default class: PointLight
Common attributes: 'translate' [VECTOR] . . . Move light to another location.
'rotate' [VECTOR] . . . . Rotate light.
'color' [COLOR] . . . . . (default is white).
'intensity' [REAL] . . . . (default is 1).
'shadow' [BOOL] . . . . . Generate shadow (default is on)
'volumetric' [BOOL] . . . Light is taken into account in volumetric sampling (when participating media is active) (default is on).
'raytraced' [BOOL] . . . Shadows are raytraced (used by ZBuffer renderer)

Example:

`light : class PointLight`
`{`
`translate <0, 200, 0>`
`color CRed`
`intensity 1`
`}`
``

#### Light classes

- Name : 'PointLight'
Attributes : 'falloff' [VECTOR] . . . . Falloff coefficients <a, b, c> used in the way: attn = 1 - min (1, 1 / (ar^2 + br + c)) where r is light-object distance.
'axis' [VECTOR] . . . . . Destination point of threshold cone axis.
'angle_th' [REAL] . . . . Angle for threshold cone (default is 0 = none).
'distance_th' [REAL] . . . Distance threshold (default is 0 = none).
- Name : 'WarnLight' (inherits from PointLight).
Attributes : 'point_at' [VECTOR] . . . Destination point of Warn light axis.
'exponent' [REAL] . . . . Warn exponent (the bigger this value, the more concentrated light will be on axis) (default is 1).
- Name : 'Projector' (inherits from PointLight).
Attributes : 'point_at' [VECTOR] . . . Destination point of light axis.
'up' [VECTOR] . . . . . . Vector defining vertical direction (default is <0, 1, 0>).
'angle' [REAL] . . . . . . (default is 45 degree).
'texture' [STRING] . . . . Texture file for projection.

## MATERIAL

Keyword: material
Default class: Material
Common attributes: 'color' [COLOR] . . . . . Diffuse color of the material.
'opacity' [REAL] . . . . . Opacity coefficient (0..1) (default is 1 = opaque).
'ambient' [REAL] . . . . . Ambient coefficient for illumination.
'diffuse' [REAL] . . . . . Diffuse coefficient for illumination.
'specular' [REAL] . . . . Specular coefficient for illumination.
'ior' [REAL] . . . . . . . Index of refraction of the material (default is 1).
'caustics' [REAL] . . . . Fake caustics exponent for transparent objects (default is 0).
'emission' [REAL] . . . Light emmited by this material (currently unused in raytracing).
'bsdf' [BSDF] . . . . . . Bsdf function of this material.

Example:

`material`
`{`
`bsdf : class BsdfPhong`
`{`
`exponent 10`
`}`
`color CWhite`
`ambient 0.1`
`diffuse 0.6`
`specular 0.2`
`}`

#### Material classes

- Name : 'MaterialNoise'
Attributes : 'base_color' [COLOR] . . . Gives alternative color.
'zoom' [VECTOR] . . . . . Zoom factor for each axis.
'bump' [REAL] . . . . . . Bump factor (default is 1).
- Name : 'MaterialChecker'
Attributes : 'base_color' [COLOR] . . . Gives alternative color for checkers.
'size' [REAL] . . . . . . Size of the checkers.
'border' [REAL] . . . . . Size of the border (default is 0 = none).
- Name : 'MaterialWorley'
Attributes : 'base_color' [COLOR] . . . Gives alternative color.
'zoom' [VECTOR] . . . . . Zoom factor for each axis.
'bump' [REAL] . . . . . . Bump factor (default is 1).

## OBJECT

Keyword: object (Common objects can also be defined or instantiated by its name. They are: box, circle, cone, cylinder, phong_triangle, plane, sphere, triangle)
Default class: None
Common attributes: 'translate' [VECTOR] . . . Move object to another location.
'rotate' [VECTOR] . . . . Rotate object.
'scale' [VECTOR] . . . . . Scale object.
'material' [MATERIAL] . . Set material.
'filter' [OBJECT_FILTER] . (default is none) Several object filters can be given.

Example:

`sphere`
`{`
`translate <0, 100, 0>`
`radius 100`
`material : extends MPlastic`
`{`
`color CRed`
`}`
`}`

#### Object classes

- Name : 'Aggregate'
Attributes : none
- Name : 'Box'
Attributes : none
- Name : 'Circle' (inherits from 'Plane').
Attributes : 'radius' [REAL] . . . . .
- Name : 'Cone'
Attributes : none
- Name : 'Cylinder'
Attributes : none
- Name : 'Mesh'
Attributes: none
- Name : 'PhongTriangle' (inherits from 'Triangle').
Attributes : 'vertex' [VECTOR] . . . . . Keyword 'vertex' may be omitted. Three vertices must be specified.
'normal' [VECTOR] . . . . . Three normals must be specified. This normal vectors will be associated with vertices in the same ordinal position (first vertex with first normal, and so on).
- Name : 'Plane'
Attributes : 'one_sided' [BOOL] . . . . If active, only the 'outer' side of the plane (where the normal vector points) will be visible (default is off).
'normal' [VECTOR] . . . . . Normal vector of the plane. If one_sided is false, both sides of the plane will be visible, and normal will be modified to match that.
- Name : 'Rectangle' (inherits from 'Plane').
Attributes : 'vertex' [VECTOR] . . . . . Keyword 'vertex' may be omitted. Four vertices must be specified.
- Name : 'Sphere'
Attributes : 'radius' [REAL] . . . . .
- Name : 'Torus'
Attributes : 'radius_a' [REAL]
'radius_b' [REAL]
- Name : 'Triangle' (inherits from 'Plane').
Attributes : 'vertex' [VECTOR] . . . . . Keyword 'vertex' may be omitted. Three vertices must be specified.

## RENDERER

Keyword: renderer
Default class: Raytracer
Common attributes: None

Example:

`renderer : class Raytracer`
`{`
`ambient CWhite`
`depth 10`
`sampling "single"`
`}`

#### Renderer classes

- Name : 'Raytracer'
Attributes : 'ambient' [COLOR] . . . . Ambient term for lighting calculation (default is black).
'depth' [REAL] . . . . . . Maximum depth for recursive ray tracing (default is 10).
'sampling [STRING] . . . Type of sampling for each pixel. 'single' is the default. Other values are used for anti-aliasing: 'uniform', 'stochastic', 'adaptive'.
'max_diff' [REAL] . . . Maximum difference in color allowed in adaptive algorithm.
'aa_depth' [REAL] . . . This sets the maximum recursion level for adaptive, the number of uniform samples (total number is aa_depth * aa_depth) or the number of stochastic samples.

## SCENE

Keyword: scene
Default class: Scene (There is only one class in this family)
Notes: One and only one scene instance must be defined in an scene file.
Common attributes: 'background' [COLOR] . . . Background color of image (default is black).
'width' [REAL] . . . . . . Width of generated image.
'height' [REAL] . . . . . Height of generated image.
'output' [IMAGE_IO] . . It must be a registered image IO class (default is "tga").
'camera' [CAMERA] . . . . Camera instance.
'light' [LIGHT] . . . . . Light instance (may be many of them).
'renderer' [RENDERER] . . Renderer instance.
'filter' [IMAGE_FILTER] . Image filter. Several filters can be defined, and they will be executed in the same order after the render.
'participating' [BOOL] . . Participating media flag.

Example:

`scene`
`{`
`camera camera_instance`
`light light_instance`
`width 640`
`height 400`
`output`
`{`
`type "tga"`
`name "test.tga"`
`}`
`renderer : class Raytracer {}`
`}`