Texture

### 10.1.10 Texture

Describe the surface of an object
TEXTURE:
  `PLAIN_TEXTURE | LAYERED_TEXTURE | PATTERNED_TEXTURE`

Quick Reference Contents

#### 10.1.10.1 Plain Texture

Describe a texture consisting of a single pigment, normal and finish:
PLAIN_TEXTURE:
  `texture { PLAIN_TEXTURE_BODY }`
PLAIN_TEXTURE_BODY:
  `[PLAIN_TEXTURE_IDENT] [PNF_IDENTIFIERS] [PNF_ITEMS]`
PNF_IDENTIFIERS:
  `[PIGMENT_IDENTIFIER] & [NORMAL_IDENTIFIER] & [FINISH_IDENTIFIER]`
PNF_ITEMS:
  `[PIGMENT] & [NORMAL] & [FINISH] & [TRANSFORMATION...]`

Quick Reference Contents

#### 10.1.10.2 Layered Texture

Describe a texture consisting of two or more semi-transparent layers:
LAYERED_TEXTURE:
  Jump to SDL
  `texture { LAYERED_TEXTURE_IDENT } |
  PLAIN_TEXTURE PLAIN_TEXTURE...`

Quick Reference Contents

#### 10.1.10.3 Patterned Texture

Describe a texture using a pattern or blending function:
PATTERNED_TEXTURE:
  Jump to SDL
  `texture { PATTERNED_TEXTURE_BODY }`
PATTERNED_TEXTURE_BODY:
  `PATTERNED_TEXTURE_IDENT [TRANSFORMATION...] | TEXTURE_PATTERN [PATTERN_MODIFIERS] | MATERIAL_MAP [TRANSFORMATION...]`
TEXTURE_PATTERN:
  `TEXTURE_LIST_PATTERN | MAP_PATTERN TEXTURE_MAP`
TEXTURE_LIST_PATTERN:
  `brick TEXTURE, TEXTURE [BRICK_ITEMS] |
  checker TEXTURE, TEXTURE |
  hexagon TEXTURE, TEXTURE, TEXTURE |
  object { LIST_OBJECT TEXTURE, TEXTURE }`
BRICK_ITEMS:
  `[brick_size VECTOR] & [mortar FLOAT]`
LIST_OBJECT:
  `UNTEXTURED_SOLID_OBJECT | UNTEXTURED_SOLID_OBJECT_IDENT`
TEXTURE_MAP:
  `texture_map { TEXTURE_MAP_BODY } [BLEND_MAP_MODIFIERS]`
TEXTURE_MAP_BODY:
  `TEXTURE_MAP_IDENTIFIER | TEXTURE_MAP_ENTRY...`
  There may be from 2 to 256 map entries.
TEXTURE_MAP_ENTRY:
  `[ FLOAT TEXTURE_BODY ]`
  The brackets here are part of the map entry.
TEXTURE_BODY:
  `PLAIN_TEXTURE_BODY | LAYERED_TEXTURE_IDENT | PATTERNED_TEXTURE_BODY`
MATERIAL_MAP:
  `material_map { BITMAP_IMAGE [BITMAP_MODIFIERS] TEXTURE... }`

Quick Reference Contents

#### 10.1.10.4 Pigment

Describe a color or pattern of colors for a texture:
PIGMENT:
  Jump to SDL
  `pigment { PIGMENT_BODY }`
PIGMENT_BODY:
  `[PIGMENT_IDENTIFIER] [PIGMENT_TYPE] [PIGMENT_MODIFIERS]`
PIGMENT_TYPE:
  `COLOR | COLOR_LIST_PATTERN | PIGMENT_LIST_PATTERN | IMAGE_MAP | MAP_PATTERN [COLOR_MAP] | MAP_PATTERN PIGMENT_MAP`
COLOR_LIST_PATTERN:
  `brick [COLOR [, COLOR]] [BRICK_ITEMS] |
  checker [COLOR [, COLOR]] |
  hexagon [COLOR [, COLOR [, COLOR]]] |
  object { LIST_OBJECT [COLOR [, COLOR]] }`
