Several enhancements were made to the display of
- The shadow map now continuously refines as new geometry is loaded.
- The position of the solar light is now synchronized with sun direction. See DisplayStyle3dState.sunDirection.
- World decorations no longer receive shadows.
- A display style can now configure whether or not transparent surfaces cast shadows. Any surface whose transparency is greater than the transparency threshold defined by the DisplayStyle3dState will not cast shadows. See HiddenLine.Settings.transparencyThreshold.
Solar shadows interacting with transparent surfaces
All RenderGraphics created as decorations are automatically disposed to ensure any WebGL resources are freed. This has the unfortunate side effect of preventing such graphics from being reused from one frame to another. If your decorations are expensive to create and/or change infrequently, you can now prevent automatic disposal by wrapping them in a RenderGraphicOwner. By doing so you assume responsibility for properly disposing of them when they are no longer needed. See RenderSystem.createGraphicOwner.
- Volume classification is now fully supported.
- Flash and hilite effects are now applied correctly.
- Planar classifiers now support transparency; the classified geometry will use the transparency specified by the classifier geometry.
- Classification of point clouds now works properly.
- Classification now works correctly in perspective views.
displaySolarShadowsnow defaults to
trueif not defined, instead of false.
directScreenRenderinghas been deprecated; it no longer has any effect.
The default settings for ambient occlusion have been changed to make the effect more subtle, and an option has been added to limit the distance at which the effect will be applied.
- PolyfaceBuilder.addGreedyTriangulationBetweenLineStrings method to build triangles "between" loosely related linestrings.
- RegionOps.consolidateAdjacentPrimitives method to consolidate adjacent lines and linestrings, and adjacent arcs of the same underlying circle or ellipse.
- RegionOps.rectangleEdgeTransform method to decide if a Loop object or point array is a simple rectangle.
- Range2d.corners3d method to get a
Point3dcontaining the range corners.
- GrowableXYArray.length property is writable (e.g. to trim the array)
- IndexedXYZCollection.getRange -- return the range of data in the collection.
- Support methods for using
PolyfaceVisitoras staging area for new facets to be given to a
- PolyfaceVisitor.pushInterpolatedDataFrom -- add new point, param, normal, color interpolated between two indexed positions in another
- `PolyfaceQuery.cloneWithTVertexFixup -- clone a polyface, inserting vertices within edges that are incident to points on other facets.
- `PolyfaceQuery.cloneWithColinearEdgeFixup -- clone a polyface, removing mid-edge vertices that are interior to adjacent colinear edges and are not used as non-colinear vertex on any other facet.
Added a flag PresentationManagerProps.mode to indicate that the backend always opens iModels in read-only mode and presentation manager can make some optimizations related to reacting to changes in iModels. This is an optional property that defaults to previous behavior (read-write), but it's strongly encouraged to set it to PresentationManagerMode.ReadOnly on read-only backends.
Last Updated: 15 June, 2021