Need help ? Visit the support section.

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 : http://patreon.bonzaiengine.com/

1.3.5 build 2017-12-09

Engine
 * Renderer: add LoaderContext to easily asynchronously load texture from a separate OpenGL shared context (non blocking), use DisplayCapabilities.setCreateLoaderContext and ISceneTarget.getLoaderContext, add RenderOptions.clipPlanes
 * Shader: tesselation support, add ShaderGeneratorConfig.maxNumClipPlanes, add ShaderGeneratorConfig.noLightingColorSource, fix shadow map shader compatibility
 * Drawing: support for points, fix line strip loop, various DXF fixes (color, elevation)
 * Procedural noise and filter api to generate 2d/3d images and arrays
 * Model: support properly FBX double position with ModelReaderSettigns.options.setReaderFbxHighAccuracyDoubleConversion, added Optimizer.optimizeVertexRange to avoid loosing floating point due to small vertex position compared to the model position
 * Widget: add Widget.bindTo and BindToName annotation, update List layout on element visibility change, fix size change event notification when hidden, dispatch mouse and key events to menu item, add MenuPopup.getCurrentMenuPopup, action on mouse press (and repeat) on Button, named command, add panel insert, added Fader.invert
 * Math: compatibility fix for Occulus Rift projection matrix
 * Visibility: octree, fix Box.intersectTest with Frustum, add IVolume.intersectTest with Plane
 * Texture: option for CMYK jpg TextureIO.JPG_CMYK_SUPPORT
 * Util: added RandomAccessInputStream, BufferPool is thread safe
 * App: removed ApplicationGui

Tools
 * The tools now uses the Widget BindToName annotation to automatically bind widget from xml/json to java objects.

1.3.3 build 2015-06-10

Major features introduced in the 1.3.3 branch:
 + 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
 * 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), AnimationComponent enhancements
 * Serialize: refactor and merge features from editor tool (format is forward compatible)
 * Math: x/y/z/w members are now public, moved to bonzaiengine package
 * Lwjgl: fix F2 key
 * Physic: updated to bullet physics 2.83.5 and V-HACD to latest
 * Migration to Java 7
 
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.1 build 2014-01-23

This build is identical to Stable 1.3.2 2014-01-23

Engine
 * Material graph: fix regression with mathFunction.multiply node
 * Shader: fix non default surface not generated for MaterialStandard

Tool
 * Editor: collision shape is properly scaled with game object scaling, save collision shape 'sync with model' property, fix exception when projet git repo has remote branches, minor ui fixes

1.3.1 build 2014-01-16

This build is identical to Stable 1.3.2 2014-01-16

Engine
 * AnimGraph: extend api with params (sharable between nodes), TransitionNode (node transition with conditional), StateNode (sub graph with its own Timeline)
 * Threading: TaskQueue regression (Task queued twice)
 * Texture: fix 3D texture support, add wrap r TextureParam
 * MaterialGraph: ColorToNormal and multiply node fixes
 * Material : minor fixes on features introduced in last dev build

Tool
 * Editor: anim graph editor enhancements, model material editor fix

Plugin
 * Hydrax: port fixes (underwater line artefact, ati driver workaround)

Distrib
 * Upgrade to lwjgl 2.9.2 #133, jogamp 2.1.4-rc-20140109

1.3.1 build 2014-01-06

Engine
 * Material: shaders are now managed by material/surface instead of GeometryData, material surface can now be explicitly set (introducing Material/Surface and MaterialStandard/SurfaceStandard)
 * Shader: added modelMatrix uniform
 * Model: added VertexData.customAnimated
 * Texture: fix read not resetting load failures
 * Assets: MaterialLibrary api changes, added AssetManager.create for typical usage setup
 * Optimizer: improve skeleton optimization
 * Threading: reduce queuing overhead
 * GameKit: support user components
 * Camera: refactor (ICamera -> ICameraController, IView -> ICamera, split SceneView in SceneView + View)
 * Math: support Lengyel projection matrix, added Mat4x4.obliqueClipPlane

Plugins
 * HydraX plugin "Hydrax is a complete ocean simulation and rendering plugin"
 * SkyX: fix moon, vcloud perf opti
 
Distrib
 * Demo: SkyX / HydraX plugin editor

1.3.1 build 2013-11-30

Engine
 * Texture: added texture 3D support
 * Renderer: Batch integrated in rendering pipeline
 * Material: added additive blend
 * Shader: added ShaderState (stores uniform values), Shader/ShaderUniform api changes
 * Task: added priority, AssetManager uses default priority for model/anim/texture/shader
 * Stream: fix zip/jar support
 * Widget: focus on mouse right button
 * Api changes: AlphaChannelMode/RgbChannelMode to AlphaMode/RgbMode, math

Plugin
 * SkyX plugin and editor (see bin/plugin) "SkyX is a photorealistic, fast and easy to use sky and clouds plugin"

Distrib
 * Build: fix compatibility with java 7u45 security changes
 * Demo: SkyX plugin editor
 * Jogamp: upgraded to 2.1.3#jogl_1160

1.3.1 build 2013-11-08

Engine
 * Physic: fix library loading on mac, protect against crash when using constraint, added RigidBody.getConstraints, added setFrames/setPivots to dof6/p2p constraints
 * GameKit: fix active state misused, fix some component init (npe/crash)
 * Camera: volume manipulator fix/changes for orthographic projection
 * Ui: support relative class in xml/json (can use .TextField instead of com.bonzaiengine.ui.widget.TextField), disable depth test on ui rendering
 * Input: fix inputs on mac with lwjgl
 * Shapes: changes lighting/color behavior

Tools
 * Editor: huge amount of bug fixes, manipulator enhancements, added game object active state, added game object bank editor

Distrib
 * Upgrade to LWJGL 2.9.1 #114 and JOGAMP 2.1.2

1.3.1 build 2013-10-19

Engine
 * Renderer: fix reflection
 * GameKit: support adding script component after game object was initialized

Tool
 * Editor: fixes to game object edition

Distrib
 * Fix installer overriding linux by solaris libraries (lwjgl/jogl)

1.3.1 build 2013-10-13

Engine
 * Shader: compute shader support, support for uniform matrix array
 * Deferred: preliminary shadow map support, added support for multisampling, support two sided material, gbuffer normal compression
 * OpenGL: support new extensions
 * Animation: fix Motion not loading MorphMotion
 * ModelInstance: fix OnLoadListener support
 * Engine: added ISurface and RenderOptions.get/setSurface, fix concurrent access
 * Io: TextureParam now ignores default parameters, replaced Stream(InputStream) by Stream(InputStream,String)
 * Task: add getDependencies
 * Widget: add Menu.remove, fix MenuPopup.remove
 * Api moved to com.bonzaiengine package, Worker/Task moved in threading package, shader refactor

Tool
 * Editor: browse texture from model, improve material editor and manipulator, minor fixes
 * AssetRepo: fix ModelInRepo.export thread blocking, fix building too many times, import additional texture references (normal/spec maps)
 
Distrib
 * Added Shadow Map demo 'Oasis At Sun'

1.3.1 build 2013-08-07

Engine
 * Shader: shader generator can ouput shader version #130 (for OpenGL 3.x core), added ShaderGeneratorConfig.mrt to output shader for deferred shading (see below)
 * Renderer: added renderer.deferred package with framebuffer w/ multiple render target and deferred shading support, Batch supports intancing, don't touch alpha test state anymore when using shader with fixed pipeline
 * MaterialGraph: added screenSpace, fix typo worldSpace to eyeSpace
 * Ui: support multiple font bmf/sd selection, added eventsOnExternalDrag
 * Api change in Shapes, SceneView, BonzaiEngine
 * Fixes: fix RuntimeException regression when reading some model with skin info (since recent Tree api changes)

Tools
 * Editor: added game object asset to easily instanciated similar game object, asset dialog with preview

Distrib
 * Jar signed with trusted certificat
 * Added Deferred shading demo 'Oasis at Night'

1.3.1 build 2013-07-14

This build focuses on the integration of the gamekit api in the editor with hot code reloading and debugging support.

Engine
 * Physic: added bullet library for mac (libraries are now available for all platforms)
 * Tree: api changes to provide non-recursive tree traversal and lazy Iterable using continuation
 * Workaround for bug introduced in Java 7 Update 25 (CachedJarUrlConnection.getLastModified throwing NullPointerException)
 * World: removed (src available in tutorials src)
 * Misc: UI fixes, Stream improvements

Tool
 * Editor: gamekit integration, project automatic upgrade
 * Editor: simulate/run mode to play the project directly in the editor
 * Editor: script hot reload and debugging/breakpoint support using any IDE
 * Editor: script exception logged in the editor
 * Editor: changes on spline/collision editors, fix model import
 * Editor/Viewer: ui changes and performance improvements

Tool
 * Upgrade to JOGL 2.0.2 #1042 and jgit 3.0.0

1.3.1 build 2013-06-07

Engine
* Physic: updated bullet to r2643, added linux and android libraries
* GameKit: fixes and changes
* Shader: fix shader list potentially unloading shader generated in a different thread
* Reader: IExtraAsset and ModelReaderSettings.extraAssets to access camera/light/spline from model reader
* Ui: added MenuPopup.is/setAdjustLocationAndAnchor, added TreeWidget single selection
* Refactor: Scene.getMainSceneView()->getSceneView()

Tool
 * Editor: gamekit integration in progress

Distrib
* Added gamekit demo online applet
* Sign certificate changed

1.3.1 build 2013-05-15

This build introduce a scene graph with a component-based system (with scriptable game objects).
GameKit will be progressively integrated in the editor, to replace the *old* (and soon deprecated) World design.

Engine
 * GameKit: scene graph with a component-based system (with scriptable game objects), see gamekit-demo
 * Physics: added step listener, added soft body joint, fix contact callback
 * Renderer: shapes changes and uses uniform color, fix exception when ISceneTarget is null
 * Android: workaround to dalvik bug rejecting opcode 0x11
 * Refactor: World moved to model.util and will be soon deprecated (gamekit api offer better functionnalities/flexibilities), IInputListener interface changes

Distrib
 * Tutorial: added gamekit-demo, fix applet-jogl, assets extracted, androit tutorial package changed, updated tutorial download link
 * Updated to LWJGL 2.9.1#65

1.3.1 build 2013-04-13

This build adds support for bullet physics library, using a jni binding integrated in the engine. It only contains win32/64 libraries, linux/mac/android libraries will be provided in some next dev build.
EDIT: linux/android libraries available since 1.3.1 build 2013-05-29

