TKE_Rendering_Options

Opcode

ASCII R
Hexadecimal 52
Decimal 82

Operands

Variable mask, Variable value,
[Byte hsr] [Byte tech_quant] [Long face_displacement],
[Long lock_mask, Long lock_value,
[Long color_lock_mask, Long color_lock_value],
[Long visibility_lock_mask, Long visibility_lock_value]],
[(2)xFloat fog_limits] [Long debug]
[Float stereo_separation]
[Byte buffer_options_mask, Byte buffer_options_value,
[Long buffer_size_limit]]
[Variable hidden_line_options, [Long hidden_line_pattern],
[Float hidden_line_dim_factor], [Float hidden_line_face_displacement]]
[Variable nurbs_options_mask, Variable nurbs_options_value,
[Long nurbs_curve_budget], [Long nurbs_curve_continued_budget],
[Long nurbs_surface_budget], [Long nurbs_surface_trim_budget],
[Float nurbs_surface_max_trim_curve_deviation], [Float nurbs_surface_max_facet_angle],
[Float nurbs_surface_max_facet_deviation], [Float nurbs_surface_max_facet_width]]
[Long LOD_options_mask, Long LOD_options_value,
[Byte LOD_algorithm], [(6)xFloat LOD_explicit_bounding],
[Byte LOD_num_cutoffs, (LOD_num_cutoffs)xFloat LOD_cutoffs],
[Byte LOD_clamp], [Byte LOD_fallback], [Long LOD_max_degree],
[Long LOD_min_triangle_count], [Byte LOD_num_levels],
[Byte LOD_num_ratios, (LOD_num_ratios)xFloat LOD_ratios],
[Byte LOD_num_thresholds, (LOD_num_thresholds)xFloat LOD_thresholds, Byte LOD_threshold_type],
[Byte LOD_heuristic]]
[Byte tessellation_options,
[Byte tess_num_cylinder, (tess_num_cylinder)xLong tess_cylinder]]
[Variable transparency_options,
[Byte depth_peeling_layers], [Float depth_peeling_min_area]]
[Byte cut_geometry_options,
[Byte cut_geometry_level], [Byte cut_geometry_tolerance], [Byte cut_geometry_match]]
[(2)xFloat depth_range]
[Byte mask_transform]
[(2)xFloat image_scale]
[Variable simple_shadow_options,
[(4)xFloat shadow_plane], [(3)xFloat shadow_light],
[(3)xByte shadow_color], [Byte shadow_blur],
[Word shadow_resolution], [Float shadow_opacity]],
[Byte geometry_options, [Float hard_edge_angle]],
[(3)xByte image_tint],
[Long general_displacement], [Long join_cutoff_angle] [(4)xFloat screen_range]
[Byte display_list_level]
mask bitmask of options which are specified, Long, if high bit set a second Long follows
value bitmask of options which are set on, Long, if high bit of mask set a second Long follows
hsr combination of hsr (low nibble) and transparent hsr (high nibble) enums
tech_quant combination of technology and quantization bitmasks
face_displacement displacement applied to "push back" surfaces so associated edges may be seen more clearly
lock_mask bitmask showing which attribute types are having their lock setting changed
lock_value bitmask showing which of those attribute settings are going to "locked"
color_lock_mask bitmask showing which geometries are having their color lock settings changed
color_lock_value bitmask showing which of those color settings are going to "locked"
visibility_lock_mask bitmask showing which geometries are having their visibility lock settings changed
visibility_lock_value bitmask showing which of those visibility settings are going to "locked"
fog_limits near and far limits of depth cueing (relative to camera position)
stereo_separation offset angle (in degrees) from view axis for each eye in a stereo view
buffer_options_mask bitmask showing which software frame buffer options are being changed
buffer_options_value bitmask showing which buffer options are being set to "on"
buffer_size_limit size limit for buffer
hidden_line_options bitmask showing which hidden linde options are set, Byte. If high bit set, a second Byte follows.
hidden_line_pattern pattern used to draw the "hidden" lines
hidden_line_dim_factor color dimming factor for the "hidden" lines
hidden_line_face_displacement face displacement used when doing hidden line calculations
nurbs_options_mask bitmask indicating which NURBS curve/surface options are being changed, Byte. If high bit set, a second Byte follows.
nurbs_options_value bitmask indications which NURBS options are set "on", Byte. If high bit set, a second Byte follows.
nurbs_curve_budget number of points to generate along a NURBS curve
nurbs_curve_continued_budget additional points generated per control point beyonf one over the degree of the curve
nurbs_surface_budget maximum number of points to generate on the NURBS surface
nurbs_surface_trim_budget number of points to generate along NURBS trimming curves
nurbs_surface_max_trim_curve_deviation Distance, in the NURBS Surface's normalized [0..1] parametric space, of trim curve vertices from the parametric definition of the trimming curve.
nurbs_surface_max_facet_angle The largest angle allowed between the surface tangents evaluated at any two corners of a given facet. Expressed in degrees.
nurbs_surface_max_facet_deviation Distance, in object space, of the tessellation to the parametric definition of the surface.
nurbs_surface_max_facet_width The largest allowable length, in the NURBS Surface's normalized [0..1] parametric space, of any facet's edge.
LOD_options_mask bitmask indicating which Level Of Detail options which are being changed
LOD_options_value bitmask indication which LOD options are being set "on"
LOD_algorithm indicates the preferred choice of LOD generation
LOD_explicit_bounding specific bounding volume used with some LOD choices
LOD_num_cutoffs number of cutoff settings
LOD_cutoffs minimum limits for generating a LOD at each level
LOD_clamp selects a specific LOD level for display
LOD_fallback indicates what (if anything) to draw when the desired LOD level is not present
LOD_max_degree maximum number of edges to connect to a vertex in a generated LOD
LOD_min_triangle_count lower bound on the number of triangles worth generating as a LOD
LOD_num_levels number of LOD levels to compute
LOD_num_ratios number of ratios specified
LOD_ratios ratios of the number of triangles between a LOD level and the previous level
LOD_num_thresholds number of threshold setting
LOD_thresholds limits on triangle density before switching to a lower LOD during display
LOD_threshold_type units specifying triangle density (not present previous to file version 9.08)
LOD_heuristic indicates method used to determine when a LOD should not be generated
tessellation_options indicates which tessellation options are set
tess_num_cylinder number of cylinder tessellation settings
tess_cylinder tessellation limits for cylinder display at various LOD levels
transparency_options one Byte, second Byte if high bit set. preferred means of handling transparent geometry (low nibble) and flags for other options
depth_peeling_layers maximum number of transparent layers when using depth peeling. present if 0x01 bit set in transparency_options
depth_peeling_min_area minimum area affected by a depth peeling pass to continue processing more layers; positive value is treated as a percentage of the current screen area, negative as a specifi number of pixels. present if 0x01 bit set in transparency_options
cut_geometry_options options controlling the generation of capping faces when geometry is affected by cutting planes
cut_geometry_level controls how geometry is collected for processing for capping faces
cut_geometry_tolerance tolerance for closing loops when processing capping faces. negative value indicates value is a percentage of current view (camera field) instead of object units
depth_range restricts placement of drawing into z-buffer range
mask_transform attempts to override parts of the inherited modelling and camera transforms
image_scale scaling factors applied to size of images
simple_shadow_options bitmask controlling which simple shadow settings are present. a second byte follows if the high bit is set
shadow_plane shadow projection plane
shadow_light direction to simulated light for shadow projection
shadow_color color of shadow
shadow_blur number of blurring steps to soften shadow
shadow_resolution size of texture image used for shadow processing
shadow_opacity basic opacity of the shadow, range of 0-1 inclusive
geometry_options miscellaneous options affecting geometry
hard_edge_angle angle specifying limit of sharpness of hard edges
image_tint color used to tint any images
general_displacement Z displacement applied to all geometry
join_cuttof_angle angle at which to force mitered line joins to be beveled (aka miter limit)
screen_range portion of current window to remap drawing
display_list_level level to which items are collected into display lists
stereo_distance distance between camera position and the stereo focal plane. Zero means the focal plane is at the camera target
shadow_map_flags a bit field to set various aspects of shadow maps
shadow_map_resolution The width and height of shadow maps to be generated. This value will be clamped up/down to 512, 1024 or 2048
shadow_map_samples The number of locations in the shadow map used to determine the percentage value of light received by a pixel in the rendered scene.
simple_reflection_flags a bit field to set various aspects of simple reflections
simple_reflection_plane the plane onto which the reflection should be projected
simple_reflection_blur An integer between 1 and 31 indicating the level of blurring (softening) that is applied to the reflection
simple_reflection_attenuation the orthogonal distances (in world space) from the reflection plane to the parallel hither and yon planes between which reflections linearly interpolate between fully transparent and fully opaque.
ambient_up_vector the reference vector for ambient light. Ambient light can be specified as a linear interpolation between an up color and down color. HOOPS 3dgs supports this as part of its lighting model, but graphics systems that are unable to do so can simply take an average of the up and down colors.
gooch_color_range the index of the "warm" color, followed by the index of the "cold" color. Color indices are interpolated across that range depending on the surface normal orientation with respect to the light(s). Ignored if lighting interpolation is set to something other than gooch.
gooch_diffuse_weight the relative weight of standard lighting relative to the non-photorealistic component as specified in the paper by Gooch et al. Ignored if lighting interpolation is set to something other than gooch.