PIGMENT_LIST_PATTERN:
  `brick PIGMENT, PIGMENT [BRICK_ITEMS] |
  checker PIGMENT, PIGMENT |
  hexagon PIGMENT, PIGMENT, PIGMENT |
  object { LIST_OBJECT PIGMENT, PIGMENT }`
IMAGE_MAP:
  `image_map {BITMAP_IMAGE [IMAGE_MAP_MODIFIER...] [BITMAP_MODIFIERS] }`
IMAGE_MAP_MODIFIER:
  `filter I_PALETTE, F_AMOUNT | filter all F_AMOUNT | transmit I_PALETTE, F_AMOUNT | transmit all F_AMOUNT`
COLOR_MAP:
  `color_map { COLOR_MAP_BODY } [BLEND_MAP_MODIFIERS] |
  colour_map { COLOR_MAP_BODY } [BLEND_MAP_MODIFIERS]`
COLOR_MAP_BODY:
  `COLOR_MAP_IDENTIFIER | COLOR_MAP_ENTRY...`
  There may be from 2 to 256 map entries.
COLOR_MAP_ENTRY:
  `[ FLOAT COLOR ]`
  The brackets here are part of the map entry.
PIGMENT_MAP:
  `pigment_map { PIGMENT_MAP_BODY } [BLEND_MAP_MODIFIERS]`
PIGMENT_MAP_BODY:
  `PIGMENT_MAP_IDENTIFIER | PIGMENT_MAP_ENTRY...`
  There may be from 2 to 256 map entries.
PIGMENT_MAP_ENTRY:
  `[ FLOAT PIGMENT_BODY ]`
  The brackets here are part of the map entry.
PIGMENT_MODIFIERS:
  `[QUICK_COLOR] & [PATTERN_MODIFIERS]`
QUICK_COLOR:
  `quick_color COLOR | quick_colour COLOR`

Quick Reference Contents

#### 10.1.10.5 Normal

Simulate the visual or tactile surface characteristics of a texture:
NORMAL:
  Jump to SDL
  `normal { NORMAL_BODY }`
NORMAL_BODY:
  `[NORMAL_IDENTIFIER] [NORMAL_TYPE] [NORMAL_MODIFIERS]`
NORMAL_TYPE:
  `NORMAL_PATTERN | BUMP_MAP`
NORMAL_PATTERN:
  `NORMAL_LIST_PATTERN |
  MAP_PATTERN [F_DEPTH] [SLOPE_MAP] |
  MAP_PATTERN NORMAL_MAP`
NORMAL_LIST_PATTERN:
  `brick NORMAL, NORMAL [BRICK_ITEMS] | brick [F_DEPTH] [BRICK_ITEMS] |
  checker NORMAL, NORMAL | checker [F_DEPTH] |
  hexagon NORMAL, NORMAL, NORMAL | hexagon [F_DEPTH] |
  object { LIST_OBJECT NORMAL, NORMAL } | object { LIST_OBJECT } [F_DEPTH]`
NORMAL_MAP:
  `normal_map { NORMAL_MAP_BODY } [BLEND_MAP_MODIFIERS]`
NORMAL_MAP_BODY:
  `NORMAL_MAP_IDENTIFIER | NORMAL_MAP_ENTRY...`
  There may be from 2 to 256 map entries.
NORMAL_MAP_ENTRY:
  `[ FLOAT NORMAL_BODY ]`
  The brackets here are part of the map entry.
SLOPE_MAP:
  `slope_map { SLOPE_MAP_BODY } [BLEND_MAP_MODIFIERS]`
SLOPE_MAP_BODY:
  `SLOPE_MAP_IDENTIFIER | SLOPE_MAP_ENTRY...`
  There may be from 2 to 256 map entries.
SLOPE_MAP_ENTRY:
  `[ FLOAT, < F_HEIGHT, F_SLOPE > ]`
  The brackets here are part of the map entry.
BUMP_MAP:
  `bump_map { BITMAP_IMAGE [BUMP_MAP_MODIFIERS] }`
