- March 24, 2007
- 12,073
- 7,459
- Home Country
- Germany
- Moderator
- #1
This thread is about discussion of the idea to switch MP2 rendering to a newer DX version.
The current situation (as of 12/2014) is:
There are a number of limitations:
Proposal
I'd like to switch MP2 rendering to Direct3D11(.1). This allows us to use Direct2D for rendering of visuals and effects. Video playback will still require a Direct3D9(Ex) device.
Both D3D APIs can interoperate with each other. As we are already copying the Video frame as texture into our VideoBrush, the technology chain won't change so much.
Compatibility with Windows 7 (with platform update) is mandatory in the design decision.
The switch could solve all the limitations listed above. We would get a lot more features (effects), a better rendering quality (per-primitive anti aliasing), maybe(!) better performance (hardware tesselation vs. software triangulation), a better compatibility with other tools (see WPF, D2D) and more.
The proposed archtitecture looks like:
The work on this project has a quite big impact on SkinEngine and will take a lot of development, testing and bugfixing until we get the same features as we have now.
I'd like to put this idea to discussion, what other things need to be considered, what other concerns exists?
[USERGROUP=39][USERGROUP=39][USERGROUP=39][USERGROUP=39][USERGROUP=39][USERGROUP=39][USERGROUP=39][USERGROUP=39][USERGROUP=39][USERGROUP=39]@Developers[/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP] [USERGROUP=40][USERGROUP=40][USERGROUP=40][USERGROUP=40][USERGROUP=40][USERGROUP=40][USERGROUP=40][USERGROUP=40][USERGROUP=40][USERGROUP=40]@Testers[/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP] [USERGROUP=38][USERGROUP=38][USERGROUP=38][USERGROUP=38][USERGROUP=38][USERGROUP=38][USERGROUP=38][USERGROUP=38][USERGROUP=38][USERGROUP=38]@Designers[/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP]
Download:
2017-03-29 Testbuild 6, based on MP2.1 pre2
The current situation (as of 12/2014) is:
- MP2 SkinEngine uses D3D9Ex for all rendering (SharpDX 2.6.2)
- Video playback uses DirectShow (incl. DXVA) with a "Custom EVR Presenter". This requires a D3D9(Ex) device.
- Visuals (controls), Brushes (SolidColor, LinearGradient, RadialGradient), Paths and Geometries are all created and rendered manually (software based triangulation)
There are a number of limitations:
- Own implementation of many code parts are not fully compatible to the WPF known controls (i.e. Path syntax limited, line join modes not fully implemented)
- Text rendering is not as flexible as required (only simple font, no switch between normal, italic, bold), features missing like line height adjustment. Right-to-left support is WiP (based already partly on D2D techology)
- Control rendering (lines) is aliased. The available MultiSampling-AntiAliasing (MSAA) has some own propblems and performance drops
- Often requested rendering effects are not available (mostly blur and shadows)
Proposal
I'd like to switch MP2 rendering to Direct3D11(.1). This allows us to use Direct2D for rendering of visuals and effects. Video playback will still require a Direct3D9(Ex) device.
Both D3D APIs can interoperate with each other. As we are already copying the Video frame as texture into our VideoBrush, the technology chain won't change so much.
Compatibility with Windows 7 (with platform update) is mandatory in the design decision.
The switch could solve all the limitations listed above. We would get a lot more features (effects), a better rendering quality (per-primitive anti aliasing), maybe(!) better performance (hardware tesselation vs. software triangulation), a better compatibility with other tools (see WPF, D2D) and more.
The proposed archtitecture looks like:
The work on this project has a quite big impact on SkinEngine and will take a lot of development, testing and bugfixing until we get the same features as we have now.
I'd like to put this idea to discussion, what other things need to be considered, what other concerns exists?
[USERGROUP=39][USERGROUP=39][USERGROUP=39][USERGROUP=39][USERGROUP=39][USERGROUP=39][USERGROUP=39][USERGROUP=39][USERGROUP=39][USERGROUP=39]@Developers[/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP] [USERGROUP=40][USERGROUP=40][USERGROUP=40][USERGROUP=40][USERGROUP=40][USERGROUP=40][USERGROUP=40][USERGROUP=40][USERGROUP=40][USERGROUP=40]@Testers[/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP] [USERGROUP=38][USERGROUP=38][USERGROUP=38][USERGROUP=38][USERGROUP=38][USERGROUP=38][USERGROUP=38][USERGROUP=38][USERGROUP=38][USERGROUP=38]@Designers[/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP][/USERGROUP]
Download:
2015-01-02 Testbuild 1:
Attached testbuilds are using DX11 + D2D rendering and included changes from latest weekly build. There are some things still missing like:
Attached testbuilds are using DX11 + D2D rendering and included changes from latest weekly build. There are some things still missing like:
- Effects (GUI, no filter in video rendering)
- Image transition rendering (i.e. ImagePlayer slideshow)
- New: Effects (Shadow, Blur), used in Apollo One
- New: Quality settings (Settings->Appearance: Antialiasing, Image scaling, Video scaling)
- Broken: Image player
- Bugfix and optimization of Effects rendering: enabling caching improves performance a lot (only for static content!)
- Changed visuals: a rounded Rectangle filled by a VisualBrush is faster than an OpacityMask applied to a Grid.
- Still broken: Image player
- Restored effects based video rendering (using custom SharpDX build now)
- Image rendering working in general, few bugs expected though
- ImagePlayer works, but transitions between images are not yet working again
- Note to Windows 7 users: please extract the additional plugin (20150306-Win7_Compatibility) the MP2-Client folder of this testbuild. It contains a renamed D3DCompiler_43.dll to match Win8 SDK requirements (_47.dll, but this is Win8 only )
- ImagePlayer works, but transitions between images are still not working
- Note to Windows 7 users: please extract the additional plugin (20150306-Win7_Compatibility) the MP2-Client folder of this testbuild. It contains a renamed D3DCompiler_43.dll to match Win8 SDK requirements (_47.dll, but this is Win8 only )
- BlueVision skin D2D build added
- All changes from the MP2.1 pre 2 release are now included in this snapshot.
- WiP: Adding support for Direct2D effects
- WiP: Adding design time support for MPF-XAML
- [WiP] - Adding support for Right-to-left languages (Hebrew, Arabic...)
- Direct2D overview: Direct2D - Wikipedia
- DX feature level: http://msdn.microsoft.com/en-us/library/windows/desktop/ff476876(v=vs.85).aspx
- Win7 D2D: http://msdn.microsoft.com/en-us/library/windows/desktop/jj863687(v=vs.85).aspx
- GitHub - AvengerDr/Odyssey: Odyssey Engine Repository, http://www.iterastris.uk/ (example D2D based engine)
Last edited: