Releases: napframework/nap
NAP 0.4.4
New Features
- High DPI support for GUI elements (mod_napimgui)
- High DPI support for
nap::Renderable2DTextComponent
andnap::Font
(2D text) (mod_naprender) - High DPI support for
napkin
Note that because of these changes, the recommended version of QT (for Napkin) is bumped to: 5.15.2 LTS
. Refer to the updated documentation for more information.
Adds cross platform, display aware, high dpi support to mod_napimgui
, mod_naprender
and napkin
, together with the option to change the overall size of GUI elements. The result is a crisp interface that takes into consideration the selected display & DPI. The gui is automatically updated (scaled) when a window is moved from display to display. Old DPI behaviour (nap apps only) can be enabled by disabling EnableHighDPI
(RenderServiceConfiguration). High dpi rendering is enabled by default. Results are good, but could vary, depending on the operating system and underlying window system (X11, Wayland etc.).
The RenderService
can be used to get information about displays. The nap::Display
groups important display information together and various SDL helper functions are available to quickly get low level display information. On macOS, every demo and new project now ships with a .plist
file that contains the NSHighResolutionCapable
key to tell macOS the app is high DPI aware.
- Color Picker & Color Preview (napkin)
- Directly enter and edit Color Hex Codes (ie:
#C86969
) in property editor
Napkin (finally) has a color picker. Every nap::Color<>
is supported and can be edited using this widget, including RGBAColorFloat
, RGBColor8
etc. A preview of the color is shown in the inspector.
- New low-level
napasio
network module, used bymod_napwebsocket
(mod_napasio) - New
nap::ArtNetReceiver
, to receive artnet dmx data over the network (mod_napartnet) - New
artnetsend
&artnetreceive
demo
Improvements
- Optimized font rendering (mod_naprender)
- Sequencer is now DPI aware (mod_napsequencegui)
- Sequencer shares colors with gui (mod_napsequencegui)
- Removed
HAVE_CONFIG_H
compile definition (build) - ImGUI style is now shared (mod_napimgui)
- Remove the need to specifically handle non dpi aware guis (mod_napimgui)
- Recommended version of QT bumped to
5.15.2 LTS
because of improved High DPI support - Optimized
nap::BaseColor::getConverter
Fixes
- Invert and change mouse scroll direction when shift is pressed on macOS (mod_napinput)
- Documentation at various places
- macOS deployment target now is
10.15
(Catalina)
Breaking Changes
IRenderTarget::setClearColor()
now takes a const RGBAColorFloat&
instead of glm::vec4
NAP 0.4.3
New Features
- Visual Studio 2019 support (build, windows) dbf0b1d
- VS2015 no longer supported, please upgrade when using this release
- Delete the CMake cache (
msvc64
directory) before runninggenerate_solution.bat
- C++ 17 features enabled (build) 50c1df0
- Custom font using IMGuiServiceConfiguration (mod_napimgui) 511f8b3
- Filter modulation (mod_napaudio) 7df946e
Improvements
- Global variables are inline by default (core) 11fa8d5
- Remove old Qt search paths 1bbebfd
- Allow
imgui_internal.h
to be included in nap modules (mod_napimgui) 4aac1ef - Level meter node upgrade (mod_napaudio)
- Array subscript overload added to
MeshShape
(mod_naprender) - Updated getting started documentation (docs) c7f0664
- Allow napkin to compile with newer versions of qt
- Removed deprecated
qt5_use_modules
(build) 8fc3d3e - Added indentation when displaying nested parameter groups (mod_napparametergui)
Fixes
- Removed property path caching in document (napkin)
- Fixes hard to reproduce rare crash when switching document d49c550
- soem winpcap linker error when packaging (mod_napsoem) 08bb060
- Fix logging of OSC input messages with multiple arguments (oscmidi demo) 0efd007
- Fix allow audio device failure on startup (mod_napaudio) 61a9148
- Catch pybind11 exception on class constructor (rtti) 88fdc67
- TaskQueue: don't use bulk dequeueing to preserve queue order (mod_napaudio) 342328d
- Vulkan memory validation error ImGUI (mod_napimgui) e539f84
- Performance hit on
handleLoadPresetPopup
(mod_napparametergui) d447df4 - Potential crash due to negative selected preset index (mod_napparametergui) d447df4
- View angle distortion fix when taking snapshot using subtexture counts over 4 (mod_naprender) 8f839d7
NAP 0.4.2
New Features
- Edit and save service configurations (napkin)
- High res screenshot functionality (mod_naprender)
nap::Snapshot
- Tiled capture, supports resolutions up to 16k and above, depending on available vram
- Copy / Paste sequence segments (mod_napsequencegui)
- Set default project content and configuration .json file (napkin)
- Calendar Module (mod_napcalendar)
nap::Calendar
resourcenap::CalendarInstance
, runtime editable & serializablenap::CalendarComponent
emits calendar notification events
- Tween Module (mod_naptween)
- Tween Demo (tween)
- macOS unquarantine scripts
- NAP apps
- NAP package
- Ethercat SDO configuration (mod_napethercat)
nap::SDOArgument
nap::SDOValue
nap::SteadyTimer
(core)- Select audio host api on startup (mod_napaudio)
nap::DoubleSmoothOperator
(mod_naprender)
Improvements
- Sequencer Rewrite (mod_napsequence)
- Sequence GUI inspector and controls always overlap track views (mod_napsequence)
- Support for multiple unique
ethercat master
contexts (mod_napethercat) - Build environment checks (build)
- Added Snapshot to
vinyl
demo (demos) - Napkin styles & icons (napkin)
- more uniform and aligned
- Default
websocket
port is now 2000- removes root requirement on Linux
- Math defines moved to
mathutils.h
(mod_napmath)
Fixes
- Removal of not required
GLM_INCLUDE_DIRS
(build) - Napkin document switch, fixed potential dangling pointer (napkin)
- Default
SmoothDamp
max is now numeric_limit instead of 1000.0f. (mod_napmath) - Fix potentially selecting a queue family missing required capabilities (@AartOdding)
- Incorrect GPU target enum define
- Various others, see changelist
Breaking change: Texture2D::EClearMode::FillWithZero
is replaced by Texture2D::EClearMode::Clear
.
NAP 0.4.0
The first public release of NAP Framework under the MPL 2.0 license.
New Features
- Vulkan Render Engine (mod_naprender)
Deprecated
and replacedOpenGL
completely- Win64, Linux and OSX (MoltenVK)
- NAP source-code available under the the MPL 2.0 license
- Sequencer (mod_napsequence)
- Sequencer GUI (mod_napsequencegui)
- OpenCV support (mod_napopencv)
- Add protection to your app using a
license
(mod_naplicense) - Support for hard coded
Shaders
(mod_naprender) VideoPlayer
that can load and swap multiple videos efficiently (mod_napvideo)VideoShader
to convert YUV into RGB (mod_napvideo)RenderVideoComponent
render video to texture target immediately (mod_napvideo)facedetection
demo (mod_napopencv)sequencer
demo (mod_napsequence)paintobject
demo (mod_naprender)checklicense
demo (mod_naplicense)FontShader
(mod_naprender)keygen
tool (generates pair of public/private RSA keys)licensegenerator
tool (generates a license based on public key and user data)headless
rendering support
Improvements
Build system
now correctly loads modules based on dependencies (build)- Multi window
ImGUI
support (mod_napimgui) MSAA
and -Sample based shading
can be controlled for individual targets (mod_naprender)- Texture sampling options are controlled by the
sampler
, not texture (mod_naprender) RenderableTextComponent
, render text to texture target immediately using hard coded shader (mod_naprender)project.json
andmodule .json
files are now regular NAP resources (build)Napkin
compiled and deployed in separate directory next to application (napkin)Napkin
initialized against theproject.json
file, instead of an application data file (napkin)ProjectInfo
now accessible from Core, including important directories, files etc. (core)Napkin
improved property formatting of arrays (napkin)Uniforms
andSamplers
are now instantiated (mod_naprender)- Support for
uniform structs
andarrays
(mod_naprender) Napkin
has a splash screen (napkin)Documentation
in general, specifically 'getting started' and 'rendering' (docs)- Updated the
C++ styleguide
(docs) - Many build improvements (build)
Important Bug Fixes
FFmpeg
frame leak when switching videos (mod_napvideo)- Daylight saving taken into account (optional) when creating system time stamp (core)
For other changes, major and minor, refer to the changelist.
Breaking Changes
Unfortunately NAP 0.4.0 is not directly compatible with any of the previous NAP versions. This is due to major changes to the render engine, build system and license policy. If you run into specific porting issues make sure to ask us on the forum.
Use the upgrade
tools (build_tools\project_and_module_updater) to convert a =< NAP 0.3.X
project to a NAP 0.4.X
project, compatible with the new build system. Use the demos as a point of reference to port an older NAP OpenGL
application to Vulkan
. It's also important that you update your GLSL
shaders. The shading language has not changed but uniforms need to be part of a uniform struct (UBO), they can't be declared independent from one.
As mentioned in the improvements, napkin
now loads a project.json
instead of application data.json
file. This is because napkin correctly tries to resolve all module dependencies before loading the data associated with your application.