NoesisGUI 2.0 Changelog

Version 2.0.2f2

  • Enhancement Thread affinity checks added to ensure objects are accessed from the correct thread.
  • Enhancement Improved Setter, Trigger and Condition error messages when value type is incorrect.
  • Fixed C# Crash during shutdown deleting C# proxies still having a C++ reference.

Version 2.0.2f1

  • Feature Support for Xbox One in Unity.
  • Feature Unity Support for game pads (more info).
  • Feature Implemented Underline and Hyperlink inlines.
  • Enhancement Linux platform is back again in NoesisGUI 2.0.
  • Enhancement Improved D3D11 renderer to support Fast Semantics in Xbox One.
  • Enhancement Improvement parallelism between Update and Render allowing separate frequencies.
  • Enhancement XamlParser reporting as error unknown properties or events (was a warning before).
  • Enhancement Added cursor property to TextBox, PasswordBox and Hyperlink in our styles.
  • Documentation Improved performance optimization tutorial.
  • Documentation UserControl tutorial adapted to NoesisGUI 2.0.
  • Documentation Unity3D tutorial improved with mentions to game pads and texture import settings.
  • Fixed OpenGL renderer no longer leaving internal objects bound in client code (to avoid potential modifications).
  • Fixed OpenGL renderer incorrectly casting glGetUniformLocation() to Int8.
  • Fixed glDiscardFramebufferEXT incorrectly used in OpenGL ES 2.0.
  • Fixed Rendering issue with half float vertices in OpenGL ES 2.0.
  • Fixed Crash when setting Projection or RenderTransform properties to null.
  • Fixed Crash when pressing space in a focused ComboBox.
  • Fixed Unity Textures with mipmaps rendering as black.
  • Fixed Unity Editor process never ending in OSX sometimes.
  • Fixed Unity Offscreen rendering not working properly in a few scenarios.
  • Fixed Unity Xaml post processor not detecting property values with single quotes.
  • Fixed Unity Caret disabled when software keyboard is shown in iOS.
  • Fixed C# Deletion of native proxies was not thread-safe (infrequent random crashes).

Version 2.0.1f1

  • Feature Cursor property implemented in FrameworkElement. SetCursorCallback added to integration API.
  • Enhancement Support for RGBA8 and RGB besides BGRA8 in BitmapSource.
  • Enhancement Improved error messages in XAML parser. Added line and column information whenever possible.
  • Enhancement Improved how BindingExpression unregister sources to avoid unexpected errors.
  • Enhancement Added support for absolute URIs starting with '/' or a drive letter 'C:/'. URIs tutorial updated.
  • Enhancement Two-way bindings from Float to Text are now using proper roundtrip conversion to avoid imprecisions.
  • Enhancement C# Compilation issues for .NETCore.
  • Enhancement C++ Support for passing user data to cursor and keyboard callbacks in IntegrationAPI.
  • Enhancement NoesisGUI is now compatible with Unity 5.6.
  • Fixed ContextMenu no longer allowing logical or visual parent.
  • Fixed Some ItemsControl default templates were not using ItemsPresenter.
  • Fixed Crash closing application while ContextMenu open.
  • Fixed Registered named elements not found when UserControl is root of a template.
  • Fixed Storyboard cannot be empty.
  • Fixed FrameworkPropertyMetadata allowed negative values for options parameter.
  • Fixed Crash accessing destroyed element when binding source NameScope changed.
  • Fixed Crash when setting an invalid identifier to x:Name property.
  • Fixed Crash binding TwoWay or OneWayToSource to read only properties.
  • Fixed UserControl inside a template was ignoring any Resource or Trigger defined in the associated XAML.
  • Fixed Caret selection and positioning was wrong in multiline TextBox.
  • Fixed C++ Our delegates no longer give error when removing non existent callbacks.
  • Fixed Crash when accessing nonexistent static resource.
  • Fixed Crash in TextBlock due to uninitialized software keyboard callbacks.
  • Fixed Crash when using invalid FontFamily in a XAML.
  • Fixed Unity annoyingly crashing continuously when a LoadXaml() was crashing first time.
  • Fixed Unity NoesisView inspector was not marking asset as dirty when modified.
  • Fixed Unity Crash when registering enum properties and setting incorrect default value type.
  • Fixed Unity Initialization automatically done first time any PInvoke function is used.
  • Fixed Unity 'Reimport All' button in settings is now working properly.
  • Fixed Unity EnablePostProcess property deprecated. Must use multiple cameras now. Unity tutorial updated.
  • Fixed Unity Offscreen phase is now always done before rendering any camera.
  • Fixed Unity Fixed vertical flipping issue with Unity 5.6.

Version 2.0.0f1

  • 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.
© 2017 Noesis Technologies