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]]
[Byte transparency_style]
[Byte cut_geometry_options,
 [Byte cut_geometry_level],  [Byte cut_geometry_tolerance]]
[(2)xLong depth_range]

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 amgle (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_style preferred means of handling transparent geometry
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

 

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
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

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

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

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

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.

Extra fields for extended mask/value, and Optional fields starting at Stereo Separation were added in HSF version 6.50.
Transparency style was added in 7.10.
Cut Geometry Options & Depth range added in 8.06.
Extended Hidden Line Options added in 9.05.
LOD_threshold_type added in 9.08.