Helix Toolkit 3D for .NET

Release 2.4.0

[2.4.0] - 2018-8-26

Added

  1. Axis aligned plane grid. (WPF.SharpDX and UWP)
  2. CMO Reader. (WPF.SharpDX and UWP)
  3. Animation KeyframeUpdater. (WPF.SharpDX and UWP)
  4. Added UV Transform in PhongMaterial/DiffuseMaterial (WPF.SharpDX and UWP).
  5. Added custom billboard texture sampler.

Improvement and Changes

  1. Move render environment map and render shadow map properties into PhongMaterial. (WPF.SharpDX and UWP)
  2. Includes material sorting if EnableRenderOrder = true. Update RenderOrder to ushort. Update sorting key to be uint = [RenderOrder, MaterialID]. (WPF.SharpDX and UWP)
  3. MaterialVariable pooling. (WPF.SharpDX and UWP)
  4. Obsolete BoneMatrices struct. Improve BoneSkinnedGeomerty3D. Directly Martix array binding for bones. Add BoneGroupModel3D for bone sharing. Implemented basic key frame animation support and Demo. (WPF.SharpDX and UWP)
  5. Performance improvement.

Fixed

  1. Fix bug on DisposeAndClear not called during detaching scene node. (WPF.SharpDX and UWP)
  2. Fix bug on invalidate scene graph not working on detaching scene node. (WPF.SharpDX and UWP)
  3. Instanced models are not properly exported using ObjExporter #902 (WPF.SharpDX)
  4. Coordinate system and view cube are clipped when resizing the Viewport3DX #892 (WPF.SharpDX and UWP)
  5. Wrong Y texture coordinate #870 (WPF.SharpDX and UWP)
  6. ObjExporter export MeshGeometryModel3D fails #857 (WPF.SharpDX)

Release 2.3.0

[2.3.0] - 2018-7-22

Added

  1. Dynamic Buffer Support for geometry data streaming. (WPF.SharpDX and UWP) Wiki
  2. New TransformManipulator. See Manipulator Demo. (WPF.SharpDX and UWP)
  3. Ply format reader. (All)
  4. Support Order Independent Transparency for DiffuseMaterial. (WPF.SharpDX and UWP)
  5. Add BatchedMeshGeometryModel3D for mesh batching, supports multiple material color properties.(WPF.SharpDX and UWP)
  6. Support Manual Render Ordering. (WPF.SharpDX and UWP)

Improvement and Changes

  1. Move tessellation parameters into PhongMaterial. (WPF.SharpDX and UWP)
  2. Obsolete Ray3D. Use SharpDX.Ray instead. (WPF.SharpDX and UWP)
  3. Optimize all gesture handlers. (WPF.SharpDX and UWP)
  4. Move camera to shared project. (WPF.SharpDX and UWP)
  5. Rearrange the order of DefaultVertex struct. Separate Texture Cooridnates and Vertex Colors into own buffers. (WPF.SharpDX and UWP)
  6. Change to use CanRenderFlag in render core instead of calling CanRender during rendering. Use UpdateCanRenderFlag or SetAffectsCanRenderFlag to update the flag during property change. (WPF.SharpDX and UWP)
  7. Add Geometry property in HitTestResult. (WPF.SharpDX and UWP)
  8. Change shader byte array to lazy loading. (WPF.SharpDX and UWP)
  9. Obsolete Viewport3DX.WorldMatrix.

Fixed

  1. Fixed model transform matrix multiplication wrong sequence on HitTest with GroupModel and Instancing.(WPF.SharpDX and UWP)
  2. Rectangle selection: why returns Models3D instead of Visuals3D? #841 (WPF)
  3. ZoomExtentsWhenLoaded not work when model transformed. #832 (WPF.SharpDX and UWP)
  4. stl import error. #827 (All)
  5. 3ds import error. #816 (All)

Release 2.2.0

[2.2.0] - 2018-6-17

Added

  1. Add per-frame draw call in RenderDetail.
  2. Add pingpong buffer for post effects. Add depth stencil buffer pooling
  3. Add RenderTechnique serialization/deserialization.
  4. Add BlendFactor/SampleMask/StencilRef in ShaderPassDescription.
  5. Port DynamicCodeSurface3D to SharpDX version.

Improvement and Changes

  1. Move FXAA before post effect. ##### Pre(such as shadow map)->Opaque->Particle->Transparent->FXAA->Post(post effects)->ScreenSpaced(ViewBox/CoordinateSystem).
  2. Change to use specific material for mesh shading technique change. Added DiffuseMaterial(Render DiffuseColor/DiffuseMap only), NormalMaterial(Render Normals as Color), PositionColorMaterial(Render Vertex Position as Color), VertColorMaterial(Render Per Vertex Color). Remove separated techniques for normal/position/color rendering. Merge these passes into default BlinnPhong techniques.
  3. Encapsulate D3D11.DeviceContext functions into DeviceContextProxy. Skip redundant state bindings/shaderpass bindings.
  4. Re-implement shader class.