BUMP_MAP_MODIFIERS:
  `[BITMAP_MODIFIERS] & [BUMP_METHOD] & [bump_size FLOAT]`
BUMP_METHOD:
  `use_index | use_color | use_colour`
NORMAL_MODIFIERS:
  `[PATTERN_MODIFIERS] & [bump_size FLOAT] & [no_bump_scale [BOOL]] & [accuracy FLOAT]`

Quick Reference Contents

#### 10.1.10.6 Finish

Describe the reflective properties of a surface:
FINISH:
  Jump to SDL
  `finish { [FINISH_IDENTIFIER] [FINISH_ITEMS] }`
FINISH_ITEMS:
  `[ambient COLOR] & [diffuse FLOAT] & [brilliance FLOAT] & [PHONG] & [SPECULAR] & [REFLECTION] & [IRID] & [crand FLOAT] & [conserve_energy [BOOL]]`
PHONG:
  `phong FLOAT & [phong_size FLOAT] & [metallic [FLOAT]]`
SPECULAR:
  `specular FLOAT & [roughness FLOAT] & [metallic [FLOAT]]`
REFLECTION:
  `reflection COLOR [reflection_exponent FLOAT] |
  reflection { [COLOR,] COLOR [REFLECTION_ITEMS] }`
REFLECTION_ITEMS:
  `[fresnel BOOL] & [falloff FLOAT] & [exponent FLOAT] & [metallic [FLOAT]]`
  Must also use `interior {ior FLOAT}` in the object when `fresnel` is used.
IRID:
  `irid { F_AMOUNT [IRID_ITEMS] }`
IRID_ITEMS:
  `[thickness FLOAT] & [turbulence FLOAT]`

Quick Reference Contents

#### 10.1.10.7 Pattern

Specify a pattern function for a texture, pigment, normal or density:
MAP_PATTERN:
  Jump to SDL
  `AGATE | average | boxed | bozo | bumps | cells | CRACKLE | cylindrical | DENSITY_FILE | dents | FACETS | FRACTAL | function { FN_FLOAT } | gradient VECTOR | granite | IMAGE_PATTERN | leopard | marble | onion | pigment_pattern { PIGMENT_BODY } | planar | QUILTED | radial | ripples | SLOPE | spherical | spiral1 I_NUM_ARMS | spiral2 I_NUM_ARMS | spotted | waves | wood | wrinkles`
AGATE:
  `agate [agate_turb FLOAT]`
CRACKLE:
  `crackle [CRACKLE_TYPES]`
CRACKLE_TYPES:
  `[form VECTOR] & [metric FLOAT] & [offset FLOAT] & [solid]`
DENSITY_FILE:
  `density_file df3 FILE_NAME [interpolate DENSITY_INTERPOLATE]`
DENSITY_INTERPOLATE:
  `0 | 1`
FACETS:
  `facets FACETS_TYPE`
  Note, `facets` can only be used as a `normal` pattern.
FACETS_TYPE:
  `coords F_SCALE | size F_SIZE_FACTOR`
FRACTAL:
  `MANDELBROT_FRACTAL | JULIA_FRACTAL | MAGNET_MANDEL_FRACTAL | MAGNET_JULIA_FRACTAL`
MANDELBROT_FRACTAL:
  `mandel I_ITERATIONS [exponent INT] [exterior EXTERIOR_TYPE, F_FACTOR] [interior INTERIOR_TYPE, F_FACTOR]`
JULIA_FRACTAL:
  `julia V2_COMPLEX, I_ITERATIONS [exponent INT] [exterior EXTERIOR_TYPE, F_FACTOR] [interior INTERIOR_TYPE, F_FACTOR]`
MAGNET_MANDEL_FRACTAL:
  `magnet MAGNET_TYPE mandel I_ITERATIONS [exterior EXTERIOR_TYPE, F_FACTOR] [interior INTERIOR_TYPE, F_FACTOR]`
MAGNET_TYPE:
  `1 | 2`
MAGNET_JULIA_FRACTAL:
  `magnet MAGNET_TYPE julia V2_COMPLEX, I_ITERATIONS [exterior EXTERIOR_TYPE, F_FACTOR] [interior INTERIOR_TYPE, F_FACTOR]`