Notes

Rendering options control miscellaneous display options. For the specific definitions of what these values mean in HOOPS/3dGS please refer to the Set_Rendering_Options specification in the 3dGS Reference Manual.

Mask/value bits

00000001 Texture interpolation of faces
00000002 Texture interpolation of edges
00000004 Texture interpolation of vertices
00000008 Color interpolation of faces
00000010 Color interpolation of edges
00000020 Color interpolation of vertices
00000040 Color index interpolation of faces
00000080 Color index interpolation of edges
00000100 Lighting interpolation for faces is gouraud
00000200 Lighting interpolation for faces is phong
00000400 Lighting interpolation for edges is gouraud
00000800 Lighting interpolation for edges is phong
00001000 Hidden surface algorithm specified, hsr present if on
00002000 Hidden surface algorithm for transparent items specified, hsr present if on
00004000 Local viewer
00008000 Perspective Correction
00010000 Display Lists, display_list_level present if on starting with version 15.15
00020000 Debug, debug present if on
00040000 Technology, tech_quant present if on
00080000 Quantization, tech_quant present if on
00100000 Attribute Locks, lock_mask and lock_value present if on
00200000 Face Displacement, face_displacement present if on
00400000 Fog, fog_limits present if on
00800000 Buffer Options, buffer_options_mask & buffer_options_value present if on
01000000 Hidden Line Options, hidden_line_options present if on
02000000 LODs desired
04000000 LOD Options, LOD_options_mask & LOD_options_value present if on
08000000 NURBS Curve Options, nurbs_options_mask & nurbs_options_value present if on
10000000 NURBS Surface Options, nurbs_options_mask & nurbs_options_value present if on
20000000 Stereo Requested
40000000 Stereo Separation, stereo_separation present if on
80000000 Extended, mask & value are extended with an extra Long if on