Fixed.

  • Fixed and improved state object and shader resource proxy pooling.
  • Errors building project (FeatureLevel10 issue). #754 (WPF.SharpDX & UWP)
  • Inertia does not work correctly when camera has lefthand coordinate system #760 (WPF.SharpDX & UWP)
  • Viewport not updating when rotating #767 (WPF.SharpDX & UWP)
  • error in LineIntersection #770
  • Viewport3DX Title and Subtitle are not rendered correctly #773 (WPF.SharpDX & UWP)
  • Billboard questions (transparency + adding billboards after initialize) #774 (WPF.SharpDX & UWP)
  • ZoomDistanceLimitNear/-Far does not work correctly #777 (WPF.SharpDX & UWP)
  • CameraTarget still showing up when TouchRotate disabled #782 (WPF.SharpDX & UWP)
  • SharpDX: Camera movement using keyboard doesn’t work when mouse is not moving. #796 (WPF.SharpDX & UWP)
  • SharpDX: Instanced Models do not follow the viewports current render technique #802 (WPF.SharpDX & UWP) Note: Use material for switching
  • EnvironmentMap3D not working when using LeftHandSystem SharpDX #533 (SharpDX & UWP)

Release 2.1.0

Improvement and Changes

  1. New architecture for backend rendering and shader management. No more dependency from obsoleted Effects framework. EffectsManager is mandatory to be provided from ViewModel for resource live cycle management by user to avoid memory leak.
  2. Many performance improvements. Viewports binding with same EffectsManager will share common resources. Models binding with same geometry3D will share same geometry buffers. Materials binding with same texture will share same resources.
  3. Support basic direct2d rendering and layouts arrangement. (Still needs a lot of implementations)
  4. No more HelixToolkit.WPF project dependency.
  5. Unify dependency property types. All WPF.SharpDx model’s dependency properties are using class under System.Windows.Media. Such as Vector3D and Color. More Xaml friendly.
  6. Post effect support. Note: Post effect elements does not recommend to be used in ModelContainer3DX for model sharing between viewports.
  7. Supports transparent meshes rendered after opaque meshes. IsTransparent property is added in MaterialGeometryModel3D.
  8. Rendering order by RenderType flag: ##### Pre(such as shadow map)->Opaque->Particle->Transparent->Post(post effects)->ScreenSpaced(ViewBox/CoordinateSystem).
  9. Core implementation are separated from platform dependent controls(Element3D) into its own Scene Node classes. Scene Node serves as complete Scene Graph for traversal inside render host. Element3D will only be used as a wrapper to manipulate scene node properties from XAML.
  10. Supports Order independent transparent(OIT) rendering.
  11. Supports FXAA. Prefer FXAA over MSAA if using OIT or post effects. Note: FXAA does not support transparent background for now.
  12. High performance static octree for Mesh/Point/Line/Instancing Models hit test.

Fixed

  • 10000 GDI Object limit with BillboardTextSingle3D #607 (WPF.SharpDX)
  • How to turn off blurring for ImageMaterial? #581 (WPF.SharpDX)
  • ZoomExtents currently not work #623 (WPF.SharpDX)
  • PointGeometryModel3D not working #649 (WPF.SharpDX)
  • Create Image from Viewport #636 (WPF.SharpDX)
  • BillboardTextModel3D / ViewBoxModel3D text problem with Windows10 Display Scaling #652 (WPF.SharpDX)
  • Transform Update when GroupModel3D changed #656 (WPF.SharpDX)
  • RenderTechnique Property doesn’t work for Viewport3DX #655 (WPF.SharpDX)
  • How to load STL file in Helixtoolkit.SharpDX? #509 (WPF.SharpDX)
  • LineShadingDemo Grid/Lines switching #671 (WPF.SharpDX)
  • OctreeDemo - Octree Wireframe is invisible #673 (WPF.SharpDX)
  • Add and Remove Transparent Models #679 (WPF.SharpDX)
  • Missing triangle using SweepLinePolygonTriangulator #664 (WPF.SharpDX)
  • ParticleSystemDemo screen output #665(WPF.SharpDX)
  • Render to bitmap image? #692 (WPF.SharpDX)
  • How to attach EnvironmentMap3D from code? #702 (WPF.SharpDX)
  • GetScreenViewProjectionMatrix3D returns all zero in HelixToolkit.Wpf.SharpDX #708 (WPF.SharpDX)
  • ModelUpDirection doesn’t update in UWP #718 (UWP)
  • Change actions of touch gestures #716 (UWP, WPF.SharpDX)
  • Get bounds of model in MVVM #648 (WPF.SharpDX)
  • BUG: HelixToolkit.SharpDX MeshGeometryModel3D bounds #296 (WPF.SharpDX)
  • How do I control the frame rate? HelixToolkit UWP #334 (UWP)
  • SharpDX.DefaultEffectsManager: Not possible to set device / device selection #258 (WPF.SharpDX)
  • Reduce Sharp-DX version touch input lag #115 (WPF.SharpDX)
  • Bindings in content of Viewport3DX do not react on DataContextChanged #731 (WPF.SharpDX)
  • SortingGroupModel3D and Children #724 (WPF.SharpDX)

Release 1.1.0

Improvement and Changes

  • More smooth render loop. Refer to #611 (WPF.SharpDX)
  • Call update bound automatically if not updated. Refer to #571 (WPF.SharpDX)
  • GroupElement3D itemsSource supports IList #572.(WPF.SharpDX)
  • Implement SetTarget Command #577.(WPF.SharpDX)

Fixed

  • SharpDX GetBestAdapter method will not always get (The Best) one for .NET 4.5 (#282)
  • BillboardTextVisual3D with Emissive material still affected by lights (#127)
  • Fixed FPS counter not current under multiple viewport (#599)
  • Fixed default viewbox text (#599)
  • Viewcube not clickable after modelupdirection change while running (#586)