Skip to content

NAP 0.4.0

Compare
Choose a tag to compare
@cklosters cklosters released this 17 Nov 15:34
· 3637 commits to main since this release

The first public release of NAP Framework under the MPL 2.0 license.

New Features

  • Vulkan Render Engine (mod_naprender)
    • Deprecated and replaced OpenGL 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 and module .json files are now regular NAP resources (build)
  • Napkin compiled and deployed in separate directory next to application (napkin)
  • Napkin initialized against the project.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 and Samplers are now instantiated (mod_naprender)
  • Support for uniform structs and arrays (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.