Mask/value extended bits

00000001 Tessellations, tessellation_options present if on
00000002 Transparency style, transparency present if on
00000004 Hardware acceleration for transparency requested if on
00000008 Options for processing geometry cuts info capping faces, cut_geometry_options present if on
00000010 Z-buffer depth range mapping, depth_range present if on
00000020 Transform masking control, mask_transform present if on
00000040 Image scaling, image_scale present if on
00000080 Local Cutting Planes, cutting planes in the current segment or below only affect geometry at or below their position instead of affecting the whole scene if on
00000100 Simple shadow, simple_shadow_options present if on
00000200 Geometry Options, geometry_options present if on
00000400 Image Tint, image_tint present if on
00000800 Isolines, color index interpolation of faces draws only the isolines
00001000 Force Grayscale, colors should be replaced with the nearest gray value
00002000 Transparency Options, transparency_options present if on
00004000 General Displacement, general_displacement present if on
00008000 Join Cutoff Angle, join_cutoff_angle present if on
00010000 Screen Range, screen_range present if on
00020000 Stereo Distance, stereo_distance present if on
00040000 Shadow Map, shadow_map present if on
00080000 Simple Reflection, simple_reflection present if on
00100000 Ambient Up Vector, ambient_up_vector present if on
00200000 Gooch Color Range, gooch_color_range present if on
00400000 Gooch Diffuse Weight, gooch_diffuse_weight present if on

