Need help ? Visit the support section.

Changelogs

1.3.4 build 2015-12-11

Major features in 1.3.4 release:
 + pipeline api to customize rendering pipeline, and gamekit integration
 + light api more flexible
 + number of lights dynamically adjusted
 + render and sampler state to easily swap state
 + drawing api for rendering line based shapes

Engine
 * Pipeline: new api to customize the engine rendering pipeline targeting GL2+ config defining 'stages' and 'commands' (savable/loadable from xml/json, hot swappable)
 * Drawing: new api for rendering line based shapes, support for AutoCAD DXF
 * Renderer: added RenderState (easily swap state), added SamplerState (bind TextureID to shader sampler name), VAO usage improvements, refactor RendererPipeline to Renderer, Batch enhancements, Shapes api changes
 * Framebuffer: added enums, GBuffer changes
 * Shader: number of lights dynamically adjusted, replaced mrt option of the shader generator by SURFACE_MRT/SURFACE_MRT_WT_DERIVATIVES surface types, auto-bind custom sampler to free texture unit, better exception handling when required MaterialLibrary is missing in shader generator (required since 1.3.2)
 * Material/Surface: refactor ISurfaceCreator into ISurfaceType, added SURFACE_MRT and SURFACE_MRT_WT_DERIVATIVES in DefaultSurfaceTypes
 * Light: api re-write to separate light param from model
 * Texture: add clip and copyRegion helpers
 * Visibility: added OrientedVolume and re-write IVolume api
 * GameKit: integrate pipeline api in RendererConfigComponent, added OmniLightComponent, added RequireComponent annotation to specify hard dependency between component (the GameObject will try to create them if not exist), RequireService annotation to access and share service registered (getGameObject().getGameScreen().getGame().registerService), AnimationComponent enhancements, RenderableComponent interface, fovY added to CameraComponent
 * Widget: List with customizable element's widget, default text added to TextField, discard from rendering element out of screen
 * Serialize: refactor and merge features from editor tool (format is forward compatible), add support for json array
 * Math: moved to bonzaiengine package, vector and color fields public
 * Lwjgl: fix F2 key
 * Physic: updated to bullet physics 2.83.5 and V-HACD to latest
 * Migration to Java 7 (next builds will target Java 8)
 
Plugins
 * SkyX/HydraX: support for new pipeline api

Tools
 * Editor: integration of the new pipeline api (OasisAtNight and OasisAtSun demos are runnable in editor)
 * Editor: gamekit light integration
 * Editor: F5/F7 keys to simulate/run, F2 to show collisions
 * Editor: in run mode, the game object transform show is the realtime transform (vs. the initial value for the other mode)
 * Editor: fix collision panel, add option to convert game object to asset
 * AssetRepository: fix ModelInRepo actions not waiting for import to complete, fix cleanAssetsDir may block indefinitely

Demos
 * OasisAtNight, OasisAtSun and SkyX/HydraX demos uses the new pipeline api

Distrib
 * Upgraded to Jogamp 2.3.1 and LWJGL 2.9.4 #172
 * Jars not signed anymore

1.3.2 build 2014-01-23

1.3.2 is a major release with a huge set of new features and many improvements. Major features:
 + scene graph with a component-based system and scriptable game objects
 + bullet physics library integration
 + fully customizable material
 + deferred rendering support
 + asset reference counter
 
