NoesisGUI Changelog

Version 2.0.0

  • Doc Unity tutorial documentation updated.
  • Enhancement Unity Support for dragging XAMLs into Scene and Hierarchy.
  • Enhancement Unity Better error messages when importing XAMLs.
  • Enhancement Unity More examples: DataTriggers and ControlGallery.
  • Enhancement XamlPlayer included in the native SDK.
  • Fixed Unity Offscreen rendering not working when removing all lights.
  • Fixed Improved handling of corrupted fonts.

Version 2.0.0rc1

  • PS4 C++ New platform supported.
  • Enhancement Improved the batching algorithm with optimal number of draw calls in many scenarios.
  • Enhancement Optimized stencil usage trying to avoid it whenever possible.
  • Enhancement C# Resource providers exposed to customize how XAMLs, textures and fonts are loaded.
  • Enhancement C# Support for multiple initializations in Noesis.GUI.Init().
  • Enhancement C# Support for hot reloading of assemblies.
  • Enhancement C# Renamed DependencyProperty() parameter names to match WPF.
  • Enhancement C# Support for readonly keyword in static DependencyProperties.
  • Enhancement C# FontStretches, FontStyles and FontWeights added.
  • Enhancement C# RenderOptions.BitmapScalingMode is now available.
  • Enhancement C# Texture class exposed with methods to wrap native texture pointers (ID3D11Texture* and GLuint).
  • Enhancement StreamGeometry.ToString implemented as in WPF.
  • Enhancement Support for destroying IView and IRenderer independently to avoid having to wait for the render thread.
  • Enhancement Added support for Paste and SelectAll commands in PasswordBox.
  • Enhancement Support for showing ToolTip on disabled elements.
  • Fixed Stencil artifacts when batching primitives.
  • Fixed C# String property callbacks were not correctly converting between UTF8 and Unicode.
  • Fixed TextBox inside ListBox was losing focus when space key was pressed.

Version 2.0.0b4

  • Feature Apple Metal renderer. Integration sample added to SDK.
  • Feature Implemented support for events in code-behind. New tutorial on events.
  • Feature C++ Tessellation optimizations to DrawingContext:
  • All geometries must be drawn using DrawingContext::DrawGeometry.
  • Deprecated DrawLine, DrawEllipse, DrawRectange and DrawRoundedRectangle.
  • MeshGeometry is a new kind of geometry for drawing pre-tessellated paths.
  • Enhancement C++ Support for non-fatal (recoverable) errors. Execution can continue after this kind of errors.
  • Whenever possible we generate non-fatal errors in noesisGUI.
  • A new boolean is passed to the error handler to indicate if the error is fatal or not.
  • Enhancement C++ Changes to RenderDevice API:
  • All shader constants are now pointers that can be null in case the constant is unused.
  • A hash is provided for each shader constant to avoid uploading redundant data to GPU.
  • Shader generation is now isolated in each implementation using custom scripts.
  • Reduced the number of sampler combinations from 8-bits to 6-bits
  • Added information about the surface size in BeginTile to allow vertical flipping avoiding API gets.
  • Deprecated DeviceCaps.maxSamples, no longer needs to be implemented by renderers.
  • Enhancement C++ Improved the implementation of Delegates using C++11 features.
  • Enhancement Error mechanism improved in C# bindings, heavily reducing binary size and runtime performance.
  • Enhancement Stencil only used when strictly necessary.
  • Enhancement Xcode compiling now with libc++ (OSX minimal version is now 10.7).
  • Enhancement iOS minimal version set to 6.0.
  • Enhancement RTTI enabled for iOS to avoid linking issues in client code.
  • Enhancement Theme dictionary made global to all views. Noesis::GUI::SetTheme(ResourceDictionary* theme).
  • Enhancement StaticResources resolved while parsing, matching WPF behavior.
  • Enhancement Faster XAML loading times.
  • Enhancement Improvements to TreeView creation times.
  • Enhancement Path no longer cloning geometry to apply the stretching. Faster loading times.
  • Enhancement Key enumeration matching WPF.
  • Doc Added note to Unity tutorial about problems using Android OBBs.
  • Fixed Due to layout issues ListBox shows empty even though it is populated with data.
  • Fixed First element of the ListBox was moved 1 pixel down when scrolling.
  • Fixed TextBlock not updating layout after a new measure, rendering nothing.
  • Fixed Problems disposing C# proxy instances.
  • Fixed ComboBox selecting incorrect item after scrolling a long list with mouse wheel.
  • Fixed Duplicate name registration when having the same UserControl several times in a template.
  • Fixed Crash if caret arranged before TextBox.
  • Fixed Crash when loading non-existent XAML files. Now a non-fatal error is raised.
  • Fixed Bindings in DataContext property not updating.
  • Fixed Setting empty string to a property was not supported in XAML: <Setter Property="Text" Value=""/>.
  • Fixed Crash when focusing a TextBox before doing its layout.
  • Fixed Crash in TreeView when clearing ItemsSource collection.
  • Fixed Invalid generated geometry when stroking an empty Rectangle.