Engine
 * Physics: bullet physics integration (bullet 2.81 r2636) for collision, rigid body dynamics, soft body and constraints.
 * Visibility: added bounding cylinder/capsule, fix bounding sphere when skinned model have multiple lods
 * Visibility: parametrize bounding volume precomputation in ModelReaderSettings/Optimizer
 * Model: fix static mesh not updating transform when modified
 * Renderer: fix TBN color, fix tbn on Model.childs, added render joint bv
 * SceneView: added getRayFromMouse
 * IInput: add button index support for getPointerDrag
 * JOGL: improve compatibility
 * Refactor: bounding volume refactor, Vec* refactor, Transform: setRotationMatrix -> setMatrixTRS, Shapes changes and enhancements, scene.picking moved to opengl.helper, Faces.numFaces replaced with getter

Tools
 * Editor: added model collision editor

Distrib
 * Tutorial: added PhysicTutorial, updated tutorial download link
 * Maven: fix maven repository missing jars
 * JOGL: updated to jogl 957

1.3.1 build 2013-01-26

Engine
 * Animation: BlendPerJointNode implemented, added AnimationTrack.loopPause
 * Shader: picking (no material shader) now uses material's alpha test transparency (ShaderGeneratorConfig.alphaTestNoMaterial)
 * Material: fix GeometryData.setMaterialKey not overriding old shader
 * Texture: fix ref count when using a ModelReaderSettings with multiple lod
 * Optimizer: fix sometimes normal removed and tangent not generated with MaterialAdvanced material
 * Io: better input stream reading compatibility with android
 * Ui: fix TextField clipping when autoPack used, added TextField prepender

 * Refactor: ModelLibrary.getOrAdd renamed to use, TextField.getTextWithAppender()->getFullText()
 
Tool
 * Editor: added model material editor (edit materials or assign material asset to a model), material preview per platform, model rename

1.3.1 build 2013-01-13

Engine
 * AsyncModel/Texture: reference counter
 * Model: fix lwo texture reading, added ModelReaderSettings.animationSplitIndex and expose split method
 * Instance: fix shader sometimes not generated when using tangent space
 * Animation: fix AnimationContext.setTracks missing Animation[] argument
 * Worker: fix IWorder.stop not terminating threads
 * Io: now write ModelReaderSettings.animationSplit/animationSplitIndex, ignore default graph node name

 * Refactor: ShaderList and TextureList refactor

AsyncModel reference count usage:
Texture reference count usage:
Asset destruction:

Tool
 * Viewer/Editor: animationSplit integration and ui enhancements

Distrib
 * Tutorial: add AssetRefCount

1.3.1 build 2013-01-04

This is an important update to provide new features (Material graph, lod bias support, shader reference counter) and performance improvements and better compatibility with Android devices.

Engine
 * Material: MaterialGraph and MaterialShader integration
 * Shader: fix two sided lighting, fix spotlight with tangent space, fix parallax shaders, performance improvements, ShaderGenerator implementation replaced by MaterialGraph, ShaderList now uses reference counter, added ShaderUniform.projPlanes, GlslShader log compilation warnings
 * Texture: lod bias support added to TextureLoader and TextureParam
 * Model: fix bounding volume when model only have a skeleton
 * Asset: fix ModelLibrary/MotionLibrary allowing to add duplicate id
 * Renderer: better RenderLoop implementation, improve UI performance on Adreno/Mali chips, static mesh can be rendered with a skinning shader (not recommended performance wise)
 * Io: support hierarchical ITagParser with TagAttributes.set/getSubTagParser(), AnimGraphLibraryIO ignore default values of graph node by default, fix Stream.relativize
 * Mat4x4: added getPerspectiveNear/Far
 * Ui: fix exit/release event sometimes not called, fix Panel size when not in layout, fix GridLayout max width/height support, fix Menu item selection with key, fix TextField selection, fix RadioBox.setSelected(null), fix Table sometimes not rendering, fix ComboBox not updating element after setElements being called, TabPanel auto unselect disabled tabs, fix TreeWidget.setExpanded with level argument 0, fix CheckBox insets
 * Bindings: improve JOGL2 support, fix cursor lock with native component

 * Refactor: added IMaterial.getMapList, Material moved to material.MaterialStandard, added ITransformable.setTransform/transform, ModelInstance moved in model package, vbo_map renamed to vboMap, AssetManager fields renamed, ShaderList refactor (use/release/destroy), fields made private with access methods (Material.maps, Model.childs, Mesh.childs/geometries)

Tool
 * AssetRepository: MaterialGraph/Shader integration
 * Editor: MaterialGraph/Shader integration, bug fixes and ui enhancements

Distrib
 * Material graph video added
 * Update to LWJGL 2.9.0 and JOGL 2.0 RC11
 * Tutorials: added ShaderGraphTutorial

1.3.1 build 2012-10-23

This is a maintenance build to fix minor bugs and prepare the integration of new features (for next builds).

Engine
 * Shader: added ShaderUniform timer, fix LightMaterial uniform detection, shader generator opti
 * Model: fix lwo reader of normal map
 * TextureList: added textureIterable
 * AnimGraph: fix input name written twice in rare cases
 * Io: parseInt/parseLong/parseFloat/parseDouble opti
 * Ui: fix ComboBox.setElements always firing ChangeListener, UiR opti, MenuPopup fixes, fix Menu action not closing MenuPopup
 * Font: fixed exception when not created with ui theme
 * Timer: added timeSinceStart, moved from Scene to RenderLoop
 * App: ApplicationSettings.initApp, refactor on ApplicationGui
 * Lwjgl binding: fix rare exception when string containing characters with accent

Tools
 * Editor: fix motion retarget edit, fix slow open/close of anim graph editor, fix anim graph exit exception, fix new asset panel
 * Viewer: shader preview with teapot/sphere/cube/plane models
 * Shader editor: added LightManager tab

Distrib
 * Maven: maven deployment of the engine, tools, third parties

1.3.1 build 2012-08-24

Engine
 * Ui: improve update convergence (widget resize was kind of 'laggy'), can be disabled with the flag UI.bestUpdateConvergence=false; (flag will be removed in future)
 * AssetManager: added remove parameter to unload methods, add model/motion unload
 * TextureList: added TextureList.isPendingLoading, fix texture possibly reading/loading twice in rare case (ui theme reload, font reload)
 * Cache: fix rarely blocking worker thread
 * Changes: IWorker.queue, IShader.addAndLoad removed

Tool
 * Editor: minor ui enhancements, new screenshots
 * Gallery3d: new screenshots and updated the online shader demo, new build sended to newsletter

1.3.1 build 2012-08-20

Engine
 * Transform: concat renamed to add
 * Model/Mesh: added transform(Transform,boolean) and transform(Transform) (uses Transform.multiply internaly), changed old implementation of transform by transformAdd (uses Transform.add internaly)
 * *IO: added method to sort entries

Tool
Editor: git integration (jgit) to track project and assets versions (committer, tagging, ...).
  Project upgrade is automatic and does not requires third party software. After the project upgrade, the history will be empty (asset history not available)
Editor: project stored in json format, ui changes (inspectors, versioning, SplitPane, menu popup over 3d), Instance: center view popup item, fixes
All feedbacks are appreciated and welcome !

Distribution
 * Added jgit third party

1.2.5 build 2012-07-26

Engine
 * Collada/dae: fix missing mesh with some dae model (including sketchup 8)
 * Kmz: kml is now parsed to find reference to dae model, textures are properly located using relative path inside kmz archive
 * Texture: mipmap support to ITexture (read/write from dds/tex, upload to opengl, TextureUtils), force clamp filter for cubemap texture; added TextureUtils.generateMipmap
 * Dds: support of DDS_PIXELFORMAT bit masks, fix header writting
 * Tex: format enhancements to improve read/write speed
 * AssetManager: fix shader not generated for model with Model.childs (such as md2/md3)
 * Batch: added support for cubemap texture (fix Shapes.drawSkydome)
 * Visibility: created from SortByDepth and FrustumCulling (both removed), added lodLevel (to adjust model lod by distance from the view)
 * Model/ModelInstance: implements ILod, fix bounding volume caching, fix ModelUtil.listMeshes
 * World: visibility integration (culling, sorting, lodLevel), transparent objects rendered last (sorted back to front), refactor/cleanup
 * Spline: fix bounding volume when spline have no control points
 * VolumeManipulator: improve fitToFrustum; PerspectiveProjection.adjust changes
 * Widget/UI: fix ActionListener sometimes not called, fix TextField key inputs (page up/down, ctrl left/right)
 * Binding: fix lwjgl binding sending twice mouse click event with native display
 * Android: better support of hardware (shader) skinning
 * Various cpu optimizations
 * Changes: MatrixStack moved in opengl.helper package

Tools
 * Editor: save anim graph edition changes and node positions
 * Viewer: fix mesh uv preview, added auto lod
 * Editor/AssetRepository: added texture import/reimport, fix mipmap not generated by builders
 * Viewer/Editor: cubemap preview

1.2.5 build 2012-07-03

Engine
 * Mesh lod: added support for multiple mesh lod levels, added ModelReaderSettings.lodi (serialized in xml/json)
 * Material: automatically fix black material during reading (was done before during rendering, which was removed in last build), behavior can be disabled in ModelReaderSettings.options.setIgnoreBlackMaterialFix
 * Shader: support for object space normal map (ShaderGeneratorConfig.objectSpaceNormalMap)
 * Texture: fix support of mipmap with cubemap and compressed texture
 * GeometryData: can now reference material by index (Integer) and name (String)
 * SortByDepth: performance improvements of sort algorithm
 * AnimGraph: fix xml/json reading exception
 * Fbx: enhancement to material color parsing; Dae: material name enhancement; JMF: fix reader
 * UI: 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
 * Changes: Material.name and Model.meshes/materials are private, Geometry.materialId to materialKey, SortByDepth interface changed, MathFunc.signum->sign, Mat4x4.set*Rotation->setRotation*, [Model]WritterSettings.useLzmaCompression->lzmaCompression, AssetRepository.unloadAll->unloadTexturesAndShaders

Tool
 * AssetRepository: fix asset build/rebuild, re-design of builder dependencies (improves when textures are shared by multiple models), build now relies on timestamp (last modified) to automatically detect external asset modification (and automatic rebuild in that case)
 * Editor: project upgrade to last AssetRepository, improve 'Viewer' camera, expose Model/Motion/Texture builder options per platform, fix asset popup

Website
 * Updated online tutorials and shader demo applet

1.2.5 build 2012-05-26

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