Engine
 * Physic: bullet physics integration (bullet r2643) for collision, rigid body dynamics, soft body and constraints.
 * GameKit: scene graph with a component-based system and scriptable game objects
 * AnimGraph: api extended with parameters (sharable between nodes), TransitionNode (node transition with conditional), StateNode (sub graph with its own Timeline), implemented BlendPerJointNode
 * Asset: reference counter (AsyncModel/Texture/Shader/MaterialShader) with use/realease to increment/decrement counter
 * Renderer: deferred rendering support (framebuffer w/ multiple render target and multisampling support, deferred shading)
 * Renderer: Batch integrated in rendering pipeline, Batch intancing support
 * Renderer: picking now uses by default material's alpha test transparency (can be disabled with ShaderGeneratorConfig.alphaTestNoMaterial)
 * Renderer: static mesh can be rendered with a skinning shader (not recommended performance wise)
 * Texture: added texture 3D support, lod bias support added to TextureLoader and TextureParam
 * Material: explicit control of material surfaces (see Material/Surface, MaterialStandard/SurfaceStandard). A surface is usefull in deferred, multiple pass, picking, debug ... rendering context where the material is represented differently.
 * Material: shaders managed by material/surface (previously by GeometryData), added additive blend
 * MaterialGraph: material graph node system to define custom material/shader (output can be used with MaterialShader)
 * Shader: added ShaderState (contains uniform values), shader generator can ouput shader version #130 (for OpenGL 3.x core), compute shader support, added ShaderGeneratorConfig.mrt to output shader for deferred shading, support for uniform matrix array, added modelMatrix/projPlanes/timer uniform
 * Shader: fix two sided lighting, fix spotlight with tangent space, fix parallax shaders, ShaderGenerator implementation backed by MaterialGraph, log compilation warnings
 * Visibility: added bounding cylinder/capsule
 * Camera: refactor (ICamera -> ICameraController, IView -> ICamera, View extracted from SceneView), added View.getRayFromMouse
 * Ui: improve layout convergence (resize was 'laggy'), support relative class in xml/json (.TextField for com.bonzaiengine.ui.widget.TextField), lot of fixes/enhancements, improve performance on Adreno/Mali chips
 * Threading: reduce queuing overhead, add Task priority
 * Io: support hierarchical ITagParser with TagAttributes.set/getSubTagParser, fix zip/jar Stream support, fix Stream.relativize
 * Tree: api changes to provide non-recursive tree traversal and lazy Iterable using continuation
 * Math: added Mat4x4.obliqueClipPlane, support Lengyel projection matrix
 * Bindings: improve jogamp and android support
 * Workaround for bug introduced in Java 7 Update 25 (CachedJarUrlConnection.getLastModified throwing NullPointerException)
 * Refactor: uses com.bonzaiengine package, World moved in tutorials src
 
Tool
 * Editor: git integration to track project and assets versions, project automatic upgrade (format changed)
 * Editor: gamekit integration including simulate/run mode to play the project in the editor, script hot reload and debugging/breakpoint support using any external IDE
 * Editor: added model collision/material editor, material graph
 * Editor: heavy bug fixes and enhancements

Plugin
 * SkyX plugin "SkyX is a photorealistic, fast and easy to use sky and clouds plugin"
 * HydraX plugin "Hydrax is a complete ocean simulation and rendering plugin"

Distrib
 * Jar signed with trusted certificate
 * Fix compatibility with java 7u45 security changes
 * Maven: maven deployment of the engine, tools, third parties
 * Demo: gamekit demo applet
 * Demo: 'Oasis at Night' (OpenGL 3.x deferred shading) + video
 * Demo: 'Oasis At Sun' (OpenGL 4.x shadow map) + video
 * Demo: SkyX / HydraX plugin + video
 * Tutorial: Bonzai Engine Editor tutorial (see <distrib>/editor/tutorial01) + video
 * Upgrade to lwjgl 2.9.2 #133, jogamp 2.1.4-rc-20140109

1.2.8 build 2012-08-20

1.2.8 is a maintenance release to provide several fixes and Ui memory optimizations.

Engine
 * MD5: support for standalone reading of MD5Anim
 * Texture: fix compressed texture getColor implementation with mipmap levels
 * Shader: fix shader generation (multiple lights, toon shading light)
 * Json: fix writer not escaping control characters
 * *IO: fix json detection
 * AssetManager: add loadShaders
 * Ui: heavy memory opti, add tooltip for Table/TreeTable, fix exception in TextField keyPressed, fix Button/Label ActionListener not called for all fast clicks, fix Slider2 theme, Constraint.weightX/Y now float and gridHeight/Width short, fixes in layout
 * Changes: removed Widget getPreferred** and forceLayoutResize, Widget.getInsets, Plane.projectAlongDirection