EXTERIOR_TYPE:
  `0 | 1 | 2 | 3 | 4 | 5 | 6`
INTERIOR_TYPE:
  `0 | 1 | 2 | 3 | 4 | 5 | 6`
IMAGE_PATTERN:
  `image_pattern {BITMAP_IMAGE [IMAGE_PATTERN_MODIFIERS] }`
IMAGE_PATTERN_MODIFIERS:
  `[BITMAP_MODIFIERS] & [use_alpha]`
QUILTED:
  `quilted [control0 FLOAT] [control1 FLOAT]`
SLOPE:
  `slope { V_DIRECTION [, F_LOW_SLOPE, F_HIGH_SLOPE ] [altitude VECTOR [, F_LOW_ALT, F_HIGH_ALT ]] }`
  The `slope` pattern does not work in media densities.

Quick Reference Contents

#### 10.1.10.8 Pattern Modifiers

Modify the evaluation of a pattern function:
PATTERN_MODIFIERS:
  Jump to SDL
  `[TURBULENCE] & [WARP...] & [TRANSFORMATION...] & [noise_generator NG_TYPE]`
NG_TYPE:
  `1 | 2 | 3`
TURBULENCE:
  `turbulence VECTOR & [octaves INT] & [omega FLOAT] & [lambda FLOAT]`
WARP:
  `warp { WARP_ITEM }`
WARP_ITEM:
  `REPEAT_WARP | BLACK_HOLE_WARP | TURBULENCE | CYLINDRICAL_WARP | SPHERICAL_WARP | TOROIDAL_WARP | PLANAR_WARP`
REPEAT_WARP:
  `repeat VECTOR [offset VECTOR] [flip VECTOR]`
BLACK_HOLE_WARP:
  `black_hole V_LOCATION, F_RADIUS [BLACK_HOLE_ITEMS]`
BLACK_HOLE_ITEMS:
  `[strength FLOAT] & [falloff FLOAT] & [inverse] & [repeat VECTOR [turbulence VECTOR]]`
CYLINDRICAL_WARP:
  `cylindrical [orientation VECTOR] [dist_exp FLOAT]`
SPHERICAL_WARP:
  `spherical [orientation VECTOR] [dist_exp FLOAT]`
TOROIDAL_WARP:
  `toroidal [orientation VECTOR] [dist_exp FLOAT] [major_radius FLOAT]`
PLANAR_WARP:
  `planar [V_NORMAL, F_DISTANCE]`

Modify the usage of a blend map:
BLEND_MAP_MODIFIERS:
  Jump to SDL
  [frequency FLOAT] & [phase FLOAT] & [WAVEFORM]
WAVEFORM:
  Jump to SDL
  `ramp_wave | triangle_wave | sine_wave | scallop_wave | cubic_wave | poly_wave [F_EXPONENT]`

Specify a two-dimensional bitmap image for a pattern:
BITMAP_IMAGE:
  `FUNCTION_IMAGE | BITMAP_TYPE FILE_NAME`
FUNCTION_IMAGE:
  Jump to SDL
  `function I_WIDTH, I_HEIGHT { FUNCTION_IMAGE_BODY }`
FUNCTION_IMAGE_BODY:
  `PIGMENT | FN_FLOAT | pattern { PATTERN [PATTERN_MODIFIERS] }`
PATTERN:
  `MAP_PATTERN | brick [BRICK_ITEMS] | checker | hexagon | object { LIST_OBJECT }`
BITMAP_TYPE:
  Jump to SDL
  `gif | tga | iff | ppm | pgm | png | jpeg | tiff | sys`

Modify how a 2-D bitmap is to be applied to a 3-D surface:
BITMAP_MODIFIERS:
  Jump to SDL
  `[once] & [map_type MAP_TYPE] & [interpolate INTERPOLATE_TYPE]`
MAP_TYPE:
  `0 | 1 | 2 | 5`
INTERPOLATE_TYPE:
  `2 | 4`

Quick Reference Contents