HSR algorithms

0 Hardware
1 Software Z Buffer
2 Painter's
3 Z-Sort
4 Priority
5 Spider Web
6 Hidden Line
7 None (used with transparency)
8 Fast Hidden Line

Technology and quantization bits

01 Standard Technology
02 Software Frame Buffer
04 Radiosity
08 Ray-trace
10 Threshold Quantization
20 Dither
40 Error Diffusion

Attribute lock bits

00000001 Callbacks
00000002 Camera
00000004 Color, color_lock_mask and color_lock_value present if on
00000008 Color Map
00000010 Driver
00000020 Driver Options
00000040 Edge Pattern
00000080 Edge Weight
00000100 Face Pattern
00000200 Handedness
00000400 Heuristics
00000800 Line Pattern
00001000 Line Weight
00002000 Marker Size
00004000 Marker Symbol
00008000 Metafile
00010000 Modelling Matrix
00020000 Rendering Options
00040000 Selectability
00080000 Styles
00100000 Text Alignment
00200000 Text Font
00400000 Text Path
00800000 Text Spacing
01000000 User Options
02000000 User Value
04000000 Texture Matrix
08000000 Visibility, visibility_lock_mask and visibility_lock_value present if on
10000000 Window
20000000 Window Frame
40000000 Window Pattern

Buffer options

0x01 Buffer Size Limit, buffer_size_limit present if on
0x02 Buffer should be retained
0x04 Buffer color depth should match device
0x08 Buffer color depth should be full RGB

Hidden line options

0x0001 Hidden Lines are Visible
0x0002 Hidden Lines are Not Visible
0x0004 Hidden lines drawn with a Pattern, hidden_line_pattern present if on
0x0008 Hidden Line Face Displacement, hidden_line_face_displacement present if on
0x0010 Hidden Lines drawn with a Dimmed Color, hidden_line_dim_factor present if on
0x0020 Attempt to draw faces here also if on
0x0040 Do not draw faces here if on
0x0080 Extended, hidden_line_options is extended with an extra Byte if on
0x0100 Attempt silhouette edge cleanup if on
0x0200 Do not do silhouette edge cleanup if on

LOD options

0x00000001 Conserve Memory
0x00000002 Screen Space
0x00000004 Physical
0x00000008 Tolerance is specified as FRU
0x00000010 Tolerance is specified as ORU
0x00000020 LODs should be generated as a Preprocess step
0x00000040 Bounding volume calculations should use the current bounding volume
0x00000080 Bounding volume is given explicitly
0x00000100 Ratios are specified
0x00000200 Thresholds are specified
0x00000400 Min Triangle Count is specified
0x00000800 Clamp level is specified
0x00001000 Num Levels is specified
0x00002000 Max_Degree is specified
0x00004000 Tolerance is specified
0x00008000 Usefulness Heuristic is specified
0x00010000 Calculation Cutoffs are specified
0x00020000 Fallback method is specified
0x00040000 Duplicate vertices should be collapsed into a single vertex
0x00080000 Algorithm for LOD generaation is specified
0x00100000 LOD mode is set, segment level if matching value bit is set, geometry level if not

LOD threshold units

1 Triangles per square pixel
2 Triangles per square centimeter
3 Percentage of display area
4 World-Space distance from the camera position

LOD algorithms

1 Fast Algorithm
2 Nice Algorithm

LOD fallback heuristic choices