Engine
 * Added ModelWriterSettings.texturesOut (similar to motionsOut)
 * Texture: added TextureID.getFormat/SizeInBytes, added support for ATI2 normal texture in shader, improve performance for writting TEX format, fix TextureWriter when alpha channel is removed (bug in TextureUtils.reduce), fix ATI1 texture sometimes rendered red (depending on extension supported)
 * Renderer: fix alpha test with fixed pipeline, added RenderOptions.setTransparentAlpha, added RenderOptions.SurfaceTransparent
 * Shader: material transparency is now used independently of lighting (dynamic lighting was needed before, it's not now)
 * Added SortByDepth to sort IBoundable (model, instance, ...) by depth for proper rendering order
 * Jmf: fix material forceAlphaTest reading since last build
 * Widget: 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
 * Android: added support for csaa antialisas (nvidia tegra ships). Make sure to use the code when requesting antialiasing on your android app (csaa is the default antialiasing technique in nvidia tegra ships).


Tool
 * Editor: enhancements to texture edition, project upgrade, fix jws
 * AssetRepository: added TextureInRepo
 * ShaderEditor: ui entirelly rewritten using ui/widget

Distrib
 * Upgraded to lwjgl 2.8.4#1649
 * Upgraded to jogamp rc8
 * Tutorial: added Sorting

1.2.5 build 2012-04-23

Engine
 * Model format: support second uv set (dae/lwo), support vertex color (dae/ase/fbx/lwo), fix some texture map not detected (fbx), fix static mesh not properly attach to skeleton (fbx), added ModelReaderSettings.options.setReaderFbxFixSkeleton to fix rare skeleton broken (fbx), fix rare error "Uncomplete array" (dae), fix normal inverted (lwo)
 * Shader: added ShaderGeneratorConfig.emissionMap/lightmap, added MapType.Emission/Lightmap, removed MapType.Glossiness/Shininess
 * Moved lighting and two sided state from Model to Material, some of Material fields has been made private
 * Renderer: fix material uv tile/offset misued
 * Removed ShaderUniform.Predefined.mixMode
 * Widget: added set/getTooltip (and xml support), fix Tablet/TreeTable rendering, fix TabPane forcing constraint on contents, improve UI update stability

Tool
 * Editor: asset browser enhancements, fix spline editor
 * Viewer: added prompt command (F2)

1.2.5 build 2012-04-09

Engine
 * Dae: fixes exceptions with animation and morph target
 * Renderer: fix exception with morph target
 * Font/UI: performance improvement for widget and font rendering, fix UI.SCALE with font
 * Dds/Tex: add support for ETC1 compression (opengl es texture compression format)
  Note: ETC1 textures must be flipped vertically when converted with external tool such as AMD's The Compressonator (but should not be flipped when converted by the engine).
 * Added TextureWriter.openGLEsCompression (and same parameter in ModelWriterSettings.setTextureWriterOptions) to compress dds/tex textures with use ETC1.
 * Android: improve single/double tap detection, fix sprite scale9 rendering with UI.SCALE
 * Refactor: model reader configuration moved from BonzaiEngine to ModelReaderSettings.options

Tool
 * Editor: added anim graph preview
 * AssetRepository: fixes

1.2.5 build 2012-03-14

Engine
 * Math: cpu optimization (important speed-up in skeleton retarget)
 * Asset: added AnimGraphLibrary, Model now single sided by default
 * 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
 * Widget: 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
 * UI/Event: fix double click event (when click was on different button), fix wrong id of MouseEvent in mouseExited, keyTyped event now called for key pressed and released event inside (UI event), TreeListener.onNodeClicked->onNodeMouseEvent, Fix TextField capturing all key events
 * Fixes: fix offscreen rendering with jogl, potential exception in SceneView picking events and protect opengl state when exception occures inside Picker.renderObjects
 * Refactor: ***Library.assetIterable()->assets(), model.io.***IO classes

Tool
 * Editor: added preview in asset tree when mouse stops over an item, added anim graph in asset tree and edition/preview panel, ability to import/export model/motion/spline/anim graph, hierarchical spline/anim tree similarly to model motion (when name have '/' separator), integration of motion retarget and improvements in retarget editor
 * AssetRepository: added support for motion retarget, better asynchronous builders/loaders

1.2.3 build 2012-02-23

Engine
 * Picker: fix picking with PickingEvent.Drag
 * Shader: improve light compatibility with android
 * Events: improve touch (tap and double tap) detection/compatibility with android
 * Widget: fixes events on Menu/MenuPopup, improve Table row selection performance, fix TreeTable 'hole' in first column, fix TreeWidget.updatef modifying expanded state of existing nodes, minor fix in ScrollPane

Tool
 * Huge amount of fixes in viewer and editor tools

Distribution
 * Font: added missing characters in sd font
 * Fix php page of world editor applet

1.2.3 build 2012-02-18

Full changelog from 1.2.2 is available in 'Stable' tab.

Engine
 * UI: added label/TextField font size get/set, added TabPanel.is/setTabEnabled, added UiListener which notifies when widget (TextField) request text input (usefull to show/hide virtual keyboard on keyboardless devices), Menu/MenuPopup is scrollable when exceed viewport, added UI.SCALE to easily scale UI theme, fix focus
 * SdFont: fix support, added antialising, improvement font magnification
 * BmfFont: fix rendering when font resized
 * Tga/Psd: improve rle compression
 * Theme: changes on font (slightly bigger, sdfont added)
 * Android: fix key input, ability to show shoft keyboard using UI.UiListener

Tutorial
 * Update UiWidgetTutorial with a label with dynamic font size

Distribution
 * Added World Editor apk, better Model Viewer apk
 * Added SDFont tool to generate SdFont fonts assets, modified version of lonesock SDFont

1.2.3 build 2012-01-25

1.2.3 branch is now stable and at feature freezed (until next 1.2.5 branch). This build is release candidate for 1.2.4 stable build, planned to be available in following days.

Engine
 * Fix compressed texture loading with mipmap levels and rectangular size
 * IWorker: added pause(boolean) to pause/resume task processing
 * AssetManager: added onContextLost(Model) to free rendering data and reload texture/shader if automatic asynchronous loading is used with the AssetManager)
 * Widget: improve ui event propagation to support widget occlusion; ScrollPane: added drag/touch to scroll, improve behavior of ensureValueVisible; TextField: added support for more characters, fix ctrl+x; Added TreeTable widget; fix rendering compatibility with osx lion
 * Changes: InlineMath->MathFunc

Tool
 * Editor: history panel now uses widget api (no more dependency to awt/swing !)

Website/Distribution
 * New forum, new tutorial section, new documentation section, fix website for ie9
 * Fix last tutorials (was using two AssetManager)
 * Remove third party org-netbeans-swing-outline (not used anymore by the editor)
 * Updated LWJGL to 2.8.3 and JOGL b627
 * Added Model Viewer apk ! (for android 2.3 and above)
 * Build tested fine with nvidia and ati cards, windows/mac and our android phones/tablets.

1.2.3 build 2011-12-28

Engine
* AssetManager: added setShaderGenerator for automatic and asynchronous shader generation, added loadModel/MotionAsyncWithCache to use Cache for downloading and loading model asynchronously (both only active if a ModelLibrary is set).
* Improvements to use less runtime memory when using an opengl context with no fixed pipeline (gles 2 / gl 3 fc) with optimized jmf models.
* Optimizer: improved size of jmf (filesystem and memory), more efficient geometry merger for skin model, ensure bounding volume is precomputed
* JMF/JMA: fix writing models with empty meshes
* Shader renderer: fix using wrong material color
* Batch: fix ui flickering in rare condition (could occures when a big batch was rendering after batch with an odd number of indices)
* Api changes: Optimizer.Param.setAnimationCompressionLevel (replace destructive and non destructive old methods), obsolete AssetLoader removed (use AssetManager instead), jouvieje.model.async->jouvieje.model.asset, ModelReaderSettigns.modelId->id, last parameter of AssetManager.loadModel* is now ReaderSettigns.id.

Tool
* Editor: now usable with a GL 3 fc context

Distrib
* Tutorials: simplified tutorials, added missing LightManager on some tutorial
 * Check our logo study

1.2.3 build 2011-12-17

Engine
* Added GLc.syncFromContext and syncFromMatrix (which synchronizes engine matrix stack with respectively opengl context matrix stack or specified matrix) to easily integrate with third party code.
OpenGL matrix stack is deprecated by OpenGL spec, therefore the engine does not use it anymore.
* GLc: fix sometimes not updating color (which breaks picking with non shader rendering)
* JMF: file reading speed up (some improvements only available with new jmf)
* Memory improvements to reduce gc
* ShaderGenerator: now multi-thread safe, added support for alpha test
* Widget: reduce cpu usage and stability of UI.update, improve performance of Table, improved SpriteManager.setOptimizeFontAllowResort, fix layout positioning when parent is at location (0,0), fix ComboBox popup height on first show, ScrollPane add page scroll (mouse wheel + control), Table mouse wheel scroll by row step
* Android: fix picking not working
* Android ICS 4.x: fix es20 compatibility, workaround for new nio bug
* API changes: Model/Mesh.transforms->get/setTransforms

Distrib
* bonzaiengine-bindings: drop support for gl4java
* Updated to LWJGL to 2.8.3 #1467 and JOGL #565
* Updated KMLColladaWW for 1.2.3

1.2.3 build 2011-11-27

Engine
* Support of opengl >=3.x now respect the spec (various fixes)
* Texture: added support for anisotropic filtering (TextureParam)
* Renderer: improve animation rendering with OpenGL Es 1.x
* Shader generator: fix morph shader, improve glsl es compatibility, added ShaderGeneratoConfig.fast to simplify algorithm and run faster on mobile device, fix regression introduced in previous dev build (out of bounds exception)
* SceneTarget_android: improve compatibility with devices
* Fix fullscreen support, DisplaySettings.screenResolution behavior changed: null = keep current resolution and a non null value will change screen resolution
* Added IScene.onContextLost: could currently only happens when switching to fullscreen with non native component (by default native component are used, except if you set ApplicationSettings.setUseMultipleContext to true)
* Api Changes: added DisplayCapabilities.setDefaultOpenGLEs, DisplayCapabilities.g/setNumSampleBuffers->g/setNumSamples, DisplaySettings.g/setGLComponentSize move to ApplicationSettings.g/setSceneSize, ApplicationSettings.setFullscreen->DisplaySettings.apply(...), ApplicationSettings.getDisplaySettings is null by default, IApplication.setFullscreen->IApplication.setDisplayMode

Distrib
* Updated to LWJGL 2.8.2 #1434 and JOGL b544

Website
* New video of the viewer running on an android phone with skinned and morphed models using OpenGL Es 2.0

1.2.3 build 2011-11-08