Website
 * Updated viewer and editor screenshots

1.2.6 build 2012-07-27

1.2.6 is a major release which many new features and several fixes.

Engine
 * LOD: added support for mesh lod levels, added ModelReaderSettings.lodi (serialized in xml/json), Model/ModelInstance implements ILod
 * Visibility: added IBoundable sorting (front to back or back to front), added lodLevel (to adjust mesh lod by distance from the view), added culling from removed FrustumCulling
 * World: visibility integration (culling, sorting, lodLevel) and transparent objects rendered last (sorted back to front), refactor/cleanup
 * Model: support second uv set (dae/lwo), support vertex color (dae/ase/fbx/lwo), fix bounding volume caching
 * Material: GeometryData can now reference material by index (Integer) and name (String), moved lighting and two sided states (single sided by default) from Model, automatically fix black material during model reading (was done before during rendering which was removed) which can be disabled with ModelReaderSettings.options.setIgnoreBlackMaterialFix, some fields are now private
 * Texture: added support for ETC1 compression (opengl es compression) in Dds/Tex
  Note: ETC1 textures must be flipped vertically when converted with external tool such as AMD's The Compressonator
 * Texture: full mipmap support (ITexture, read/write dds/tex, TextureLoader/TextureUtils, added TextureUtils.generateMipmap), added TextureID.getFormat/SizeInBytes, force clamp filter for cubemap texture, added TextureWriter.openGLEsCompression to use ETC1 compression, fix TextureWriter when alpha channel is removed (bug in TextureUtils.reduce), added ModelWriterSettings.texturesOut
 * Animation: fix AnimGraph active state when a node have multiple parent, fix animation retarget with only one (or no) joint mapped, added reorientLastJoint parameter to skeleton retarget, added AnimGraphLibrary, fix xml/json AnimGraph reading exception
 * Shader: added support for ATI2 normal texture in shader, added ShaderGeneratorConfig.emissionMap/lightmap, added MapType.Emission/Lightmap, material transparency is now used independently of lighting (dynamic lighting is no more needed to use material's transparency), support for object space normal map (ShaderGeneratorConfig.objectSpaceNormalMap), removed MapType.Glossiness/Shininess, removed ShaderUniform.Predefined.mixMode, fix AssetManager not generating shaders for Model.childs (such as md2/md3)
 * Spline: fix bounding volume when spline have no control points
 * Camera: improve VolumeManipulator fitToFrustum and changes to PerspectiveProjection.adjust
 * Math: optimizations when used in multi-threaded context
 * Renderer: added RenderOptions.setTransparentAlpha, added RenderMode.SurfaceTransparent, fix alpha test with fixed pipeline, fix material uv tile/offset misued, fix exception with morph target, fix Shapes.drawSkydome
 * Binding: fix offscreen rendering with jogl, fix lwjgl binding sending twice mouse click event with native display

 * Fbx: enhancement to material color parsing, fix some texture map not detected, fix static mesh not properly attach to skeleton, added ModelReaderSettings.options.setReaderFbxFixSkeleton to fix rare skeleton broken
 * Collada/dae: material name enhancement, fixes exceptions with animation and morph target, fix missing mesh with some dae model (including sketchup 8), fix rare error "Uncomplete array"
 * Lwo: fix normal inverted
 * Kmz: kml is now parsed to find reference to dae model, textures are properly located using relative path inside kmz archive
 * Dds: support of DDS_PIXELFORMAT bit masks, fix header writting
 * Tex: format enhancements to improve read/write speed
 
 * Ui/Event: fix ActionListener sometimes not called, fix double click event, fix wrong id of MouseEvent in mouseExited, keyTyped event now called for key pressed and released event inside, fix TextField capturing all key events
 * Ui/Widget: fix TextField key inputs (page up/down, ctrl left/right), added List.is/setElementEnabled, added TextField.get/setAppender, added setLocationAndAnchorInViewport (auto adjust anchor if widget exceed viewport, see javadoc), added IScrollable to define step when widget is inside a ScrollPane (implemented by Label,List,Table;TreeTable,TreeWidget), TreeWidget: select on mouse down (instead of click), TreeWidget: fix onSelectionChanged not called when a selected node is removed, added set/getTooltip (and xml support), fix Tablet/TreeTable rendering, fix TabPane forcing constraint on contents, improve UI update stability, added "textArea-default" (Theme.styleTextArea) style for multiple line TextField, fix TextField not receiving some keys, add support for tab (TextField and BmfFont), IFont.getTextSize signature changed, Menu/MenuPopup now pop on left/right/top/bot depending on available space, fix TextField mouse/key inputs, added TextField.is/setLowerCase, Key/MouseListener returns boolean (usually false, or true to stop further propagation), fix TabPane.removeTab not updating rendering
 * Ui/Font: performance improvements for widget and font rendering, fix rendering with UI.SCALE

 * Android: improve single/double tap detection, better support of hardware (shader) skinning
 * Android: added support for csaa antialisas (nvidia tegra ships). The code below is required when requesting antialiasing on your android app:


 * Fixes: potential exception in SceneView picking events and protect opengl state when exception occures inside Picker.renderObjects
 * Changes: model reader configuration moved from BonzaiEngine to ModelReaderSettings.options, MatrixStack moved in opengl.helper package
 * Changes: Material.name and Model.meshes/materials now private, Geometry.materialId to materialKey, MathFunc.signum->sign, Mat4x4.set*Rotation->setRotation*, [Model]WritterSettings.useLzmaCompression->lzmaCompression, AssetRepository.unloadAll->unloadTexturesAndShaders, TreeListener.onNodeClicked->onNodeMouseEvent, ***Library.assetIterable()->assets()

Tool
 * AssetRepository: re-design of builder dependencies (improvements when textures are shared, relies on timestamp for automatic rebuild on asset update, per platform build options
 * AssetRepository: added TextureInRepo, added support for motion retarget
 * Editor: added anim graph support, motion retarget integration, added texture import/reimport, asset tree popover preview, asset browser enhancements, more texture builder options, enhancements to 'Viewer' camera
 * Viewer: cubemap preview, added lod support, added prompt command (F2), fix mesh uv preview,
 * ShaderEditor: ui entirelly rewritten using ui/widget

Distrib
 * Upgraded to lwjgl 2.8.5#1744, jogl/jogamp rc9
 * Updated online tutorials and shader demo applet
 * Tutorial: added Sorting

1.2.4 build 2012-02-24

LWJGL nightly build provided with distribution may not work on linux. If you encounter any trouble, use official lwjgl 2.8.3

Bonzai Engine 1.2.4 is a major release with many features and improvements. Biggest new features are support for all OpenGL and OpenGL Es version, support for advanced animation, morph target, better support for android, and much more !

Engine
 * Engine now compatibility with OpenGL Es 2 and OpenGL >=3. Added GLc for compatibility layer with deprecated function, such as matrix stack and color, which are now implemented efficiently by the engine. syncFromContext and syncFromMatrix are utilities to synchronizes external matrix stack which engine matrix stack, usefull to integrated engine with third party code which does opengl rendering.
 * Support for morph target (dae and fbx)
 * Advanced animation system with multiple track and animation graph (with support for xml read/write), see documentation section for more details
 * Optimization and performance improvements (cpu, memory, gc)
 * Android: added support for android 4.x, added support for Android/OpenGL Es 2.0 requires android 2.3 and above, Android/OpenGL Es 1.1 requires android 1.6 and above
 * Asset: added AssetManager.setShaderGenerator for automatic/asynchronous shader generation, added loadModel/MotionAsyncWithCache to use Cache for downloading and loading model asynchronously (requires ModelLibrary to be set), added onContextLost(Model) to free rendering data and also reload texture/shader if when automatic/asynchronous loading is used
 * Reader: improve new JMF reading speed (only for jmf created with 1.2.4), various fix to improve support of fbx/dae/obj/mtl, improve polygon triangulation used with fbx/lwo/obj/ac3d
 * Texture: added support for anisotropic filtering (TextureParam), support for tga flip token, fix compressed texture loading with mipmap levels and rectangular size, added renameFile parameter to setTextureWriterOptions which rename texture file name at export, Tga: improve compression
 * Shader: toon shading support light spot dir/cutoff and ambient, added ShaderGeneratoConfig.fast to simplify algorithm and run faster on mobile device, ShaderGenerator multi-thread safe, ShaderGenerator added support for alpha test
 * GeometryData: added shaderNoMaterial to improve rendering when material is not needed (picking/shadow ...), better bouding volume pre-computation
 * Async: added IWorker.pause(boolean) to pause/resume task processing
 * Json: added support which can be used as an alternative to xml writting (ie model.json instead of model.xml ...)
 * Widget: heavy bug fix and performance improvement, added new widgets (Tree, Table, Treetable), added get/setOpacity, added set/getPopupMenu, added set/getFontSize, added TabPanel.is/setTabEnabled, added UiListener which notifies when widget (TextField) request text input (usefull to show/hide virtual keyboard on keyboardless devices), added UI.SCALE to easily scale UI theme
 * Font: SDFont: support and added third party SDFont.exe tool to generate font; BmfFont: improve scaling
 * Scene: added IScene.onContextLost which could happens after fullscreen switch with non native component, or when on android destroy context
 * Added support to lwjgl native display (better compatibility and efficiency).
 * Misc: improve support of lwjgl and latest jogl, drop support of Cg, new launcher dialog (ApplicationSettings.showDialog), added GLCapabilities.is/setOpaque for transparent window background (jogl2 only), setUseMultipleContext to notify multiple OpenGL context will be used
 * Fixes: fix fullscreen support, bug in KeyFrame.insert, bug in GeometryData when box was not precomputed, bug in Stream.copy(File,File), fix Mat4x4.multiplyProjectionModelview with orthographic matrix, async tangent space computation potentially break Model rendering
Changes/Refactors
 * Rendering loop is starten by default in init(GLApi,SceneView)
 * TextureList/ShaderList.hasPendingLoading parameter removed
 * ModelReaderSettings.boudingBox/SphereGeneration removed
 * Select a specific OpenGL [Es] Api version:
 * Shader does not used anymore fixed pipeline built-in uniform, therefore light properties must be specified to the renderer. If you're using your owns shaders with built in uniform, they will still works but not with GL Es / GL3fc:
 * AssetManager: last parameter of load method is moved in ModelReaderSettings.id
 * IModelRenderer and implentations replaced by RendererPipeline:
 * Matrix stacks: the engine does not use anymore OpenGL matrix stack (deprecated by OpenGL Api), use instead
 * IGLApplication renamed to IApplication and Launcher/LauncherSettings merged into ApplicationSettings:

 * Animation: changes for better flexibility/compatibility with new features. Skeleton bind pose (Skeleton.getBindPose) is now separated to the other motions (Skeleton.getMotion and Skeleton.getNumMotions return the number of motion not including bind pose). Animation.skeletonMotion/morphMotions added to specifies which motions are played by the Animation.
  Model.animContext is now Model.getAnimationContext()
 * ShaderUniform is now generic. For ShaderType.Int/Float types, use respectively jouvieje.math.Int/Percent. GlslShader.addParameter changed to addUniform. GLSLShaderGenerator renamed to ShaderGenerator.
 * Picking: Abstract picking is now Picker (IPickable is removed). Method signature changes are straightforward and getNameStackSize is removed. Use Picker.getColorId and GLc.setColor as follow before rendering custom picking objects (see Selection tutorial):

 * Refactors: jouvieje.model.animation splitted in jouvieje.model and jouvieje.animation, light code moved in jouvieje.light, animationUpdated->onAnimationChanged, hierarchyUpdated->onHierarchyUpdated, geometryUpdated->onVerticesChanged, JointData->JointMotion, ModelEngine->BonzaiEngine, PredefinedRenderMode->RenderMode, Bounding*.Bounding*Type->Bounding*, Model/Mesh.transforms->get/setTransforms, Optimizer.Param.setAnimationCompressionLevel (replace destructive and non destructive old methods), AssetLoader removed (use AssetManager instead), jouvieje.model.async->jouvieje.model.asset, ModelReaderSettings.modelId->id, ***Xml/Xml***->***Io (ie ThemeXml to ThemeIo etc), InlineMath->MathFunc

Viewer/Editor
 * Now use UI api (no dependency to swing), compatible with all version of opengl
 * Huge amount of fixes in viewer and editor

Tutorial
 * Clean up of tutorials
 * Use ModelLoadingStandalone instead of the source provided in distribution (projection stack was using modelview stack)

Website
 * New host, all new support section, new youtube channel, now on twitter

Distrib
 * Updated LWJGL to 2.8.3 and JOGL b661, remove dependency to third party org-netbeans-swing-outline
 * Clean up and simplification of tutorials
 * Changes on atomic jar naming (prefered is to use bonzaiengine.jar)
 * Added Model Viewer and World Editor apk
 * Added SDFont tool to generate SdFont fonts assets, modified version of lonesock SDFont

1.2.2 build 2011-06-30

This new stable release contains many fixes, enhancements and new features, here's the complete changelog:

2011-06-30: better compatibility with whader and ATI drivers, changes to the tools (viewer and editor)

Engine
* New Widget api: set (Label, Button, List, ComboBox, CheckBox, RadioButton, Panel, ScrollPane, Slider, TextField, TabPane, Menu), layouts (horizontal, vertical, grid with constraint), support for theme and layout/theme reading from xml

* Model format: google earth kmz model support added, DAE/FBX better support, JMF/JMA fixes (writing morph data and parsing Model.childs), added ModelEngine.is/setReaderDaeFixBadsidedNormals (default false) to solve the orientation of the normal when pointing to wrong side of the face
* PSD: fix support for non compressed psd
* Motion/Mocap retarget: new motion retarget algorithm much more powerfull and faster (dispatched to multiple thread, if ModelEngine.setInternalThread is set)
* Skeleton: fix sharing non sharable data between instance, model with no geometry but skeleton now return the skeleton bounding volume
* Shader generator: support for up to 4 lights, many fix to lighting algorithm
* Worker/Task: added Task.peek, Task.addDependency (ensure task is computed when all dependency are computed) and TaskQueue (control completion of a set of tasks)
* Font: asynchronous loading and integration with AssetManager, allow to force font alpha transparency, depth test state is no more changed, interface changed for rendering multiple text in single batch
* Xml: XmlWorlds added, world.xml format now contains a list of World
* ModelWriterSettings.addStreamOpenListener to track file written
* Offscreen rendering added (see tutorial OffscreenRenderingStandalone)
* VolumeManipulator: support for orthographic manipulation, slight api changes
* Fixes and enhancements to Optimizer, Picking (fix close picking), Spline (implement IBoundable), AssetManager (async loader helpers), Stream (copy maintanis timestamp), TextureWriter (temporary file deleted, fix dds cubemap writting), Renderer, GC, and many other ... (more details in 1.2.1 dev changelog)
Changes/Refactors
* Scene: changes due to the introduction of SceneView, here's a template

* ModelTextureList merged with TextureList and AssetManager, AssetManager/TextureList.assign* removed (automatically done) but now TextureList must be assigned before model loading

* ReaderSettings: uniformization:

* Worker/Task: Worker->IWorker, RunnableQueue->WorkerQueue, RunnableDispatcher->WorkerDispatcher, Task.getResult->Task.get, AsyncModel/AsyncLoader moved in jouvieje.model.async
* Model.set/isAutoNormalize removed and now handled automatically
* ModelInstance moved in jouvieje.model, Spline moved in jouvieje.spline
* ITimer renamed to TimerSystem
* SkeletonRenderer removed, now use: RenderMode.Bone,Joints,JointsOrient

Viewer
* Ui redisigned with new widget api
* Some fixes and enhancements

Editor
* Ui redisigned with new widget api
* Huge amount of fixes and some enhancement (orthographic view, better manipulator, motion retarget editor in beta, asset preview, asset tree options, spline camera preview, multiple world per project, ...)
* Project version upgraded (automatic)

Asset Repository
* Enhancements (rename dir, async export, clean) and fixes

Distribution
* Old bindings (gl4java and old version of jogl) are distributed in separate jar /bin/bindings/bonzaiengine-bindings.jar
* Fix "SHA1 digest error for" due to the use of pack200

1.2.0 build 2011-01-10

This is a major release, the project has now been moved to bonzaiengine.com and has been renamed to Bonzai Engine.
Here are the major features and improvements compared to 1.1.2.

Distribution
* Installer and ready to run tutorials, viewer and editor (application and applet)
* Binary jars has been renamed and also distributed as a single bundled jar, see faq

Engine
* Huge API refactoring/clean-up, please read Upgrading from 1.1.2 to 1.2.0
* Added support to Android 2.1 and later
* New 3D models support: FBX, BVH, X3D, MDL7, stable support of DAE
* JMF/JMA: high compression, encryption, forward compatibility (require a rebuild)
* JAF/JLF: for saving skeletal animation (jaf) and light (jlf)
* PSD: support added
* DDS: support for float texture, mipmap, compression swizzling, cubemap, and fixes (read/write)
* TEX: engine texture format derived from DDS with in addition higher file compression, encryption and faster loading.
* Texture: abstraction of cubemap textures
* Memory optimization: the memory usage has been highly reduced and the Optimizer utility can helps to reduce it even more !
* Fully oriented for asynchronous loading: ModelLibrary holds AsyncModel, ModelInstance instances AsyncModel, TextureLibrary for async CPU/GPU loading, Worker/Task for efficient/easy parallel work, ...
* Pluggable system: register/unregister model/texture format and io protocols
* Skinning: skeletal animation retarget (usefull to retarget bvh animation), skinning improvements
* Shader: compatibility fixes
* ...
* Widget: events are now triggered within GPU thread
* OpenGL bindings: updated to latest JOGL2 and LWJGL releases.

Tutorials
* New tutorials and existing updated to new api.

Viewer
* Lot of UI improvements
* Text are now localized and can be translated to any language

Editor
* Tool is now a project oriented with version history and uses internaly asset repository tool
* Lot of optimizations, UI improvements and bug fixes (more to come)

Asset Repository
* 'Dev' Tool available in bonzaiengine-tool.jar, to be documented on request.

And much more !

1.1.2 build 2010-12-01

Initial version tracked in the changelog.

Contact support for previous changelogs.

1.4.1 build 2020-08-31

Engine
 * Add support for LWJGL3
 * Renderer : fix shadow, use default shader when not assigned, BatchProfile refactor
 * Shader : add ShaderParam.colored, enable clipping with SURFACE_NO_MATERIAL surface
 * Shape / Drawing api merge into com.bonzaiengine.shape (replaces old Shapes utility too)
 * Reader : add support for STL and OSGJS, performance improvements
 * IO : faster IO
 * UI : fix ScrollPane/MenuPopup layout, improve focus & event dispatch, improve ComboBox/TabPanel/TreeWidget widgets, add SelectButton, fix ui rendering clipping, add WidgetXml to link a Widget to an xml (or json)
 * Upgrade to Java 8, various refactor

Tutorials & Tools
 * Tutorials clean-up
 * Tools : Improve UI, new tool framework, internal heavy rewrite (using injection / events)
 * New tool : https://patreon.bonzaiengine.com/

Show previous changelogs