@neilcsmith-net neilcsmith-net released this Jan 24, 2018 · 65 commits to master since this release

Assets 6

This release makes preparations for v4 development, introduces much improved support for offscreen surfaces in video pipelines, adds access to underlying Processing images/graphics, and fixes some bugs.

This is the last planned release in the v3.x series - bug fixes will be backported.



  • Core
    • Deprecated @Port and replaced with @Config.Port - former will be removed in v4 because of name collision.
    • Improve feedback if Error thrown (rather than Exception) as can happen with the library support added in v3.4
  • Audio
    • Deprecated Table and replaced with AudioTable - former will be removed in v4 because of name collision.
  • Video
    • Improved support for @OffScreen PGraphics in video:custom. Added support for scaleWidth and scaleHeight properties (1.0 is default and same as output), as well as persistent to control whether the surface can be released after drawing each frame (default true to keep content).
    • Added support for @OffScreen in video:gl:p2d and video:gl:p3d. Adds ability for multi-pass shader FX amongst other things - some additional components using this to follow. NB. the field types are PGraphics2D and PGraphics3D respectively. There is not currently support for 3D graphics in 2D components, or vice versa - this is planned.
    • Added find() method in video:gl:p2d and video:gl:p3d, as well as related PImage and PGraphics2D/3D to get access to underlying Processing types for use with libraries, etc. For example -
    @In(1) PImage in;
    @OffScreen(scaleWidth = 0.5, scaleHeight = 0.5, persistent = false) PGraphics2D scratch;
    in.find(processing.core.PImage.class).ifPresent(img -> { // do something with image } );
    • Updated Syphon libraries to support use with standard OpenGL Core Profile (no longer required to set renderer to legacy OpenGL 2)
    • FIX major issue introduced in 3.4 where code couldn't be edited / new components couldn't be added if a video root had been restarted.


  • Core
    • Added an action in the Help menu to open Core JavaDoc in the browser. NB. All codeable components have access to the methods defined in DefaultCodeDelegate. For specific additional functionality see -
      • core:custom : CoreCodeDelegate
      • audio:custom : AudioCodeDelegate
      • video:custom : VideoCodeDelegate
      • video:gl:p2d : P2DCodeDelegate
      • video:gl:p3d : P3DCodeDelegate
      • tinkerforge:custom : TFCodeDelegate
    • Add/remove multiple libraries at a time.
  • Code editor
    • Added code templates to ease creation of annotations - type the shorthand then TAB - use ENTER to move through the different values. eg.
      • ptnd
      @Type.Number(min = ..., max = ..., def = ...)
      double ...
      • ptnp
      @Type.Number(min = ..., max = ..., def = ...)
      Property ...