Engine
* Lwjgl: fix OpenGL context sharing, fix when setGLApiVersion(30) was used
* Renderer: fix exception when LightManager assign to RenderOptions has less than 4 lights
* Batch: fix color not used with programmable pipeline
* Widget: fix wrong position when using location anchor
* Tangent space: fix async computation result to random black rendering, speed improvements, fix potentially loosing gpu memory
* Shader generation: tangent space if needed by shader are processed at the end so in case of async generation the shader will be available faster
* Renderer: improve (reduce) cpu memory usage when using vbo

1.2.3 build 2011-11-07

Engine
* Engine now fully compatibility with OpenGL Es 2 and OpenGL >=3
* GeometryData: added shaderNoMaterial, used to improve rendering when material is not needed (usefull for picking/shadow algorithms)
* Picking: performance improvements and portable on all OpenGL [Es] versions.
* Widget: TreeWidget selection with shift/key, ComboBox popup shown on mouse down event, mouse pressed event is no more dispatched when a popup is visible
* Workaround for Android 3.0/3.1 Honeycomb nio bug
* JOGL: fix Android OpenGL Es 1.1/2.0 emulation
* Mat4x4: fix multiplyProjectionModelview with orthographic matrix
* Shader generator: remove usage of build-in attributes/uniforms and added precision (as required by GLSL Es), faster generation when GeometryData have same properties
 * Fix: async tangent space computation potentially break Model rendering (exception)
* Changes: refactor on glsl code, ModelEngine->BonzaiEngine, simplified renderer (remove IModelRender, picking options now in RenderOptions, see new RendererPipeline api), RenderMode->RenderOptions, PredefinedRenderMode->RenderMode, Bounding*.Bounding*Type->Bounding*, AbstractPicking->Picker.

Distrib
* Atomic jar: merged bonzaiengine-renderer/shader.jar in bonzaiengine-model jar
* Javadoc: added required extensions to IGL fields and methods
* Android light jars size reduced

Api changes
Due to the new OpenGL Es 2 and OpenGL >=3 support, there are some api changes detailled underneath:

* 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:
* IModelRenderer removed, new way to render model:
* Matrix stacks: the engine does not use anymore OpenGL matrix stack, use instead
* Picking: Abstract picking is now Picker, and IPickable is removed. The method signature changes is straightforward. If you have custom picking rendering code here's how to upgrade (also see Selection tutorial):

1.2.3 build 2011-10-16

1.2.3 is a major branch with many new feature (morph target, advanced animation system/tree, optimizations, improvements, fixes...).

Engine
* Morph target animation is now supported by the engine with DAE/FBX formats ! See the new videos
- Shader generator support morph target on gpu.
* Multiple track animation and animation blending is now supported ! See the new videos
- AnimationContext has been heavily modified to support animation graph (AnimGraph) and track (AnimationTrack), xml support to read/write
- Xml read/write support (editor in the tools)
* 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.
* Better bouding volume pre-computation for skinned model: now with a very low/unsignificant memory usage (both runtime and in file system) and very flexible (compatible with the new animation system).
boudingBox/SphereGeneration are therefore removed from ModelReaderSettings.
* Added support to LWJGL's Display for better compatibility, better fullscreen support (only compatible with lwjgl 2.8.0).
* Android: minimum api support is now android 1.6 / OpenGL Es 1.1, a renderer for OpenGL Es 2.0 for android >= 2.3 in progress.
* FBX: better support of skinning (lot of fixes and format support enhancement to fix bad mesh position and bad fit with bind pose), fix rare exception "unknow format"
* DAE: better support of VERTEX semantic, fix html character codes not replaced in texture name
* OBJ/MTL: support for texture with space
* Model Reader: improve polygon triangulation to handle more cases (used by fbx, lwo, obj, ac3d)
* TGA: support for horizontal and vertical flip token
* Texture Writer: added renameFile parameter to setTextureWriterOptions to rename the texture files
* Json: added JsonReader/JsonTagParser which implements ITagParser/ITagWriter like XmlWriter/XmlTagParser (both format are compatible and can be easily converted from one to the other).
- Added model.json, world.json, ... formats
Json low level parsing depends on lightweight json-simple (optional)
* Widget: added widget Tree and Table, added Widget.get/setOpacity (which allow fade-in/out of widgets), added WidgetAnimator for easier animation of widget states, added set/getPopupMenu for easy popup menu integration + xml support (popup automatically shown with right click), fix layout bugs, better support of mouse click events, huge memory improvements and stability slightly improved
* ScrollPane: fix ScrollPane flickering and improve min size
* ComboBox: focused after popup is hiden, up/down arrow select prev/next item, fix rendering last element selected after list has beencleared (setElements with null)
* Theme: update with tree and pin button styles
* Shader: toon shading support light spot dir/cutoff and ambient
* Added GLCapabilities.is/setOpaque for transparent window background (only compatible with jogl2 with native window), setUseMultipleContext to specify if the application will use multiple OpenGL context (native canvas/display not yet compatible with multiple context)
* Fixes: fix KeyFrame.insert potentially inserting KeyData in wrong order, potential GeometryData bug when bounding volume are not pre-computed, Stream.copy(File,File)
* JOGL2: better support and various fixes (GLCapabilities was not used, added missing mouse wheel events, fix TextField keys not working)
* Changes: rendering loop is starten by default in init(GLApi,SceneView)
* Cg: drop support
* Launcher dialog entirely rewritten (removed all crappy stuff) and now startable with ApplicationSettings.showDialog
* Various api and internal code clean-up, refactors (jouvieje.model.animation splitted in jouvieje.model and jouvieje.animation, light related code is now in jouvieje.light, animationUpdated->onAnimationChanged, hierarchyUpdated->onHierarchyUpdated, geometryUpdated->onVerticesChanged), JointData->JointMotion, Launcher and LauncherSettings merged into ApplicationSettings, IGLApplication->IApplication, GLSLShader/CGShader -> GlslShader/CgShader, IModelRenderer implementation is now ModelRenderer, IGL interface simplified

Viewer
* All ui now uses 3d ui api, new panels for animation graph/track and morph target, async file browsing, loading indicator and other various misc changes
* Now running on android ! (phone but best on tablets devices). User experience is to be improved with bigger widgets for big fingers ...

Editor
* All ui now uses 3d ui api except history which is still using swing (but not for long !)
* Automatic project upgrade to new version, compatibility xml reader for older version (and basic tool ConvertXmlTo1_3_3 to convert them)

Website/Distrib
* Web site is now running on a new host, fix forum register, now on twitter
* New youtube channel, new videos (listed in screenshot section)
* Applets now works on mac (some still need to be updated on the website)
* Distrib: fix possible files corrupted/wrong size (bug in Stream.copy), upgraded to JOGL 2.0 RC-3 and LWJGL 2.8.1

1.2.1 build 2011-06-27

Engine
* Retarget: huge enhancements !
* DAE: fixes very rare cases when node with animation was not added
* FBX: fix rare exception with fbx, better support for animation
* Skeleton: fix sharing animation state with multiple instance
* Shader generator: support up to 4 lights (lighting replaced by light0), various fix to lighting algo, toon shading constants exposed (uniforms: toonTresholds, toonFactors)
* Optimizer: improvements to skeleton keyframe optimization
* Widget: fix rendering with multiple hierarchical clipping/scissoring, Menu triggering two times events, added MenuPopup
* VolumeManipulator: now support orthographic manipulation, slight api refactor (Projection instead of PespectiveProjection)

Viewer
* Add ScrollPane on right panels, new options in menu, shader generator panel updated

Editor
* Fix asset dir rename, fix asset move result in bad instances, fix history freezing editor, fix new project creation issues, fix picking when using clip plane
* Object manipulator: new shortcuts G/R/S to translate/rotate/scale [X/Y/Z to limit on an axis], enhanced
* Improved start-up time, reduce flickering of asset tree
* Add ScrollPane on right panels, log panel is now on left panel, fix menu radio button, added popup to rotation to edit value with euler angles and instance name, added popup in asset preview, moved some dialog window to ui api
* Camera: orthographic view supported, camera keys changed
* Retarget: added preview

Website
* Fix java web start apps
* Forum account recovery now possible

1.2.1 build 2011-05-20

Engine
* JointNameRenderer: change api, improve text rendering quality (pixel perfect)
* Widget: added ScrollPane.ensureVisible

Editor
* Fix: esc key asking for exiting when manipulator is editing, world combobox selecting wrong world on project open, fix model import dialog sometimes not closing
* Motion retarget tool in progress (editor working but not saved within the project yet)

1.2.1 build 2011-05-17

Engine
* DAE/FBX: fix bone connection which result to bad animation, occures when the skeleton is described in multiple parts, fix root skeleton node not animated
* DAE: fix sometimes wrong scaling, fix mesh naming, fix exception when geometry has multiple uv, transparency support upgraded to lastest collada spec (1.5.0), "multiple skin controller with multiple matrix" is now properly implemented, fix other issues for good stability
* FBX: fix texture extraction not assigned to model (regression), fix exception with motion with one key with latest fbx version
* BoundingVolume: model with skeleton only now return the skeleton bounding volume instead of null, first wrong bounding volume at first animation frame
* Optimizer: some improvements
* Renderer: fix not automatically updating tangent space if computed after rendering, picking renderer invisible material are no more rendered/pickable, fix shader not used is model.asset.shaders was null
* SkeletonRenderer moved in RenderMode.Bone,Joints,JointsOrient
* SkeletonRenderer2 renamed to JointNameRenderer, fix joint name size on screen not constant/identical with all projection
* Volume manipulator: fitToFrustum new parameters
* Widget: changes with autoPack to allow widget size reduction (can only grow before), autoPack is now autoPackWidth/autoPackHeight, CheckBox: regression click on additional widget not changing the state of the CheckButton, ComboBox: fix (popup) sizing

Viewer
* Default look and feel now uses system theme (use command line option to use old look and feel)
* Added heightmap and other options in model import

Editor
* Default look and feel now uses system theme (use command line option to use old look and feel)
* Fix asset re-import, fix preview/gallery (events and not showing on model/motion import), enhancement import of missing texture, fix problem with import fbx with embedded texture
* Preview: fix ESC key not working, gallery key/mouse events, menu items, clip plane panel not enabled
* Fix world create: instance not rendered

Distribution/Website
* Fix "SHA1 digest error for" due to the use of pack200
 * New screenshots of latest viewer and editor tools

1.2.1 build 2011-05-05

