TKE_Rendering_Options
Opcode
ASCII |
R |
Hexadecimal |
52 |
Decimal |
82 |
Operands
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, |
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, |
nurbs_options_value | bitmask indications which NURBS options are set
"on", |
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 |
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 |
0x02 | Tolerance for cut geometry loop closure, cut_geometry_tolerance
present if |
0x04 | Controls how color of cut geometry should match
the faces/edges, cut_geometry_match present if |
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.