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
{
public:
MyUserControl()
{
InitializeComponent();
}
private:
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.