Engine
* Motion retarget: improved bone twist retarget, retarget algorithm is faster, computation can be dispatch on multiple thread (if ModelEngine.setInternalThread is set)
* Optimizer: compression of animation keys is faster
* Fix WorkerDispatcher slowly dispatching tasks
* PSD: fix exception with non compressed psd
* MD3: fix weapon not loading
* Writer: fix 'remove unload map' optimizer param removing all maps
* Updated to jogl/jogamp 2.0-RC2
* Ui: fix Menu listeners and enable/visible state; minor fix to events and other layout issues; improve rendering performance; auto-unfocus; fix TextField drag selection with mouse; fix ScrollPane sometimes not updated
* Font: interface changes for rendering multiple text in single batch

Viewer
* Shader generator dialog, light editor and menu ported to ui/widgets
* Re-design of the viewer ui
* Fix model export not reloading animations when separated

Editor
* Menu ported to ui/widgets, fix project open
* Re-design of the editor ui

Tutorials
* Updated AnimationRetarget tutorial with a Slider
* Fix android demo and renamed to BonzaiEngineActivity[2], edited forum tutorial
* Fix online tutorials not loading assets

1.2.1 build 2011-04-23

Engine:
* Collada: fix instance positioning with multiple instances
* Added ModelEngine.is/setReaderDaeFixBadsidedNormals (default false) to solve the orientation of the normal when pointing to wrong side of the face
(this could eventually be applied to other format)
* Font: uniformization with ui sprite (will be possible to add the font texture in the ui packed texture)
* ScrollPane: fix regression scroll bars sometimes not hidden; RadioButton: fix regression not packed; ComboBox: fix popup bad size and enhanced with setFitToContents; TextField: auto-scroll if all text is outside; Slider: enhancements; CheckButton: click now allowed only with button 1
* UI: added addDialog, usage is to manage more easily blocking dialog over ui (non blocking can easily be added in ui contents), added ColorArea and Slider2 (Slider with a TextField)
* Layout: fix resolution which cause widgets going over background border
* ScrollPane: fix layout contents fill area width or height, fix contents with anchor on top, better caching

Viewer/Editor:
* Popups (JOptionPane) and material dialog are new using new ui api

Distribution:
* Font moved in the jar bonzaiengine-widget.jar
* Added bonzaiengine-bindings which contains support for old opengl api: gl4java, jogl 1 and jogl jsr231

1.2.1 build 2011-04-15

Engine
* kmz: google earth kmz model support added
* Optimizer: fix a serious bug which can break the model (mostly occure with dae and kmz models)
* Fix regression to BufferPool which could result to exception in loading or rendering related code
* ScrollPane: allow to fit the contents to the width and/or height of the ScrollPane using contents constraint fillWidth / fillHeight
* Ui: Menu enhancement, layout fixes, small rendering performance improvements
* Jogl2 support: fix exception in SpriteRenderer.glScale9, fix when using jogl2 and ApplicationGui
* Offscreen: added Launcher.createOffscreen
* 3ds: optionally read light and camera properties

1.2.1 build 2011-04-14

Engine:
* Panel: fix/improved location/size when panel has no layout
* Menu: navigation with keys, enhancements
* Slightly reduce number of classes
 * Added Offscreen_lwjgl and Offscreen_jogl2 for offscreen rendering (see associate tutorial)

Viewer:
* Model importer dialog, texture editor panel and animation slider now implemented with ui/widget (instead of swing)

Editor:
* Fix possible exception when saving
* Model importer dialog and texture editor panel now implemented with ui/widget (instead of swing)

Tutorial:
* Added OffscreenRendering tutorial

1.2.1 build 2011-04-07

EDIT(2011-04-08): The link to tutorial download is fixed

Engine
* Renderer: fix loosing normal/lighting if picking renderer was used before the regulard rendering of a mesh with no texture.
* Noticeable memory optimization to reduce gc (mainly focused on widgets)
* UI: first optimizations to reduce number of batches (more to come next)
* Widget: focus support added, Menu added, better caching of states, minor fixes
* Theme updated
* Font: improve caching and renamed to BmfFont / SdFont
* Viewport: remove collideWith, added intersectWith

Tool
* ThemePacker: now available in bonzaiengine-tool.jar

Tutorials
* UiWidgetTutorial updated

Website
* New bullet proof newsletter mail sender to ensure previous newsletter problem never occure again

1.2.1 build 2011-04-01

This is a major release for the UI/Widget api, new initialization usage is (see tutorials for more):