Version 2.0.0b3

  • Feature D3D11 Support for activating linear space rendering (sRGB) in D3D11RenderDevice constructor.
  • Feature Support for creating ImageSource from memory buffer using BitmapSource::Create.
  • Feature Support for creating TextureSource from native (GL, D3D) handles.
  • Feature BindingExpression exposed to public API.
  • Enhancement Static text rendering quality improved. Vertical hinting is active by default right now.
  • Enhancement CPU performance greatly improved in our vector graphics engine. For complex scenes the improvement is >50%.
  • Enhancement Improved performance when rendering VisualBrush.
  • Enhancement Added support for high-resolution mouse wheels.
  • Enhancement Popup Opened and Closed events exposed to C#.
  • Fixed Path hit testing failing sometimes with multiple figures.
  • Fixed Glyph kerning was sometimes incorrect at the beginning of a line.
  • Fixed ToolBar not measuring correctly children.
  • Fixed ContextMenu opening and closing events now matches WPF order.

Version 2.0.0b2

  • Enhancement Visual Studio 2015 officially supported.
  • Xbox One C++ New platform supported.
  • Doc New resource providers tutorial.
  • Doc Tutorial for the new rendering architecture.
  • Enhancement Improvements to RenderDevice architecture to better support complex offscreen scenarios. With these changes it is easier to avoid redundant state changes and it better supports TBR architectures.
  • Enhancement Source attribute deprecated in UserControls and Code-Behind classes. Corresponding XAML must now be loaded from constructor using LoadComponent(this, uri). This matches the WPF behavior.
class MyUserControl: public Noesis::UserControl

    void InitializeComponent()
        Noesis::GUI::LoadComponent(this, "Controls/MyUserControl.xaml");

        // Do FindNames and hook to events here
  • Fixed Support for using StaticResources defined in a different XAML file.
  • Fixed Sometimes parser was creating an extra instance of each UserControl and inmmediately destroying it.
  • Fixed Pressing Up arrow in empty TextBox unfocus the control.
  • C++ Deprecated NsFunc no longer supported in reflection macros. Events must be manually registered.

Version 2.0.0b1

  • Feature New multithreading rendering architecture. Class IRenderer split into IView (for the main thread) and IRenderer (for the renderer thread, if any). More information at the rendering tutorial.
  • Enhancement C++ Base class for renderers have been simplified. With 2.0 we expect all our clients to provide custom renderer implementations. Shouldn't take more than 2 - 3 day to implement one following our reference implementation.
  • C++ Our official runtimes no longer provide renderer implementations. It must be implemented by client code. We will provide reference implementations for all our platforms within the SDK. D3D11 and GL/GL_ES provided in this version.
  • Feature New resource providers architecture:
  • BuildTool deprecated. Textures, Fonts and XAMLs no longer needs preprocessing.
  • Custom loaders must be passed to Noesis::GUI::SetResourceProvider(). We support local files by default (similar to 1.2).
  • Noesis::Stream simplified to allow easier specialization.
  • Enhancement New font rendering architecture:
  • Support for all kind of brushes in text: solid, linear, radial and image.
  • Support for text inlines like <Bold>, <Italic> and <Span>.
  • Glyphs are now cached in a single atlas and dynamically recycled. Atlas resolution can be configured.
  • New text rendering algorithm with enhanced subpixel positioning. Hinting and ClearType no longer used.
  • Big glyphs are now rasterized with triangles instead of bitmaps. Threshold can be configured.
  • FontWeight, FontStyle and FontStretch properties fully supported.
  • Enhancement Kernel::Tick() removed. Client code no longer needs to call this function.
  • Enhancement We no longer clear external surfaces. DoNotClearStencil and ClearColor flags deprecated. Client code must do it.
  • Enhancement Offscreen rendering performance greatly improved.
  • Enhancement Offscreen view configuration is now sane by default. SetOffscreenSize function removed.
  • Enhancement Performance of bin-packing algorithm, used by offscreens and glyphcache, improved.
  • Enhancement TBB is no longer a dependency.
  • Enhancement VisualBrush generation no longer forcing re-tessellation.

Version 1.2.X

> Changelog_1.2

Version 1.1.X

> Changelog_1.1

© 2017 Noesis Technologies