0 bounding diagonal
1 bounding diagonal per triangle
2 bounding diagonal ratio
3 bounding diagonal ratio per triangle
4 bounding volume
5 bounding volume per triangle
6 bounding volume ratio
7 bounding volume ratio per triangle
8 triangle size

LOD fallback choices

0 None
1 Bounding Box
2 Coarsest LOD
3 Coarsest LOD or None
4 Coarsest LOD or Bounding Box
5 Bounding Box or None

NURBS options

0x01 NURBS Curve Budget, nurbs_curve_budget present if on
0x02 NURBS Curve Continued Budget, nurbs_curve_continued_budget present if on
0x04 NURBS Curve View Dependent Tessellation
0x10 NURBS Surface Budget, nurbs_surface_budget present if on
0x20 NURBS Surface Trim Budget, nurbs_surface_trim_budget present if on
0x40 NURBS Surface Max Trim Curve Deviation, nurbs_surface_max_trim_curve_deviation present if on
0x80 Extended, nurbs_options_mask & nurbs_options_value are extended with an extra Byte if on
0x0100 NURBS Surface Max Facet Angle, nurbs_surface_max_facet_angle present if on
0x0200 NURBS Surface Max Facet Deviation, nurbs_surface_max_facet_deviation present if on
0x0400 NURBS Surface Max Facet Width, nurbs_surface_max_facet_width present if on

Tesselation options

0x01 Cylinder, tess_num_cylinder & tess_cylinder present if on

Transparency style

0 Transparency should be ignored
1 Transparency should be drawn normally
2 Transparency should be drawn preferrring speed over quality, for exampe, using a transparent stipple ("screen door") pattern

Cut geometry options

0x01 Accumulation level for cut geometry processing, cut_geometry_level present if on
0x02 Tolerance for cut geometry loop closure, cut_geometry_tolerance present if on
0x04 Controls how color of cut geometry should match the faces/edges, cut_geometry_match present if on

Cut geometry levels

0 Entity -- each shell will be processed invividually
1 Segment -- all shells in a segment will be processed together
2 Segment Tree -- all shells in the current segment and all subsegments will be processed together.

Cut geometry color matching

0 Off -- use explicit colors
1 Current -- match the face/edge color in effect where the cut geometry is generated
2 First -- match the colors of the first geometry item processed while generating cut geometry
3 Last -- match the colors of the last geometry item processed while generating cut geometry

Mask transform

0x01 Camera rotation
0x02 Camera scale
0x04 Camera translation
0x08 Camera perspective (scaling)
0x10 Modelling rotation
0x20 Modelling scale
0x40 Modelling translation

Simple shadow

0x0001 Shadow on
0x0002 Shadow off
0x0004 Shadow plane, shadow_plane present if on
0x0008 Shadow light, shadow_light present if on
0x0010 Shadow color, shadow_color present if on
0x0020 Shadow blur, shadow_blur present if on
0x0040 Shadow resolution, shadow_resolution present if on
0x0080 Shadow extended options, a second byte of option bits is present
0x0100 Shadow auto, the current segment should display its own shadow if shadows are on
0x0200 Shadow opacity, shadow_opacity present if on

Geometry options

0x01 Hard Edge Angle
  • Extra fields for extended mask/value, and optional fields
  • Stereo separation were added in HSF version 6.50.
  • Transparency style was added in 7.10.
  • Cut geometry options and depth range added in 8.06.
  • Extended hidden line options added in 9.05.
  • LOD_threshold_type added in 9.08.
  • Mask transform and Image Scale added in 10.01.
  • Simple shadow added in 10.02.
  • Geometry options and hard edge angle added in 12.05.
  • Image tint added in 12.10.
  • Depth peeling options added in 13.10.
  • General displacement added in 13.35.
  • Line join cutoff angle added in 14.05.
  • Shadow opacity added in 14.10.
  • Screen range added in 15.05.
  • Display list level added in 15.15.
  • Shadow maps added in 15.15.
  • Simple reflections added in 15.15.
  • Ambient up vector added in 16.15.
  • Gooch color range and gooch diffuse weight added in 16.15.