Engine
* Widget: api changes to support widget theme and xml support for theme description
two themes available with optimized textures packed and description in xml (one theme is a third party theme based on http://nifty-gui.lessvoid.com/)
* Widget: added ScrollPane, List and CheckButton; removed Choice, PictureBox and SelectButton; renamed ListSelection to ComboBox
* Widget: Layout orientation is now an enum, misc fixes and enhancements (events, popup ...)
* Slider: added button to scroll with auto-hide if scroll area is too small, allow to always hide button with setUseAdjustableButton, support for vertical or horizontal orientation
* ComboBox: popup menu to select and browse more easily options
* UI: update is now controled with UI.update (event processing and time based 'animation'), mouse event have same coordinate than widget (y flip no more needed)
* Anchor: added LineLeft, LineCenter and LineRight to align text on bottom of the line
* Font: asynchronous loading and integration with AssetManager, allow to force font alpha transparency, depth test state is no more changed

Viewer/Editor
* Uses the latest widgets and theme for a better ui.

Website
* Fix jnlp broken recently due to a server side problem
* Update forum documentation section and sticky topics with latest api

Distrib
* Added missing shader generation to the javadoc
* Added missing asset to tutorial binaries distrib, fix/update script

1.2.1 build 2011-03-15

AssetManager.textures is now required to set before loading the model.

Engine
* AssetManager.assign* removed (no more needed)
* MaterialUtil and TransformUtil merged to ModelUtil, Analyser removed, ITimer removed/replaced with TimerSystem
* Fix bounding volume computation not thread safe
* Texture writer: fix when cubemap is saved to dds / tex.
* Ase: fix regression not reading some texture
* AsyncLoader: fix shader sometimes not sync'ed
* Shader: changes on the refraction shader
* TimerSystem: support for very high framerate

Viewer
* Fix shader editor not opening

Editor
* Fix tree collapsing
* Number of background worker function of available cpus

Tutorials
* Lot of code clean-up, improved skeletal animation tutorials (retarget and builder), updated online tutorial applet
Retarget is still in early development, it will be improved in quality and speed.

Distrib
* Reduce bonzaiengine-graphic.jar by removing gl4java and jogl 1.x (old libraries) support.
The engine still support them, contact me if you need binary including them.

1.2.1 build 2011-03-08

Engine
* AssetManager: fix null pointer when no model/motion library was set
* AssetManager: api extended mostly for easier async loading (readTexturesAsync, setReadTextureAsync)
* Texture: fix texture loading broken
* Stream: copy maintains src timestamp (last modified)
* GLApplet is no more final
* Xml: fix loading not restoring instance duplication
* ModelInstance: fix bounding box not updated for instance duplicated
* Texture writer: fix temporary file not deleted

Editor
* Fix instance stop loading when animation was pause (with shortcut key A)
* Fix saving not working after restoring a version (from history and on start-up)
* Fix black screen with undo/redo when editing spline

Tutorials
* Fix some tutorial not working
* Tutorial: simplification and asynchronous loading to various tutorial

Distrib
* New java based build system (multithread/faster, strong error check/safer)
* Remove shared-datas.jar, reduce tool (viewer/editor) jar size
* Better tutorial distrib (installer and jogl included, fixes, added missing assets

1.2.1 build 2011-03-02

Engine
* Added bounding volume option to request non culled object volume
* Picking: fix very close element not pickable
* Picking: added pick*** helpers to World and Model to automatically analyse the name stack (and simply picking events code).
* Widget: fix enable state propagation, TextField added delayEvents (default false), TabPane fix implementation resulting to duplicating events
* ModelInstance: moved in jouvieje.model package (in bonzaiengine-model.jar)
* Spline related: moved to jouvieje.spline package (in bonzaiengine-model.jar)
* Spline now implements IBoundable, ControlPoint remove duplicated storage of position (position is in the Transform)
* Xml: added XmlWorlds, world.xml now contains a list of XmlWorld (instead of only one before)

Editor
* Multiple world per project now supported (sharing the same assets). Project version upgrade with automatic upgrade.
* Various spline preview enhancements (hide selection, key auto-slide, ) and fixes (edit with instance, time edition)
* Auto adjust edition tool size to keep constant size on screen
* Added clip plane panel (for easier edition of closed level)
* Fix repository indexation bug, fix undo not applied to spline, fix history panel current/previous highlights, clear history button added
* Misc ui changes, auto hide panel if not use, various fixes

Tutorial
* Fix tutorial not working regression and update ModelSelection using pick helpers

1.2.1 build 2011-02-21

Engine
* Scene: refactor with introduction of SceneView (and SceneMultiView).
Requiered changes (see tutorials)
extends Scene implements ISceneViewRenderable
Override reshape (see tutorial)
init: getMainSceneView().setRenderable(this);
render: render(IGLApi,SceneView) and remove super.render(glApi) call
before glClear: sceneView.setViewportAndPerspective (or equivalent)
* Picking: really fix now picking ordering (previous fix was bad)
* Widget: added TabbedPane, RadioButton, Layout fixes
* Widget: new exposes getViewport to easily synchronized a SceneView over the widget viewport (it can be handy to use widget layout to layout multiple viewport or handle automatic resize), theme can now be applied after check box creation

Editor
* Instance panel moved to new ui api.
* Gallery browsing mode to preview multiple model on screen
* Spline preview with camera
 * Misc ui improvements

Gallery3D
* Updated the distribution to fix build script

Tutorials
* Upgrated to the latest api changes

1.2.1 build 2011-02-12

Engine
* Optimizer: huge memory reduction of skeletal animation
* Task: added dependency to ensure the task is processed after all of its dependend tasks.
* Async: fix volatile field inadvertly using transient instead.
* Fix key/mouse input when focus lost/gained
* Model.set/isAutoNormalize removed (this is now handled by the engine).
* Widget: TextField mouse scroll fix, added focus listenener, location is relative to parent, added location anchor, enable state is now propagated, added GridLayout (similar/simplified version of awt's GridBagLayout) and LinearLayout (vertical or horizontal), simplification of ListSelection/Choice/CheckBox using layout, added Label anchor and textAnchor, added Widget constraint and insets, Widget.set/getSize is the preferred size of the widget, Widget.set/getAreaSize is the actual size for the rendering (size after layout resolution) ...
* Xml: added support for reading ui/widget from an xml file (ui.xml), see tutorials.
* SpriteTexture: now allow asynchronous loading, similarly to Model Map.
* ModelTextureList merged with TextureList and AssetManager.
* Picking: Fix picking depth ordering, ViewHelper.beginOrtho now support picking

Tutorials
* UI/Widget: tutorial using layouts and ui construction from xml

Viewer
* Fix Open not working

Editor
* Huge improvement to object manipulator !
* Fix project not saved to version 8, misc ui enhancements
* Fix spline not loaded, fix spline tangent edition
* Fix jws missing jar
* Ui: portion of the swing ui is porting using the new ui api of the engine.

Gallery3D
* Now integrated in the build: is distributed from now.

Distrib
* Installer now preserve timestamp for extraction

1.2.1 build 2011-01-21

Engine
* Worker refactor: Worker->IWorker, RunnableQueue->WorkerQueue, RunnalbeDispatcher->WorkerDispatcher
* Task: Task.getResult->Task.get, added Task.peek
* Added TaskQueue: easily control the completion of a specific set of tasks
* Added ModelWriterSettings.addStreamOpenListener to track file written, IStreamOpenListener->IStreamAccessListener
* Added ModelEngine.setInternalWorker.
This is currently used by TextureWriter to dispatch all asynchronous work (asynchronous texture writing) to existing Worker.
This avoid new Thread creation and exponentiel number of thread running at the same time when multiple models are written.

* Moved AsyncModel/AsyncLoader in jouvieje.model.async, added AsyncMotion (which is similar to AsyncModel)
* Readers: uniformisation of animation name
* ModelReaderSettings now extends ReaderSettings (so modelStream is now stream), added optional modelId
* JMF/JMA: fix parsing when Model.childs is not empty (no need for rebuild), fix possible exception writing morphing
* Optimizer: rare bug loosing texture
* Widget: added Slider, added focus listener
* World: small clean in the api
 * Xml: fix write/parse model.xml (XmlModelLibrary)

Asset Repository
* New functionalities: rename asset directory, async export and clean
* Model/Motion id are now without extension
* Fixes motions import

Editor
* Automatic project upgrade to version 8
* More options in asset tree
* Added motion preview
* Small ui improvements, fixes in world tree

Tutorials
* Added basic AssetRepository tutorials, updated Android tutorial

1.1.3 build 2011-01-10

Engine
* TEX: improved for faster loading (rebuild your tex file to get advantage of this)
* Added TaskState.Queued, Worker.queue is now specialized to Task
* AnimationSkeleton renamed to Motion
* FBX: fix not using ModelReaderSettings.prependTexturePath
* Android: added support for png, bmp, gif and jpg
* Skinning: skeletal animation retarget huge improvements (usefull to retarget bvh animation).
* Fixes for the stable release

Tutorial
* AnimationRetarget tutorial

Asset Repository
* All operations are asynchronous
* Added support for motion asset

Editor
* Use new features of asset repository
* Improve asset tree for faster importation (+ fixes)

Note: this changes are available in stable 1.2.0 release

1.1.3 build 2010-12-26

Engine
* JMF/JAF/JLF/JMA: the format has been updated to be forward compatible. This means any files created from this build will be compatible with any newer version.
* LZMA: fix input stream available bug
* BVH: Fixes
* Support for concave polygons (all format using polygons), but not concave polygon with internal hole or self intersection edges.
* Fix normal computation for smooth group mode when smoothing is off (obj).
* Optimizer: reduce pre-computed bounding volume memory usage (used with skinned models).
* Skinning: improve Skeleton.merge
* Skinning: improve caching of bounding volumes and fix SkinData.computeBoundingVolume when called after loading
* Fix AnimationCutter
* Fix ModelReaderSettings javadoc of octree fields. octreeMaxSubdivisions must be specified.

Tutorals
* Added AnimationBuilder tutorial

Distribution
* New self installer and jar renaming, see faq

1.1.3 build 2010-12-13

Engine
* BVH: Added support for bvh format !
* Model.animations and Skeleton.jointDatas are private for safer manipulation.
* jouvieje.math classes are serializable
* Increase reader smooth group limit to 64, instead of 32.

* JMF/JAF/JMA: Fix writing corrupted KeyFrame datas (occures if model is not optimized or with keyframe or morph animation)
* JMF/JAF/JMA: Fix writing Transform
* Texture writer: fix writing bad format/extension if texture is referenced by a different extension.

1.1.3 build 2010-12-10

Engine
!* Fix rendering artifacts with skinning
* FBX: compatibility for old fbx version 5 (static model only)
* FBX: lot of fixes and on fbx version 6/7 animation support
* FBX: support for embed texture in the fbx file: extraction and read from memory. By default, embed texture are read from memory, they can be extracted using ModelEngine.get().setFbxExtractTexture.
* FBX: support for fbx with only a skeleton and animation (usually from mocap)

1.1.3 build 2010-12-07

Engine
* FBX: fix hierarchy
* FBX: support rotation (orientation)
* FBX: support skeleton and skeleton animation
* FBX: smooth group support

1.1.3 build 2010-12-02

Engine
* FBX parser in progress: support for static geometry, material and lighting (!)
(support for animation and skinning in good progress)
* JMA/JMF/JAF/JLF: the formats are now controlled by the api (don't rely on java serialization) and loads faster. The format will possibly ensure forward/backward compatibility in the future (not yet available).
* Introduction of AsyncModel for easiest asynchroneous loading management with multiple models
* ModelLibrary now contains a map of <ModelReaderSettings,AsyncModel>
* Added Mesh.linkToJoint to link a static mesh to a skeleton joint
* Optimizer: meshes using only joint are optimized to use Mesh.linkToJoint (to avoid unecessary skin), optimize transform
* Shader: fix per pixel lighting with directional/spot lights
* Light: added LightManager and LightRenderer
* Skinning: added Biped utility
* Improvements on the polar decomposition
* Added Billboard utility
* DebugOutput replaced by Log
* JOGL binding updated to build 242

Asset Repository
* A tool to manage and build model/texture/animation assets. It is now used internally by the World Editor.

Viewer
* Show joint names (still work to do to adjust font size depending on the model)
* Fix shader viewer regressions
* Changes on the UI: model import panel and light panel

Editor
* Now uses the Asset Repository tool to manage models
* All loading are now asynchroneous (Important internal changes to use the latest api changes)
* Automatic project update to new version
* Huge loading speed improvements

Gallery3D
* UI in preparation

Tutorials
* Updated to lastest api

1.1.3 build 2010-10-19

Refactor
* org.jouvieje => jouvieje to shorten packages
* org.jouvieje.view => jouvieje.camera
* org.jouvieje.application*** -> jouvieje.app
* org.jouvieje.widget -> jouvieje.ui.widget
* org.jouvieje.widget.Container -> jouvieje.ui.widget.Panel
* lookAt -> getLookAt

Engine
* JMF/JMA format changed
* DAE: support for library_nodes/instance_node tag, support for dae with bad vertex data count
* Added ability to split skeleton animation (usefull for MS3D/DAE/Collada models, see forum tutorials 15).
* Fix AnimationCutter.removeAnimation(s)
* Added JAF format to store skeleton animation separately of the model
* Fix optimizer exception when internal bone are not used.
* Reader: Fix smooth angle not used with smoothing groups (BTW smooth angle is in radians).
* ModelReaderSettings: now uses Stream instead of String (modelFolder and modelName are now modelStream, ...)
* Fix reverse animation: support for negative speed / times
* Huge rework on UI/Widget: events are now process inside the gl thread, easier way to managed component events with multiple screen using UI.setContents, first step for optimizing widget rendering, added TexturePacker
* Rework on the app package for better application/applet abstraction (viewer/editor are now available as applet)
* Update to build b187 of JOGL2 from jogamp.org
(CG support removed, package refactor)

Tutorials
* Added tutorial 15 to show how to split MS3D/DAE animations. This can be used to split any other model format with a single skeleton animation.
* Fixed move a camera

Viewer
* Added smooth angle option in importer panel (angle in degree in the input field)

Editor
* Fix repository index corruption (+ auto-fix when it has been corrupted)
* Project updated to version 5 to update model.xml file format

Other
* Huge change to the build system for an better distribution and uniformity between offical and dev-releases.
* New web site: will keep me busy, I'll hire a company for the logo but if someone has a great design I would love to buy him.

1.1.3 build 2010-09-24

Model Engine
* LWO: Added support for normal smooth angle treshold (to conserve sharp edges with smoothing normals).
* Height map to normal map: fix Y inversion (?)
* DAE: support for multiple skin controller
* Skeleton: added joint name info
JMF/JMA format is compatible with previous build.
* Optimizer: remove unused joint (some exported export too many joints).
* Added ModelReaderSettings.lightingSmoothAngle (angle in radians) used with LightingModel.Default,SmoothAngle,SmoothGroupAndAngle
* LightingMode: added SmoothAngle, SmoothGroupAndAngle and Default.
It is recommended to use LightingMode.Default, the proper mode will be choosed be the model reader.
* Fix texture writer with possible null pointer exception (when a Map has a null name).
* New texture format (TEX extension) which is a DDS like format with optional LZMA and encryption support (read/write support).
Format design is final and independent of runtime classes with full forward and backward compatibility.
* TEX encrypted loading: temporary way to provide the encryption key with a callback registered in ModelEngine instance

Graphic Engine
* Fix regression texture loaded as a 1x1 texture, disable texture size check
* DDS: support for writing uncompressed byte textures and better support for reading non-compressed DDS
* DDS: fix compression for texture size not multiple of 4
* DDS: fix saved flipped in some cases

Android
* More control on the GLSurfaceView

Model Viewer
* Fix bad init in very rare cases
* Update export and skeleton panels
* On save: close current model and load saved model

Gallery 3D
* GUI in progress !

Third Party
* Fix LZMA input stream support

1.1.3 build 2010-09-18

Model Engine
* Performance regression since last build when texture was not found
* Animation: format changed for a HUGE cpu memory usage improvement for skinning informations.
* Optimizer: added animation compression (non-destructive enabled by default, and destructive compression not enabled by default).
* Renderer: improve hardware skinning data sharing (instanciation use a very low amount of extra memory now)
* GeometryData are now cullable, api clean up
* Renderer: improvements to reduce gc
* Regression: fix bad TBN vectors
* Shader: added hardware skinning support for tangent/binormal vectors, fix normal mapping with hw skin
* Shader: fix when using cube map
* Added ModelWriterSettings.optimizeParam to optimize the model with Optimizer.optimize
* Heightmap: added embed octree partitioning. heightmapOctreeMaxFaces will split the heightmap in sectors containing the maximum number of faces specified (more efficient in term of temporary memory than usual octree partitioning).
* Heightmap: reduce temporary memory while reading
* Texture: improve loading
* Writer: optional texture analysis to improve storage and convert to a specified format (dds,tga,psd,png,...). Use ModelWriterSettings.setTextureWriterOptions to enable texturing optimization.
* Xml: save texture compression swizzling

Graphic Engine
* TextureReader has now a pluggable API to add remove texture format.
* TextureReader refactored to TextureIO with write support (pluggable), with by default awt/tga/psd/dds writers
* TextureLoader: 2D and cubemap textures are now abstracted
* Support for floating point texture, with fallback to byte if not supported by the gpu.
* Refactor on ITexture implementation with now TextureByte and TextureFloat, with an extended interface to be able to hold a cubemap in a single ITexture.
* Various fixes on Tga/Psd/Dds support
* DDS swizzling (DXT5/ATI2) support: auto detected and support for compression and decompression.
* DDS cubemap compressed/uncompressed and 16/32 bits float uncompresed texture support
* Fix 3Dc read and load (with better extension check)
* Speed improvements to DDS converter
* Importent speed improvements to TGA writer compression
* TextureUtilsAwt new convert in grayscale if only one non alpha channel.
* Fix hardware mipmap generation
* No more dependency to GLU: mipmap was generally poorly supported OpenGL api (not efficient, high memory usage) or not supported at all. Mipmap generation on CPU (used if GPU don't support it) are now efficient and also now supported on Android.
* Texture loading: now check maximum size supported by hardware
* Better ICullableNode interface
* Transform: internal implementation changed for smaller memory usage inside the JVM
* Math: reduce source code size by refactoring: VectorXf->VecX, VectorXi->VecXi, Quaternion4f->Quat, Matrix16f->Mat4x4

Android
* Added smaller distribution (520ko instead of 740ko) without model readers/writers, JMF/JMA readers are included.
This is great if you convert your models to JMF

Model Viewer
* Now uses the same texture editor than the World Editor
* Fix UV preview not showing
* Fix LZMA button not working on export panel
* Added texture options to export panels

World Editor
* Fix opening when no project was passed to command line
* Fix history undo/redo not updated in the gui
* Auto switch to editor after instanciation
* Sort tree by name
* Model preview: navigation interface (and key shortcuts)
* Added swizzling in texture editor
* Other fix and improvements

Forum
* Better documentation
* Tutorial 14 added

1.1.3 build 2010-08-29

Model Engine
* JMF/JMA: fix skin bounding box not updated
* JMF/JMA: fix bad loading of serialized md3 models
* JMA: fix not writing texture
* Fixes and improvements to the Heightmap reader (was quite bad):
* Fix exception loading from greyscale images
* Reduce highly memory usage during heightmap loading (less out of memory for big heightmap)
* heightmapScale is now heightmapGridWidth/Depth for rectangular grid

World Engine
* Fix ModelInstance.update not working

Graphic Engine
* Fix reading image with short data

Model Viewer
* Fix reload window location/size
* Misc gui fixes

1.1.3 build 2010-08-28

Model Engine
* Renderer now automatically updates when new textures are loaded (so hack removed from async tutorial)
* Fix ModelReaderSettings.equals
* Remove DisplayListRenderer, use VertexArrayRenderer or VBORenderer instead
* Collada/Dae: huge regression from last build
* Collada/Dae: fix "No face" exception when collada models are exported with some empty meshes.
* Fixed HW skinning

Graphic Engine
* Fix TextureList.loadTextures infinite loop
* Stream: implements closeable (open/closeStream renamed to open/close)
* Stream: added openOut for opening OutputStream (ie writting). Protocol available are same than for reading, except classpath/http/https/ftp writting is not supported.
* Tree: more functionalities
* Removed ErrorOutput/ErrorLevel
* Added ComponentWrapper equals/hashCode (was breaking so events)

World Editor
* Automatic tool to fix version control.
* New xml project format (automatic project update), which reduce size and number of files on disc.
* Repository now support tree: work on multiple versions (branch) of the project and new history view (tree)
* Improve start-up
* Fix snapshots not moved into commit dir (automatic project update)
* Fix sometimes not loading history, and bad undo/redo menu state
* Fix texture not used when undo/redo
* Fix model import exception and model re-import not importing textures.
* Fix some synchro with the transform editor of the instance
* Fix restoration not loading models if not instanced
* Fix focus over 3D

1.1.3 build 2010-08-23

Model Engine
 * LWO: fix of bad uv finished (was starten in 22-08-2010 build)
 * MS3D: Fix skeleton due to bad joint orientation
 * Improve async texture loading by sorting texture with priority (diffuse highest priority)
 * CPU skinning: tangents are now skinned.
 * Renderer: Fix tangents not used.
 * Renderer/Shader: fix always using blending when an opacity map was specified but not used by the shader.
 * Material: transparency is now private, use set/get

Model Viewer
 * Shader config: fix Specular/Reflection/Refraction buttons inverted
 * Minor gui improvements

1.1.3 build 2010-08-22

Model Engine
* Collada: fix possible array index out of bounds exception with some models and xml parser.
* LWO: fix UV with some models (other fix in progress)
* OBJ/MTL: support for duplicated materials in mtl file
* MS3D: fix when model is partially skinned
* MS3D: skeleton ignored if only one bone and zero or one keys.
* Regression: exception while rendering transparent.
* ModelReaderSettings: 'boolean appendTexturePath' change to 'String prependTexturePath'

Graphic Engine
* Finder.find: fix lossing location during search

Model Viewer
* Fix editing vertex data
* Minor gui/diaglo improvements

World Editor
* Now support missing/removed assets from the project, the tool will ask you to re-import or to delete them at next project open.
* Added re-import model, which allow to change or re-import an upgraded version of the model
* Safe rename model/instance
* Fix asset relative path no used for textures. An automatic project updater will fix that for you !
* Fix version control info inadvertly refering instance instead of model
* Model import faster (using menu/popup): texture are now loaded asynchroneously after import.
* Key 0-7 (camera control) are now global (was only active in the 3D component before)
* Fix bad synchronization between manipulator and instance box after moving the instance

Tutorials
* Updated tutorials header and provide LoadAModel that runs outside the tutorial selector (LoadAModelStandalone)

1.1.3 build 2010-08-18

Model Engine
* Shader generator: added specular map support
* Renderer: now count number of indices instead of faces
* Noticeable memory improvements to reduce GC
* Possibly some slight perf improvement due too small improvements
* JMF/JMA format changed due to the new features underneath
* JMA: ModelWriterSettings.'compressed' field added (default is true) to specify JmaWriter zip compression (smaller vs highest compression).
* JMA: removed support for author/email/site in JMA format (no real use).
* JMF/JMA: encryption support (specified with ModelWriterSettings.encryptionKey)
* JMF/JMA: lzma compression support (specified with ModelWriterSettings.useLzmaCompression).
LZMA compression is done thanks to Christopher League and LZMA SDK, you must include the thrid party jar named lzma-out.jar in your classpath to use this feature
LZMA is decompressed thanks to pzip, you must include lzma.jar to use this feature. This is an identical jar than LWJGL distribution.

Graphic Engine
* Better compatibility with xerces (all XML reader)
* Widgets: Fix mouseEnter/mouseExit called to many times when a widget is added to a Container (more thing to clean-up when I got time to review/continue the widget code)

Model Viewer
* Updated export dialog with new options

Shader Editor
* Fix not opening

World Editor
* Model preview with double click on model tree
* Embed model viewer: fix not opening
* Instance dialog: fix modifying the new instance with the previous instance properties
* Instance dialog integrate in the left panel
* History: fixes undo/redo
* Manipulator: rotation pivot is now the center of the selection
* Manipulator: improved zoom in/out
* Top right: cube shows front/right/back/left/top/bot orientation. Key 1 to 6 are respective shorcuts to select the faces. Key 0 is for perspective and 7 is to adjust the view to the window.

Misc
* Fix tutorial source not exported
* Added script to extract jar.pack.lzma in jar
* Updated online tutorial (sources available on the forum)
* Some update the the web pages of the project

1.1.3 build 2010-08-10

Model Engine
!* Material format changed: rebuild your JMF/JMA models
* GLSL Shader: fix on attribute/uniform, which could break shader rendering on some gpu/os (hw skinning was broken on a mac, potentially fix other issue too)
* Shader rendering: fix alpha test that was considered as blend (lost of z sorting)
* ASE: fix when ASE contains wrong material association (result was an exception while rendering)
* MD5: fix when no animation (md5anim) is loaded but animated was specified (exception while updating the model)
* DAE/Collada: fix exception when polygons has more than 3 edges (ie quad and above)
* DAE/Collada: add support for specular maps
* LWO: fix specular and normal map assigned to diffuse (copy/paste bug ...)
* LWO: misc fices
* LWO: first support for planar and cylindrical texture coordinates generation
* OBJ: add support for specular maps
* XML: now read/write TextureParam.alphaTestThreshold and new/missing ModelReaderSettings fields
* Added ModelReaderSettings.useDiffuseAlpha,forceAlphaTest

Graphic Engine
* TextField: caret selection support (with mouse and keyboard)
* TextField: ctrl+c/v/x/a support
* QuestionYesNo refactored to Choice

Model Viewer
* Added a file system browser (Ctrl+Shift+O) to open quickly models, with the ability to filter with pattern like *.3ds
* Lang support, included default french and english translation. You can now translate the tool in your own langage !
* Settings are now save/loaded
* Shortcut changed with more usual keys
* New options on some dialogs/panels
* Texture/Uv preview improved
* Map panel improved
* Internal design changed to follows World Editor tool.

Shader Editor
* Lang support

Tutorials
* All tutorials are 'merged' in a tutorial selector
* Old tutorial applets has been upgraded with the new tutorial selector and a better applet launcher

1.1.3 build 2010-07-29

There was a huge changes and fixes on the math lib. Please check this changelog and the javadoc.

Model Engine
!* Model format changed due to math lib refactor and animation improvements.
Rebuild your JMF/JMA models.
* Added X3D reader
* DAE: better support of animation due to math lib and skinning improvements
* MS3D: fix normal not generated on some meshes, fix no face exception
* LWO: multiple fixes (but still some work to do, if people need better support just ask)
* Skinning: better interpolation which make animations with a small number of keys usable (and recommended to decrease memory usage)
* Skinning: remove storage of absolute Transform for each key to reduce memory usage (you can still request them if needed).
Absolute matrices are available/exposed for the current interpolated skeleton.
* Transform: moved to graphic engine
* Fix MemoryUtil.memoryUsage counting twice vertex and face informations !

Graphic Engine
* XML parsing: fix on Android device
* Finder: fix set adding duplicate folders
* Fix GZ/LZMA protocols
* Matrix16f: equals/hashCode/toString
* Matrix16f.gluLookAt: better precision and less temporary allocation
* Matrix16f: fix setGLRotate, setXRotate, setZRotate
* Matrix16f: refactor and clean-up
* Quaternion4f: fix fromMatrix, createMatrix, fromLookAtMatrix, createLookAtMatrix, fromEulerAngles
* Quaternion4f: improve rotate (vector)
* Quaternion4f: add createSpherical/fromSpherical, [set/get]AnglesZYX
* Quaternion4f: rename from/create to set/get, getLookAt[Left,Up,Forward] by getAxis[X,Y,Z], rename EulerAngles to AnglesXYZ
* Transform: removed storage of backed matrix to reduce runtime memory
* Transform: extended for compatibility with polar decomposition (to convert any general matrices in a transform object without any conversion loose).
* Transform: from/create rename to set/get
* PitchYawRoll: removed due to poor implementation. Quaternion or Matrix offer proper way.

* ViewHelper: added gluUnProject

Model Viewer
* Better time synchronization between slide and animation
* Slight update to follow the new math improvements

1.1.3 build 2010-07-20

Model Engine
* JMF/JMA: now in ModelEngineCore.jar
Now you don't need ModelReader.jar if you're only uses this format (in the case for example you export all your models)
* Collada/DAE: now parse polygons tag
* Collada/DAE: fix missing texture association
* Collada/DAE: fix exception when mesh has no material
* Collada/DAE: fix node instanciation
* Collada/DAE: lot of fixes to animation and skinning code
* Collada/DAE: more skinning fix
* Skinning: bad caching, which could either compute too much cpu skinning computation (ie everytime) or not at all (if animation is empty)

Forum
* Forum moderation: move most topic in solved state.
When a topic is solved, only user who have already posted could add more replies. New poster should start a new topic.
If you experience some troubles, please tell me.

1.1.3 build 2010-07-18

Model Engine
* Fix ModelReaderSettings.clone (not copying streamOpenListeners, ...) and equals (not comparing streamOpenListeners, ...)
* MD5: internal change to parser

Graphic Engine
* TextureLoader/DDS: can now load compressed texture (dds) even if gpu does no support it
(texture will be uncompressed)
* Stream: protocols are externalized in Protocols with the ability to register/unregister any default protocol and implement your own protocols.
* Stream: ability to asynchronously control byte reading progression.
Input stream size is known most of the time (getInputStreamSize), but it could returns -1 ik not known.
* More featured FileTokenizer

World Editor
* Integrate an auto project updater to smoothly use the new xml format.
* Grid and axis display
* Improved spline selection
* Remove deprecated menu items (duplicated with the tree) and update the GUI
* Add history panel
* Lang: now reloaded from the settings xml, by default uses the locale (or english if not available). You can translate the editor in your own tongue by submitting traduction of the properties file (WorldEditor_xx.properties).
* Add always yes/no to dialog, and save/load to xml
* Object manipulator: press shift while scaling to do a uniform scale along the axis selected

Documentation
* All documentation updated
* All tutorial updated, with code preview (my first line of AJAX !)
* New forum features: code formater with SyntaxHighlighter, see the new java tag available

1.1.3 build 2010-07-10

! Fix bad jars (last dev-release)
! Fix missing javadoc

Model Engine
* Fix SplineRenderer exception (mostly occures with a spline with one point)

World Engine
* XmlWorld: fix not reloading animation information in some cases

Model Viewer
* Distribution now uses LWJGL

World Editor
* Distribution now uses LWJGL
* Fix not saving/erasing spline.xml
* Spline editor: tangent edition, fix crash
* Instance editor: change instanciation (from a different Model or ModelInstance) and select animation parameters
* Split divider location is now saved/reloaded

1.1.3 build 2010-07-08

Model Engine
* MD5: now support multiple contiguous spaces
* Texture/Shader: Better (efficient) way to manage texture/shader not found (or not loaded) and avoiding to load them too many times.
* BoundableManipulator move to GraphicEngine (and renamed to VolumeManipulator)
* Spline: implementation finished (see MoveAnInstance,MoveACamera)
* AssetManager: added SplineLibrary
* Added XmlSplineLibrary to read/write Spline in an xml format
* Uniformization of the api of ModelLibrary/TextureLibrary/SplineLibrary

Graphic Engine
* DDS: Fix DDS having too many mipmap levels resulting to an exception while loading to GPU
* DDS: Fix DDS block color extraction which could sometimes showing reg, green or blue pixel artifacts when converting to an ITexture or BufferedImage (bad understanding of the s3tc extension spec).
* XML: fix possible issue with xml
* Matrix16f: rename methods related to lookAt matrices to avoid confusion (ie getPosition to getLookAtPosition, ...)
* Matrix16f: add getLookAt(Quaternion4f q, Vector3f pos) to easily convert from lookAt matrice to Transform, and vice versa
* Added Shapes.drawSkybox

World Engine
* World: remove trajectory storage (now Spline stored in AssetManager)
* Added CameraSplineFollower (see MoveACamera tutorial)
* New SplineAnimator implementation (see MoveAnInstance tutorial)
* XmlWorld: instance animator write/read support

Model Viewer
* Light editor finished
* Fix sliders, improve color editor, ...

World Editor
* Update with the new Spline api
* Fix popup not showing on mac
* Lot of fixes, ...

Tutorials
* Added MoveACamera tutorial

1.1.3 build 2010-07-01

Model Engine
* Regression: bad TBN vector (fixed)
* Renderer: Fix material rendering with opacity map when using fixed pipeline.
* Renderer: Fix shader compilation when using the shader generator and an opacity map
* 3DS: fix exception when object don't have faces
* OBJ: added support for multiple smooth group. Must be enable with ModelEngine.get().readerObjMultiSmoothGroups
(could be the default in the future)
* Fix BoundableManipulator 'strafe'
* BoundableManipulator: ability to choose mouse combination to zoom,rotate,strafe
* Optimizer: added "Merge duplicated materials" (on by default) and "Remove unloaded texture" (off by default: usually texture are loaded after)
* MaterialUtil: added removeMapsNotLoaded, mergeDuplicatedMaterials
* ModelUtil: added splitByMeshes
* ModelReaderSettings: added addPathInTextureFinder which register model folder in AssetManager.TextureFinder (on by default, actual behavior)
* ModelReaderSettings: added appendTexturePath which will append texturePath to texture name (off by default).
* ShaderList rewritten. ShaderUtil remove (moved in ShaderList or Model/Mesh)
* TetureList and ShaderList new uses concurrent map (thread safe).

Graphic Engine
* DDS: Fix bugs and regressions (and possible crash)
* Optimization on Stream

Model Viewer
* Optimizer menu new options
* Light editor

World Editor
* Asset Popup: fix missing text
* Asset Popup: added export model library
* Repository: Fix project commit
* Project: Fix export producing wrong model.xml file

1.1.3 build 2010-06-27

Model Engine
* MD5: support for space in string

Graphic Engine
* Font: fix possible crash with LWJGL
* Font: draw function with clip area parameter
* Widget: origin (0,0) is now bottom left.
* Widget: TextField horizontal text scroll with caret.
* Finder: changes in the interface

1.1.3 build 2010-06-25

Model Engine
* LWO: fix null pointer (some texture feature was not supported)
* LWO: fix color out of [0,1] range
* Collada: fix transparency
* Collada: support for multiple input in vertices tag

Graphic Engine
* Font: API redesign (TextAlign renamed to Anchor)
* Font: fix text anchor and character espacement
* Widget: code clean up
* Widget: TextField improvements
* Widget: added QuestionYesNo widget
* Fix TextureUtils.flipHeight doing nothing
* Fix coloring badly restored with drawAxisSystem

Model Viewer
* Minor gui changes

1.1.3 build 2010-06-07

Model Engine
* Important memory improvement
* Optimize to improve load time
* Fix MemoryUtil
* API change on xml (see tutorials)
* API change on IModelRenderer: IGLApi is now specific in each function that requieres an OpenGL context, and it is now allowed to create the IModelRenderer object outside the OpenGL context (usefull if you load model/texture asynchroneously).
* UnifiedReader removed (use ModelEngine.get().read instead)
* MediaManager -> AssetManager, and externalized from Model class
* PostProcess merged with ModelReaderSettings
* Fix TBN renderer

Graphic Engine
* Fix xml writer
* Import clean-up on model.xml and world.xml packages.
* TextureList (api changed): texture reading and loading (to gpu) are now separated for asynchroneous model loading.
* TextureList: added texture reload
* Fix mouse drag which breaks picking
* Fix VSync with LWJGL
* Font: force pixel alignement (better quality) + remove duplicated code (BM / SD fonts)
* Widget label: can now specify font alignment
* Now compatible with last release of LWJGL (which uses exclusively direct ByteBuffer)

Tutorials
* Added AsyncModelLoading: asynchroneous model and texture loading.
* Fix widget color
* Update to API changes

Model Viewer
* Uses asynchroneous texture loading

World Editor
* Project oriented edition + internal data storage independent of the project location (and even to the os !, the project created under windows will run under linux and mac)
* World importer/exporter
* Undo History fixes: all modification can be atomically undo / redo
* Save History: all version of the project saved can be restored
* Save/Load project configuration: camera view, selection, gui, ...
* Local repository with versioning (will be used for team work features)
* Lang support by java property system. You can now translate the app by just translating a text file. Contact me if you're interested.
* Improve object manipulator
* Uses asynchroneous texture loading
* Huge internal code revamp

1.1.3 build 2010-03-29

Model Engine
* Collada: better compatibility with the different format of transparency (especially from Google Sketchup models).
* All xml reader uses io.XmlTagParser
* All xml writer uses io.XmlWriter (avoid dependency on DOM for platform compatibility purpose)

World Editor
* Remove due to some work in progress (see next changelog)

1.1.3 build 2010-03-28

Model Engine
* Moved SkeletonRenderer to renderer package
* Collada: better support of transparent modes, and bad exporters (like Google Sketchup which store transparency inverted).
* Collada: refactor to use XmlTagParser
* Fix bounding volume not updating properly for morph animation, improve its computation
* Fix transparent render mode when no material
* PickingRenderer: now possible to pick material

Graphic Engine
* Regression: fixed jogl2 newt window
* IGL: removed and deprecate some fields and methods (for better compatibility with OpenGL Es)
* Fix on projection matrice send (ProjectionPerspective / ProjectionOrthographic)
* Moved math.spline to math package
* Fix event modifier (which fix picking drag)

Graphic/Model Engine
* No more use of direct rendering (glBegin/glEnd). Only remaining reference to it is DirectModeRenderer, which may be deprecated in the future.

Model Viewer
* Improve rendering quality of huge models (move near plane).

Hide previous 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.