┌─────────────────────────────────────────────────────────────────────────────┐ │ ___ ___ _ _____ _ │ │ | \/ | | | | ___| (_) │ │ | . . |_ _ _ __| | | |__ _ __ __ _ _ _ __ ___ │ │ | |\/| | | | | '__| | | __| '_ \ / _` | | '_ \ / _ \ │ │ | | | | |_| | | | | | |__| | | | (_| | | | | | __/ │ │ \_| |_/\__,_|_| |_| \____/_| |_|\__`,|_|_| |_|\___| │ │ ____ _ __/ | │ │ / ___| |__ __ _ _ __ __ _ _|___/ | ___ __ _ │ │ | | | '_ \ / _` | '_ \ / _` |/ _ \ | | / _ \ / _` | │ │ | |___| | | | (_| | | | | (_| | __/ | |__| (_) | (_| | │ │ \____|_| |_|\__,_|_| |_|\__, |\___| |_____\___/ \__, | │ │ |___/ |___/ │ └─────────────────────────────────────────────────────────────────────────────┘ Visit bugs.murlengine.com for issue details. Issue numbers shown in brackets. Version 2023.2b Build 9623 Improvements / Bug Fixes - (545) Shadow FrameBufferTexture not working on Adreno GPU Family (fix will only be applied on Android) Version 2023.2a Build 9596 Improvements / Bug Fixes - (545) Shadow FrameBufferTexture not working on Adreno GPU Family - (544) Bad #ifdef - (549) resource_converter generates different output than werkbank - (548) resource_converter RemoveMeshAttributes no output - (546) resource_converter tesxtureSlots attribute conversion fail - (547) resurce_converter attributeItems conversion failed Version 2023.2 Build 9560 Build Environment - (539) Update Android Studio to Flamingo | 2022.2.1 Patch 2 - (540) Update emscripten Build Environment to 3.1.49 - (541) Update Windows Build Environment to Visual Studio 17.8 - (542) Update Apple Build Environment to to XCode 15.0.1 Improvements Bug Fixes - (528) IEnums::Language accessor LANGUAGE_ARABIC missing - (531) Antialiasing broken on iOS (black screen) - (536) resource_converter - can not substitute numbers and enums General - (527) Do not pack git stuff into release zip archive - (529) Billing Library is deprecated - (533) XCode warnings - (534) missing in set_env.sh Werkbank - (543) Need to press compile multiple times after shader compile fails Version 2023.1 Build 9516 Build Environment - (518) Android Studio Electric Eel | 2022.1.1 Patch 2 - (520) Update emscripten Build Environment to 3.1.35 - (519) Update Windows Build Environment to Visual Studio 2022 v17.5.3 - (526) Update Apple Build Environment to to XCode 14.2 Improvements - (441) Adding Vulkan renderer - (521) Update astc_encoder to v4.2 - (522) Update expat to v2.5 - (523) Update libpng to v1.6.39 - (524) Update libwebp to v1.2.4 - (510) Add IEnums::LANGUAGE_ARABIC Bug Fixes - (515) MurlKeyInputConnection.RemoveKeyboardChars - (516) Mouse input is not working on OSX Ventura - (511) TextGeometry system font rendering is different to engine - (512) resource packer bad behavior - (513) Windows only - audio is broken after suspend/resume. Version 2022.1 Build 9278 Build Environment - (477) Update macOS/iOS/tvOS Build Environment to Xcode 13.3 - (493) Update Windows Build Environment to Visual Studio 2022 v17.2.3 - (494) Update emscripten Build Environment to 3.1.13 - (495) Update macOS/iOS/tvOS Build Environment to Xcode 13.4.1 - (499) Update Android Build Environment to Android Studio Chipmunk 2021.2.1 Patch 1 Improvements - (498) Add move semantics to Murl::Array and Murl::String Bug Fixes - (491) Remove "final" keyword from framework classes & methods - (492) Rendering to cube map frame buffer does not work - (496) 3rd_party: possible crash in glsl_optimizer - (497) Android: OpenAL mixing thread incorrectly keeps running when app is in background Version 2022.1 Build 9137 Build Environment - (467) Android Build Environment NDK home - add support for NDK side-by-side configuration - (469) Android Build Environment: Increase Minimum API Level to 19 - (477) Update macOS/iOS/tvOS Build Environment to Xcode 13.3 - (478) Update Android Build Environment to Android Studio Bumblebee 2021.1.1 Patch 1 - (479) Update emscripten Build Environment to 3.1.9 - (480) Update Windows Build Environment to Visual Studio 2022 v17.1.6 New Features: - (400) Asynchronous swapping and unswapping of specific node - (466) Lazy nodes showing General - (488) Remove openal_soft from 3rd_party components Improvements - (435) Package loading preformance (#SGH-23121) - (461) Android: Avoid creating new thread on each http request, consider using ThreadPool instead - (470) Add enumerations for new Apple devices and operating systems - (471) Spine Converter: Binary file format importer - (474) Update zlib to v1.2.12 - (481) Update libwebp to v1.2.2 - (482) Update libpng to v1.6.37 - (483) Update expat to v2.4.8 - (484) Update astc_encoder to v3.7 - (485) Improve ASTC encoding performance - (486) Update libogg to v1.3.5 - (487) Update libvorbis to v1.3.7 - (489) Update mojoal to latest version Bug Fixes - (283) Sometimes IEngineConfiguration::GetBootTime::GetDouble() retrieves value <= 0. - (351) ANR: IabHelper$a.onServiceConnected - (352) ANR: MurlGLThread.RequestExitAndWait - (464) Children of Graph::Aligner not visible under certain circumstances - (468) Fix Linux Build - (472) Spine Converter: Import of component-wise animation transform values does not work - (476) Android x86 (emulator): Engine fails to start - (490) Android: Crash in AudioRenderer::DeInit() when terminating app Version 2021.2 Build 8817 Build Environment - (415) Update Linux Build Environment to GCC 6.5.0 - (425) Visual Studio 2019 support added - (426) Visual Studio support for vs2008/2010/2013 removed - (443) Update macOS/iOS/tvOS Build Environment to Xcode 13.1 - (444) Update Android Build Environment to Android Studio Arctic Fox 2020.3.1 Patch 4 - (445) Update emscripten Build Environment to 3.0.0 - (446) Update Windows Build Environment to Visual Studio 2019 v16.11.7 New Features: - (346) Masking - (416) Add Graph::IAttachment interface and Graph::Attachment node class API Changes - (409) OSX: Increase minimum deployment target to 10.10 Improvements - (407) Update FBX SDK to 2020.2 - (410) Improve IVideoSurface::ApplyMatteFringe() algorithm - (418) Toolkit: Add SetStaticInstanceCreationEnabled() and SetStaticInstanceParentNodeId() methods - (437) Toolkit: Upgrade Spine importer to support scenes exported from Spine 4 - (454) Android: Integrate Google Play Billing API v4.0.0 Bug Fixes - (369) Core loader incorrectly processes loading queue in case one of the package was cancelled to load/unload - (405) Framebuffer buttons receiving events when they should not - (404) Toolkit: Reverse triangle indices for Mesh & Bounding Box attachments - (412) Spine Converter incorrectly adds "scaleFactor" atrributes to BonePathConstraint nodes - (419) resource_converter fails to recognize correct image type - (420) Android IAB: Crash in at.spraylight.murl.googleplay.MurlInAppGooglePlayBillingV3.QuerySkuDetailsAsync - (421) Toolkit: FBX importer crashes when trying to import empty blend shape - (422) Android: Possible dead lock in AppStoreControl - (432) Android IAB: Empty ReceiptData and ReceiptSignature - (433) Crash / potential misbehaviour in Resource::VorbisAudioStream - (439) Toolkit: Spine importer corrupts bezier paths with identical vertices - (440) Chaining multiple bone constraints does not work - (449) Misc bugs in KTX image decoder & image resources - (451) Android: java.lang.UnsupportedOperationException when calling eglCreatePixmapSurface - (453) Murl::String: Memory leak when using Set() methods on a non-empty string Version 2021.1 Build 8437 Bug Fixes - (396) Engine hangs in endless loop when exit application - (397) Android: Amazon IAB fails to compile - (398) font_converter, image_converter, scene_converter: Importing images not working Version 2021.1 Build 8408 Build Environment - (392) Update Windows Build Environment to Visual Studio 2017 v15.9.34 - (393) Update Android Build Environment to Android Studio 4.1.2 - (394) Update emscripten Build Environment to 2.0.15 - (360) Update macOS/iOS/tvOS Build Environment to Xcode 12.4 API Changes - (329) Improve Unicode file name handling in System::File Improvements - (387) atlas_generator: improve control over generated images - (225) It will be nice to have some kind of events during animations. - (376) Windows AppWillTerminate() missing - (380) IEngineConfiguration: Add a configuration item to enable GPU buffer safety copies - (374) Provide scripts to build command line tools on Linux - (361) atlas_generator: allow to choose output image format and other image related parameters - (362) atlas_generator: allow to configure swapping parameters - (326) [Spine] Import Spine projects with multiple atlases - (366) Enable ETC2 textures format support - (367) atlas_generator: allow multiple configuration conditions for generated images - (364) atlas_generator: allow to export original & cropped rectangle offsets when generating plane / plane sequence graphs - (327) Need libs of murl engine for arm64 - (355) Add enumerations for new Apple devices - (331) Ensure SetAsyncLoadingEnabled working on Android platform - (330) Make SetSyncLoadingTimeout method available at any time - (384) resource_converter: optionally add resource tags to output image - (390) Add "emergency" swapping trigger - (345) Timelines time marks - (231) Add support for Google Play Billing library (AIDL is marked as deprecated) - (389) Improve control over setting thread affinity mask for renderer/logic/loader thread - (375) Create resource_converter command line tool - (388) Add optional Floyd-Steinberg dithering for resource images and video surfaces - (383) atlas_generator: optionally add resource tags to output image - (385) Add zipped stream format for Resource::Image - (381) Override resource parameters in resource packer Bug Fixes - (391) Android: Null pointer exception in IabHelper.consume() - (379) GLES2.0 renderer may add incorrect index to batched index buffer - (378) Random crashes in connection with Video::IIndexBuffer and Video::IVertexBuffer setters - (377) Memory leak in Resource::NativeMesh - (372) Possible dead lock in Graph::IRoot for methods InitGraph(), DeInitGraph(), InitNode() and DeInitNode() - (371) Graph::IRoot::DeInitGraph() takes a long time to finish when called from logic OnDeInit() - (183) Large amount of crashes in Murl::Core::GraphRoot::FinishGraphOutput in out client across all version. - (239) Client crashes during app shutdown - (368) Toolkit: Spine importer does not respect "Stretch" attribute in IK constraint - (281) Crash at PrepareDecodingPngImage - (363) Sometimes Timeline::HasPassedTime() doesn't works - (359) Android: OpenAL device should be retained across StartEngine()/StopEngine() - (349) Crash: Murl::Input::TouchableHandler::ReportBegin() - (336) Crash: Murl::Video::GlEs20::Indices::Create(Murl::Video::IRenderer*) - (334) Crash: Murl::Video::GlEs20::IndexBuffer::Draw() - (335) Crash: Murl::Video::Renderer::SetupView() - (333) Crash: Murl::Video::Renderer::ProcessFrameBuffer() - (332) Crash: Murl::Platform::Android::VideoInterface::ActivateBackBuffer() - (353) Crash: Murl::Video::GlEs20::Renderer::ApplyTextures - (354) Crash: Murl::IndexBase<...>::Find(Murl::Audio::IPlayable* const&, unsigned int) const - (358) Engine prematurely deinitializes objects upon Suspend() - (357) Core::Loader processes packages in wrong order when loading/unloading is cancelled - (340) ANR: Broadcast of Intent { act=android.intent.action.SCREEN_OFF flg=0x50200010 } - (303) Android application freezes on collapsing/expanding application during package loading/unloading operations. - (352) ANR: MurlGLThread.RequestExitAndWait - (342) ANR: Input dispatching timed out - (341) ANR: Input dispatching timed out - (343) ANR: MurlGLThread.surfaceCreated - (350) ANR: MurlGLThread.WaitForSurfaceDestroyed - (347) Crash: at.spraylight.murl.MurlGLThread.CreateEglMainWindowSurface - (348) Crash: at.spraylight.murl.MurlGLView.SetFocus - (328) Util::GetRelativePath() does not correctly return given absolute path when base path is empty - (323) Toolkit: Spine skin attachments falsely visible if scene does not have a default skin - (322) Toolkit: Crash when importing a Spine scene containing linked meshes - (321) Toolkit: Scene converter produces illegal XML output for Spine meshes - (317) Graph::ComplexTransform: Misspelled attribute "inheritReflectiom" (should be "inheritReflection") - ( 3) Loader vergisst Pakete zu laden Version 2020.2 Build 8214 Build Environment: - (312) Update macOS/iOS/tvOS Build Environment to Xcode 11.6 - (313) Update emscripten Build Environment to 1.39.20 - (314) Update Android Build Environment to Android Studio 4.0.1 - (315) Update Windows Build Environment to Visual Studio 2017 v15.9.25 New Features: - (276) Integrate Spine Animation - (307) Add size setters to BoundingBox component API Changes: - (286) It will be nice to have response timestamp in Murl::IUrlRequest Improvements: - (285) Update LUA to v5.3.5 - (288) Update FbxSdk to 2020.0.1 - (294) It will be nice to have std::make_shared analog for Murl::SharedPointer. - (304) Improve embolding algorithm for outline fonts General: - (274) Missing enumerations - (284) IOS Simulator build fails in Xcode 11.4.1 Bug Fixes: - (282) ANRs in MurlGLThread - (287) atlas_generator produces rectangle names with file extensions - (289) ANRs in MurlGLThread (after fix) - (299) After ANR fix we got increased stuck partial wake locks (background) - (300) After ANR fixes we got missing sounds when background/foreground app - (302) Android: System font rendering may use incorrect clip rectangle Version 2020.1 Build 7801 Build Environment: - (#240) Update Android Build Environment to Android Studio 3.6.1 - (#270) Update emscripten Build Environment to 1.39.10 - (#272) Update macOS/iOS/tvOS Build Environment to Xcode 11.3.1 - (#273) Update Windows Build Environment to Visual Studio 2017 v15.9.21 - (#264) After updating gradle tools version to 3.6.0 Android build fails to resolve Android NDK path API Changes: - (#234) Add initializer-list constructor to the Map - (#238) Access to Graph::IFactory - (#241) Method to SuspendApp() - (#242) Add template ValueType definition Improvements: - (#205) It will nice to have out of the box support of StdHash for enum class - (#206) Add missing pixel converters - (#243) Murl::Array and other containers are missing Front() and Back() methods. - (#265) Hash function for enumerations Bug Fixes: - (#208) Crash when converting to pixel format IEnums::PIXEL_FORMAT_SR8 - (#209) Loading of predefined HLSL shader from XML file fails - (#210) Dashboard.app doesn't persist settings after reopening - (#214) Native::ResourceImage has corrupted pixels when storing a 16bit PNG surface - (#217) Murl::String trims zero characters at the end even when I specify string's length explicitly; - (#218) Graph::SubState ignores setting of "includePreservedStates" - (#219) Graph::SubState does not change affected state when nodes are added or removed - (#220) "replications" property not defined when creating static instances from package.xml - (#221) Graph::CloneTransform does not do relative transformations - (#223) Graph::Variable fails to reinit when previously a constant input is set and replaced with a variable input at the same index - (#224) Rendering is broken on OSX Catalina - (#227) Crash from crash tracker for latest Google Play app version - (#235) Video::IVertexBuffer RemoveAllAttributes() does not work. - (#266) OSX: Mouse input not working on retina displays when high resolution backing store is disabled - (#267) Graph::WaveUniformTimeController crashes in PostInit() when owner does not implement target interface Version 2019.2 Build 7714 Build Environment: - (#198) Murl should switch to release for gradle tasks containing bundle && release. - (#202) Update macOS/iOS/tvOS Build Environment to Xcode 10.3 - (#203) Update emscripten Build Environment to 1.38.40 - (#204) Update Android Build Environment to Android Studio 3.4.2 Bug Fixes: - (#180) IAppStoreProduct::GetStatus is STATUS_NOT_PURCHASED after lock iphone during purchase - (#181) IAppStoreProduct::GetStatus retrieves ERROR instead of CANCELLED in case cancelling of purchase by home button - (#184) Graph::Instance does not destroy containers upon DeInit() - (#186) Inappropriate warning in Video::Renderer::ReleaseSignature() with ID 0 - (#189) Resource::HdrImage and Resource::PfmImage don't allow scaled surface creation - (#190) IAppStoreProduct::GetStatus retrieves STORE_PURCHASE_WAS_CANCELLED after purchasing item on Android. - (#191) java.lang.NullPointerException at MurlInAppV3PurchaseControllerAndroidMarket - (#192) java.lang.NullPointerException at at.spraylight.murl.googleplay.util.IabHelper$1.onServiceConnected(IabHelper.java:265) - (#193) java.lang.IllegalStateException: IAB helper is not set up. Can't perform operation: queryInventory - (#194) java.lang.NullPointerException at at.spraylight.murl.googleplay.MurlInAppV3PurchaseControllerAndroidMarket$3.onConsumeFinished(M - (#196) Wrong CoordSize values of atlas rectangles Version 2019.1 Build 7666 Build Environment: - (#170) Update macOS/iOS/tvOS Build Environment to Xcode 10.2 - (#173) Update Android Build Environment to Android Studio 3.3.2 - (#172) Update emscripten Build Environment to 1.38.29 API Changes: - (#171) Remove openal_apple from 3rd party New Features - (#149) Added possibility to retrieve response body in case of not success HTTP status - (#148) Added possibility to receive HTTP response code Improvements: - (#164) Added detailed documentation for Murl::Util::PrintToString format argument - (#167) Toolkit: Add file/folder name & path properties - (#165) Improve container fitting for Graph::TextGeometry Bug Fixes: - (#168) Calling DestroyUrlRequest on request that is not finished crashes the app. - (#161) Failed to convert value "" for attribute "xxx" to Float - (#169) Button in Frame Buffer: clicks are reported outside actual frame buffer button range - (#166) Fix issues related to "outputTextureId" of Graph::TextGeometry and Graph::FlatTextTexture - (#159) Container self assignment Version 2018.3 Build 7623 Build Environment: - (#153) Update Android Build Environment to Android Studio 3.3.1 (minimum supported version is now android-16, was android-14) - (#154) Update macos/ios/tvos Build Environment to Xcode 10.1 - (#155) Update emscripten Build Environment to 1.38.28 API Changes: - (#125) FontConverter: Removed --input_xml option. Bug Fixes: - (#156) Wrong StringToSInt32 parse for empty string. - (#133) Report parsing errors during resource creation - (#131) Graph::NinePatchPlaneSequenceGeometry not respecting texture size stored in atlas - (#130) Graph::PlaneSequenceGeometry: SetRectangleName() not accepted if node is not yet initialized - (#132) Graph::TextGeometry does not accept a font resource directly set via code - (#127) iPad Pro DisplayRefreshFrequency setzten - (#143) Crash when deleting an input node (Graph::Button) during Logic::OnProcessTick() - (#142) Logic::Processor::RemoveDeInitChild() returns incorrect bool value from DeInit() call - (#141) Graph::Button initialization fails if button is not yet attached to a parent - (#135) Windows/OpenGL: Rendering errors when engine is in sequential run loop mode - (#119) OSX application wird angehalten wenn das Fenster inaktiv ist - (#104) appConfig->SetIosPreferredScreenEdgesDeferringSystemGestures funktioniert nicht - (#112) Toolkit: Node ID correction produces duplicate IDs for elements only differing in upper/lowercase - (#111) Scene Converter: Geometric transformation ignored on FBX import Improvements: - (#146) IUrlRequest: add possibility to get HTTP headers from response - (#126) Prepend "::Murl" namespace to object types used in MURL_FACTORY_OBJECT_PROPERTIES macro and others - (#144) Graph::Button / Graph::FrameBuffer: Allow dynamic setting of input in/out coordinates - (#140) Url request should support custom http headers - (#118) IUrlRequest: Add possibility to specify HTTP headers - (#138) Provide additional Euler rotation orders (other than ZYX) - (#134) CoordSize values of atlas rectangles sometimes have rounding errors - (#87) FontConverter: Misc Improvements - (#124) FontConverter: add option to limit the character set when creating a TrueType font resource. - (#123) FontConverter: add parameter --none_power_of_two_height to allow vertical cropping of the font output image. - (#122) Add methods to append UTF-32 characters to String class. - (#120) Add missing attributes for Rectangle resources to XSD file - (#117) Automatically correct the window size if display surface size changes (Windows, macOS) - (#128) Add enums for Apple GPU IEnums::GPU_APPLE_3_CORE, Enums::GPU_APPLE_4_CORE - (#129) Add enums for new iPad devices: IPAD_6, IPAD_PRO_11IN0_1, IPAD_PRO_12IN9_3 Version 2018.2 Build 7478 Build Environment: - (#100) Update Android Build Environment to Android Studio 3.2.1 - (#101) Update macos/ios/tvos Build Environment to Xcode 10 - (#102) Update emscripten Build Environment to 1.38.13 New Features: - (#94) Config item support for iOS 11+ view controller properties Bug Fixes: - (#95) Android Crash in MurlGLView.onApplyWindowInsets() - (#97) Strange GetKeys() behavior in IKeyboardDevice on Android - (#98) Black screen when building with Xcode 10 and macos10.14 SDK - (#99) Fix Platform::Android::KeyboardControl::SetText() method Version 2018.1 Build 7420 Build Environment: - Android Studio 3.1.4 with NDK 17.2.4988734 - Visual Studio 2017 version 15.8.0 - emscripten 1.38.12 New Features: - Emscripten build files for building asm.js and WASM output running in web browsers - Added IEnums::TargetHost enumeration, to distinguish if code runs natively in an app, or within a web browser - Android 64bit builds (arm64 and x86_64) - Visual Studio 2017 builds for x86 and x64 Changes: - Removed builds for iOS 5.x - Removed builds for VS2008-2015 (still available on request) - Removed 3rd_party glee - Removed 3rd_party agal_assembler - Removed facebook addon - Removed vuforia addon - Removed openmax addon - Changed Android STL form gnustl to c++_static - Replaced OpenAL Soft with MojoAL - Changed Android Murl Package File Extension from *.jet to *.murlpkg to be consistent on all platforms. For existing projects, please add a noCompress option to your build.gradle file in the Android section: aaptOptions { noCompress 'murl', 'murlpkg', 'lua' } - Removed deprecated node classes: - Replace with - Replace with - Replace with - Replace with - Replace with - Removed deprecated node attributes: - Graph::Node - swappable="" Replace with enableAutomaticSwapping="" - Graph::AudioSource - soundResourceId="" Replace with audioResourceId="" - Graph::AudioSequence - soundIds="[]" Replace with audioSourceIds="[]" - soundId="" Replace with audioSourceId="" - soundId.N="" Replace with audioSourceId.N="" New Interfaces: - Util::IFactory - Util::IFactoryRegistry - Util::IImageDecompressor - Util::IVideoSurfaceDecoder - Util::IVideoSurfaceEncoder New Classes: - Math::Ray - Misc Util::VideoSurfaceDecoder and VideoSurfaceEncoder classes, for decoding/encoding various image formats New Resource Objects: - Resource::HdrImage - Resource::PfmImage New Graph Node Interfaces: - Graph::IAnchorState New Graph Node Classes: - Graph::IAnchorState - Graph::IAnchorStateCopy New Graph Controller Classes: - Graph::CameraNodeLinkController - Graph::ScalableNodeLinkController - Graph::SubjectNodeLinkController Improvements: - Added "Safe Area" margin support for notched displays (iPhone X, Android API>=28) via IAppConfiguration GetDisplaySurfaceSafeMarginXX() - Improved graph traversal performance - Implemented resource aliases in .murlpkg files, to prevent duplicate resources from being included more than once - Added GetLoadMode() and GetFileCategory() methods to IPackage interface - Refined sorting in video renderer to improve performance - Increased slot count to 256 for materials, parameters, textures, vertices, lights, surfaces and layers - Added support for non-breaking space characters in Graph::TextGeometry - Improved power-of-two checks on textures after initialization - Changed visibility in Util::Rng and derived classes from "private" to "protected", to facilitate state de-/serialization - Updated astc_encoder to 1.4 - Updated expat to 2.2.5 - Updated glew to 2.1.0 - Updated zlib to 1.2.11 - Updated libpng to 1.6.34 - Updated jpeglib to 9c - Updated libwebp to 1.0.0 - Updated libogg to 1.3.3 - Updated libvorbis to 1.3.6 - Updated lua to 5.3.4 - Updated freetype to 2.9.1 - Updated assimp to 4.1.0 - Updated FBXSdk to 2019.0 Fixes: - Fixed Util::VideoSurface clamping color values on reading/writing individual pixels - Added missing pixel converters for L8/LA16 to Float16/32 - Added incomplete System::CLib file/folder functions on Android - Fixed Luminance/Alpha texture formats for GL3.3 wrapper - Fixed an issue in Util::Base64Decoder::DecodeValue() - Fixed dead code in Logic::Animation::Reset() - Added missing device enums for newer Apple devices - Fixed Graph::GenericGeometry sometimes not reacting on calls to SetNumberOfIndices()/SetNumberOfVertices() - Fixed GetProductName() and GetVersionName() in IEngineConfiguration incorrectly appending a null character on Windows - Fixed misc iOS audio issues when device locked/unlocked or interrupted by a phone call or timer signal - Fixed incorrect usage of SHFileOperationW() on Windows, preventing folders from correctly being created or deleted - Fixed Util::FileInterface::GetAbsoluteName() on Windows - Fixed a crash in GLES2.0 dynamic vertex buffer batching - Added missing interface methods in Graph::IShadowCamera - Fixed content size calculation for bitmap fonts when container fitting is enabled - Fixed HTTPS POST requests not working on Windows - Fixed Util::ShaderBuilder falsely complaining about not writing to shader output - glsl_optimizer: Fixed single-scalar vector constructor parameters when translating to HLSL - Misc rendering fixes in DX9 and DX11.1 renderers Version 1.00.6944Beta Changes: - Added Graph::VolumeCuller to replace deprecated Graph::BoxCuller and Graph::FrustumCuller - Unified Graph::PerspectiveCamera and Graph::OrthographicCamera (now deprecated) into Graph::Camera - Moved Android IAB files into a separate directory New Features: - Added IEnums::CONSTANT_BUFFER_ITEM_SHADOW_n and individual uniforms IEnums::UNIFORM_ITEM_SHADOW_VIEW_PROJECTION_MATRIX_n_m and IEnums::UNIFORM_ITEM_SHADOW_SPLIT_DISTANCE_n - Added Graph::ShadowCamera - Added PVRTC software decompressor Improvements: - Updated and build with Android Studio 3.0.1 and Android NDK 16.1.4479499 - Improved Resource::PvrImage to support all the different PVR file format variants - Added filter options to Resource::Image for base & mip scaling - Updated libpng to 1.6.32 - Updated libwebp to 0.6.0 - Updated openal_soft to 1.18.1 - Added prescaling feature to atlas generator tool Fixes: - Fixed a reinitialization problem in Graph::Light - Fixed resizing of Resource::NativeImage video streams - Fixed Resource::NativeImage not respecting resource parameters - fixed Math::Cone setter from an off-center Math::Frustum - Added missing multisample framebuffers with depth texture - Fixed various issues in Android::FileInterface - Fixed a crash in Resource::XmlImage when using invalid parameters - Fixed Resource::XmlImage returning wrong video stream format - Fixed Graph::TextGeometry ignoring objectBoundingModeX="CONTENTS" for bitmap fonts - Fixed a depth buffer issue in Video::Camera in certain situations - Fixed not setting boot time correctly upon resume on iOS & Android - Misc fixes for compressed texture formats Version 1.00.6747Beta Changes: - Added new "--prescale_divisor" command line parameter to the resource_packer tool, which is supposed to replace the existing (now deprecated) "--prescale_factor" parameter. When specifying "--prescale_factor 1" together with "--check_config", the resource_packer tool falsely includes all resources tagged with a prescale factor, instead only those for factor 1. For compatibility reasons, "--prescale_factor" still exists and behaves as before, but should be replaced with "--prescale_divisor" whenever possible. - Removed the legacy "armeabi" default target on Android - Added Crashlytics to gradle release type task Improvements: - Built with Android NDK 15.1.4119039 - Added GetChildIndex(), GetParentIndex() and GetControllerIndex() methods to Graph::INode interface, to query the actual index of a given child/parent node or controller - Enabled tracker result queries for Graph::Controller classes - Updated Google Play IAP classes Fixes: - Fixed a bug in Android::FileInterface which caused failures when repeatedly mapping/unmapping files - Fixed a startup crash on certain Android devices that do not support OpenGL|ES 3.0+ - Fixed an iOS audio playback problem after system pause/continue events on certain devices/iOS versions Version 1.00.6708Beta Changes: - Replaced outdated GLEE OpenGL extension handler with GLEW on OSX/Win32 - Android Studio 2.3.3 - Updated Android NDK minimum supported version to android-14 (was 9) - Removed Android target armeabi Improvements: - Improved loading of DDS images - Cleaned up Util::VideoSurfaceTools - Built with Android NDK 15.0.4075724 New Features: - Introduced array textures and cubemap array textures (GLES) - Introduced frame buffer texture arrays - Introduced shadow samplers (GLES) - Experimental support for GLES3.0 - Added Graph::IndexedNodeLinkController to link the index property of e.g. a Graph::Switch to a different one - Added support for software decompression of certain HW-compressed image formats (Util::PixelDecompressor) - Added support for loading KTX images (Resource::KtxImage) - Added global "cbTime" shader constant buffer, with float uniforms "uTimeSeconds" and "uTimeFraction" Fixes: - Bug fix in gradle build script (Android) - Fixed XML image resources to respect custom image parameters - Fixed GLSL optimizer translation - Misc image decoding fixes - Fixed local host name resolution on iOS - Fixed Android broadcast address Version 1.00.6624Beta Changes: - Added separate iOS build for base SDK 8.4 and deployment target 5.0 (Xcode 6.4, C99 / C++98) for backward compatibility - Built with Android NDK 14.0.3770861 - Android Studio 2.3 Improvements: - Graph::ShaderParameters and related nodes now also accept a Graph::IProgram or Graph::IMaterial as parameter source - Added some missing converters to Util::PixelConverter - LF32 -> L8 - LF32 -> RGBA32 - LF32 -> RGBF96 - LF32 -> RGBAF128 - Relaxed Resource::XmlImage input restrictions: Allow (but warn) about surfaces not having the same dimension as the first one; rescale them instead of generating an error - Added "intensity" attribute to Graph::Light (+ interface methods), usable via uLightSpotN.z uniform in shaders - Added target anchor node & up vector in Graph::ISubject interface - Cleanup of Video::IRenderer, Video::IView and Video::IFrameBuffer - Cleanup of Audio::IRenderer, Audio::IView - Improved camera state change performance in Video::Renderer - Added Graph::MultiCamera and Graph::MultiCuller - Added controller creation/destruction methods to Graph::IRoot - Added Color::ToUInt32Clamped() Fixes: - Misc node reinit fixes - Graph::Texture - Graph::View - Graph::FrameBuffer - Graph::ConstantBufferParameterGroup - Clean de-init in Video::GlEs20::Texture - Fixed Empty() methods in murl_index_base.h and murl_map_base.h - Fixed win32 preferences control returning a trailing 0 byte on querying a string value - fixed Platform::Win32::FileInterface::CreateFolder() Version 1.00.6529Beta Changes: - Updated engine build for C++11/14 Minimum target platform for iOS is now 6.0 Minimum target platform for OSX is now 10.7 Removed OpenMax Addon Improvements: - Build with Android NDK r13 - Updated 3rd party lua to 5.3.3 - Updated 3rd party expat to 2.2.0 - Updated 3rd party libpng to 1.6.25 - Updated 3rd party libwebp to 0.5.1 - Updated 3rd party libvorbis to 1.3.5 - Updated 3rd party jpeglib to 9b - Updated 3rd party assimp to 3.3.1 - Updated 3rd party glsl-optimizer to latest revision - Updated 3rd party fbxsdk to 2017.0.1 - Added Portuguese and Russian language - Allow dynamic switching between system and outline font in Graph::FlatTextTexture and Graph::TextGeometry, and relaxed error checking - Improved outline font rendering when alpha < 255 is used - Allow alpha-only pixel format (A8) for system fonts to save memory (shader needed for colorizing) - Reset error variables on Murl::Enum getters by default - Graph::Aligner: Treat multiple replications of an Instance child as if they were direct children, to allow for easier alignment. Set the "processInstances" attribute to false to revert to original behavior. - Added an allocation size assertion in debug builds for 32bit platforms New Features: - Added Resource::CsvDictionary resources to import dictionary resources from a given CSV file - Added Graph::ShaderParameters, ShaderParameterGroup and ShaderParameter, to allow for sourcing actual default uniform values directly from a given shader node or resource - Added normalized UInt/SInt vertex buffer attribute types Fixes: - Removed method application supportedInterfaceOrientationsForWindow from MurlPlatformIosUikitApplicationDelegate. This method always returned UIInterfaceOrientationMaskAll, which overwrites the supported interface orientations setting from the app's plist file. - Fixed a CPU hog problem in loader thread when main thread is busy - Fixed a possible memory leak in Graph::ResourceMeshGeometry - Fixed a possible crash in Graph::TextGeometry - Fixed Graph::TextGeometry::IsCharacterPrintable() always returning false when using system fonts - Fixed a crash when querying or rendering system font strings containing an incomplete UTF8 character sequence (iOS/OSX) - iOS: Fixed a crash when the app gets started background-only - Android: Fixed an ANR when the app receives onStop/onPause calls before rendering thread is ready (triggered e.g. by system toast messages) - Fixed Graph::Aligner not updating the layout when removing children - Fixed const correctness for various comparison operators in different classes - Fixed Graph::Matrix::Translate() method - Fixed Graph::Vector multiplication operator to act component-wise. Version 1.00.6406Beta Improvements: - Android Studio and Gradle support added - Built with Android NDK r11c - Switched Android build toolchain from GCC to Clang - Updated 3rd party lua to Lua 5.3.2 - Graph::NinePatchPlaneGeometry/NinePatchPlaneSequenceGeometry: added "enableCenterPatch" attribute and interface methods to enable or disable rendering of the center element (useful for transparent frames) - Graph::TextGeometry: - added "objectBoundingMode" attribute(s) and interface methods for better control of alignment in a Graph::Aligner node - Graph::ResourceMeshGeometry: improved skinning performance if no bones have changed - Graph::TimeController: improved update performance if used with a stopped Graph::MultiTimeline - IAppConfiguration: - added SetTrackerTraceLevel() method for better control over scene node warnings on init - added SetMouseCoordinateClampingDisabled() method to allow for reporting mouse coordinates outside of the render window - Scene converter: - Added "sourceStartTime", "sourceStopTime" and "destinationStartTime" attributes for explicit clip creation from an imported skeleton - Added "ignore" attribute for clips - Removed unused animations from generated packages - Added "defaultBlendWeights" attribute for mesh elements - Resource::IObject/IPackage: added query methods for input file name and category - Resource::ICollection/IPackage: changed "basePath" to "fileName" in creation interfaces - Graph::ITracker: added SetChildrenProcessingEnabled() method - Resource::XmlDictionary: added "registeGlobally" attribute to allow for scoping text resources either at package level (true, default) or within the dictionary's namespace (false) Fixes: - Scene converter: - Fixed handling of multiple offset matrices when importing skinned models from an FBX file - Fixed merging of blend shapes and skeletons when transferring animations from a different input scene (FBX) - Fixed incorrect clip length when source animation start time is greater than zero (FBX) - Graph::PlaneSequenceGeometry: - Allow initialization without atlas resource (to be set in code later) - Fixed an atlas resource update problem - Fixed container alignment - Graph::TextGeometry: - Fixed updating material & parameters slots - Fixed setting text resource target from code - Fixed incorrect IsCharacterPrintable() method for outline fonts - Fixed misc setter methods at runtime - Fixed rendering digits with unified width for outline fonts - Misc re-init fixes for graph nodes - Util::ExpressionEvaluator: - Fixed a divide-by-zero error - Fixed conversion functions from numbers to strings - Fixed incorrect rendering in a Graph::FixedProgram with both vertex coloring and material coloring enabled - Fixed input lag when switching the engine to sequential run loop mode Version 1.00.6320Beta Atlas Generator - Added option for generating graph_textures.xml containing texture setup - Added option for generating package.xml containing generated resources Scene Converter - Added "allowDynamicBatching" attribute to elements in config files - Added "forceConstantKeys" attribute to elements in config files - Added "depthOrder" attribute to elements in config files - Added various attributes to element in config files for better control of generated textures (matching the attributes in scene graph): - useAlpha - useMipMaps - usePrescale - mipMapGenerationMode - pixelFormat - wrapModeX - wrapModeY - wrapModeZ - magFilter - minFilter - mipFilter - maxAnisotropy - Added "sourceClipId", "sourceStartTime", "sourceStop Time" and "destinationStartTime" attributes to element in config files for cloning animation clips - Added support for scaling key frames - Added support for constant key frames - Added "replaceWithMaterialSlot" and "replaceWithParametersSlot" attributes to elements for specifying separate slots for material and parameters used - Added support for direct import of blend shapes from FBX files Improvements: - Added "flipX" and "flipY" attributes to Resource::Image and derived classes - Added Graph::IClipSequencer::Reset() interface method - Added Graph::IClipSequencer::GetCurrentClip() interface method - Added Graph::ITimeline::SetTimeShift() and SetTimeOffset() methods - Added Graph::IAnimationTimeController::SetRotationBlendReference() and SetRotationBlendDirection() methods - Added named rectangles in Resource::IAtlas - Introduced Graph::INinePatch common property interface for Graph:INinePatchPlaneGeometry and (newly added) Graph:INinePatchPlaneSequenceGeometry - Resource::IAtlas: Allow different texture slot & reference size per rectangle Fixes: - Fixed Graph::TextGeometry outline font update bug when container fitting & word wrapping are both enabled - Fixed evaluation of multiple blend factors - Util::Timeline: fixed NaN for clips with zero duration - Fixed Graph::Timeline to allow clipIndex to be set without animation resource (regression) - Fixed IEnums::Interpolation enum missing deprecated hermite name strings - Fixed handling of a parent timeline in Graph::Timeline - Fixed a crash in Graph::Clip when no blendable is specified - Fixed quaternion blending direction in Resource::IAnimation - Fixed Graph::TextGeometry not updating text from resource - Fixed auto resetting of scene graph node values - Fixed decoding/encoding of PNG images with 16 bits per component - Fixed accepting command line parameters in various elements in scene converter config files - Fixed FBX pivot handling in scene converter - Fixed FBX bone offset matrix calculation in scene converter - Fixed considering additional node transforms in scene converter - Fixed normal/tangent vector removal in scene converter - Fixed handling of mirrored scaling in scene converter - Fixed actual clip start/stop frames in scene converter - Automatically create unique node IDs for empty IDs when converting FBX files using scene converter - Fixed re-init of Graph::PlaneSequenceGeometry (recentIndex) - Fixed Graph::GenericParameterGroup and Graph::GenericParameters init with empty target - Fixed Graph::LIght bounding volume recalculation - Misc fixes in frame buffer handling - Misc null pointer checks Version 1.00.6143Beta New Platform Apple TV: - Identify the platform at compile-time: defined(MURL_TARGET_OS_TVOS) - Identify the platform at run-time: platformConfig->IsTargetClassMatching(IEnums::TARGET_CLASS_CONSOLE) platformConfig->IsTargetDeviceMatching(IEnums::TARGET_DEVICE_APPLETV) platformConfig->IsOperatingSystemMatching(IEnums::OPERATING_SYSTEM_TVOS) - The tvOS platform supports: + IAudioInterface OpenAL + IVideoInterface OpenGLES 2 Configureable display refresh frequency Configureable multisampling: None or 4x + IAppStoreControl App-Store InApp-Purchases + ICloudControl Key-Value Store access Read / write records in iCloud database + IFileInterface Read only access (restriced by AppleTV) + IGameCenterControl GameCenter Leaderboards & Achievments + IGameController -> Input::IGameControllerDevice Micro GamePad and MFI GamePad / Extended GamePad + IKeyboardControl Overlay screen keyboard with text field + ILocation -> Input::ILocationDevice Location service + IMediaControl Video playback for + IMouse -> Input::IMouseDevice Absolute mouse movements and buttons from the Remote-Control + IRawMouse -> Input::IRawMouseDevice Relative mouse movements from the Remote-Control touch + IPreferencesControl Read / write application preferences + IRawButton -> Input::IRawButtonDevice Remote-Control buttons + ISystemDialogControl System alert dialog + ISystemFontControl System font access for + IWebControl IUrlRequest, no support for IEMail + IVirtualMouse Customize mouse movement and button mapping from the Remote-Control New Features: - IAppConfiguration SetDebugMouseEnabled() IsDebugMouseEnabled() HasDebugMouseEnabledChanged() SetDebugMouseScaleFactor() GetDebugMouseScaleFactor() HasDebugMouseScaleFactorChanged() - ICustomControlable AppOpenURL(String url, void* options) - IDeviceHandler AddCloudControl(ICloudControl* cloudControl) RemoveCloudControl(ICloudControl* cloudControl) - IEngineConfiguration SetVirtualMouseEnable() IsVirtualMouseEnabled() SetVirtualRawMouseEnable() IsVirtualRawMouseEnabled() SetCloudControlEnable() IsCloudControlEnabled() - IEnums::GameControllerControl GAME_CONTROLLER_CONTROL_ACCELERATION GAME_CONTROLLER_CONTROL_TOUCH_ORIENTATION GAME_CONTROLLER_CONTROL_TOUCH_ABS_REL - IEnums::Gpu GPU_POWERVR_GX - IEnums::OperatingSystem OPERATING_SYSTEM_OSX_10_11 OPERATING_SYSTEM_IOS_9_0 OPERATING_SYSTEM_WINDOWS_8_1 OPERATING_SYSTEM_WINDOWS_10 OPERATING_SYSTEM_WEB OPERATING_SYSTEM_WEB_LAST OPERATING_SYSTEM_TVOS OPERATING_SYSTEM_TVOS_9_0 OPERATING_SYSTEM_TVOS_LAST - IEnums::TargetClass TARGET_CLASS_BROWSER TARGET_CLASS_BROWSER_GENERIC TARGET_CLASS_BROWSER_LAST TARGET_CLASS_CONSOLE TARGET_CLASS_CONSOLE_GENERIC TARGET_CLASS_CONSOLE_LAST - IEnums::TargetDevice TARGET_DEVICE_IPHONE_6S TARGET_DEVICE_IPHONE_6S_PLUS TARGET_DEVICE_IPAD_MINI_4 TARGET_DEVICE_IPAD_PRO TARGET_DEVICE_IPOD_6G TARGET_DEVICE_APPLETV TARGET_DEVICE_APPLETV_4 TARGET_DEVICE_APPLETV_LAST - IGameController SetConnected(Bool isConnected) PostGravityEvent(Float gravX, Float gravY, Float gravZ) PostAccelerationEvent(Float accelX, Float accelY, Float accelZ) TakeTouchOrientationEnabled(Bool& isEnabled) TakeTouchAbsoluteEnabled(Bool& isEnabled) - IKeyboardControl WasClosed() HasTextfield() SetTitle(const String& title) SetDescription(const String& description) SetText(const String& text) GetText() - IPreferencesControl GetValue(const String& key, String& value) GetData(const String& key, Data& value) SetData(const String& key, const Data& value) Remove(const String& key) - Added ICloudControl New interface - Added ICloudRecord New interface - Added IVirtualMouse New interface - Graph::IBody: Added ResolveCollisions() method Improved collision query methods - Graph::IFrameBuffer, Graph::FrameBuffer Added "sortOrder" attribute and related interface methods to explicitly specify a processing order between frame buffers - Input::IDeviceHandler GetGameControllerDevice(UInt32 index = 0) GetVirtualMouse() - Input::IGameControllerDevice IsConnected() GetGravity(AccelerationVector& gravity) GetAcceleration(AccelerationVector& acceleration) SetTouchOrientationEnabled(Bool isEnabled) GetTouchOrientationEnabled(Bool& isEnabled) SetTouchAbsoluteEnabled(Bool isEnabled) GetTouchAbsoluteEnabled(Bool& isEnabled) - Logic::IDeviceHandler IsGameControllerConnected(UInt32 deviceIndex) GetGameControllerGravity(Input::AccelerationVector& gravity, UInt32 deviceIndex) GetGameControllerAcceleration(Input::AccelerationVector& acceleration, UInt32 deviceIndex) SetGameControllerTouchOrientationEnabled(Bool isEnabled, UInt32 deviceIndex) GetGameControllerTouchOrientationEnabled(Bool& isEnabled, UInt32 deviceIndex) SetGameControllerTouchAbsoluteEnabled(Bool isEnabled, UInt32 deviceIndex) GetGameControllerTouchAbsoluteEnabled(Bool& isEnabled, UInt32 deviceIndex) GetAppStoreControl() GetPreferencesControl() GetPreferenceValue(const String& key, String& value) GetPreferenceData(const String& key, Data& value) SetPreferenceData(const String& key, const Data& value) PreferenceRemove(const String& key) WasKeyboardClosed() GetKeyboardControl() IsCloudControlAvailable() GetCloudControl() GetVirtualMouse() - Output::IDeviceHandler AddCloudControl(ICloudControl* cloudControl) RemoveCloudControl(const ICloudControl* cloudControl) GetCloudControl(UInt32 index = 0) - RawButtonCode enum RAWBUTTON_SELECT RAWBUTTON_PLAY_PAUSE RAWBUTTON_ARROW_UP RAWBUTTON_ARROW_DOWN RAWBUTTON_ARROW_LEFT RAWBUTTON_ARROW_RIGHT - DoubleBuffer template class void ResetReadValue() void ResetReadValue(const DataType& value) void ResetWriteValue() void ResetWriteValue(const DataType& value) DataType& GetValue() - Added Enum <-> String mapping: const Enum& GetIAppStoreControlStatusEnum() const Enum& GetIAppStoreProductStatusEnum() const Enum& GetIAppStoreProductTypeEnum() const Enum& GetIGameCenterAuthenticationStatusEnum() const Enum& GetIGameCenterLoadFriendsStatusEnum() const Enum& GetIGameCenterLeaderboardStatusEnum() const Enum& GetIGameCenterAchievementStatusEnum() const Enum& GetIGameCenterControlErrorEnum() const Enum& GetIMusicPlayerEnum() const Enum& GetIMusicPlayerPlaybackStateEnum() const Enum& GetIMusicPlayerRepeatModeEnum() const Enum& GetIMusicPlayerShuffleModeEnum() - Added support for C++11 initializer list Array::Array(InitListType initList) Array::Add(InitListType initList) Array::Insert(SInt32 index, InitListType initList) Index::Index(InitListType initList) Index::Add(InitListType initList) ObjectArray::ObjectArray(InitListType initList) ObjectArray::Add(InitListType initList) ObjectArray::Insert(SInt32 index, InitListType initList) ObjectIndex::ObjectIndex(InitListType initList) ObjectIndex::Add(InitListType initList) - Added support for C++11 range-for statement Array, ObjectArray Index, ObjectIndex Map, ObjectMap String - Added Queue template New container including support for C++11 - Added ObjectQueue template New container including support for C++11 - Added Queue typedef's StringQueue UInt8Queue SInt8Queue UInt16Queue SInt16Queue UInt32Queue SInt32Queue UInt64Queue SInt64Queue RealQueue FloatQueue DoubleQueue BoolQueue - Added Compiler language dialect definitions MURL_COMPILER_C98 MURL_COMPILER_C11 MURL_COMPILER_C14 - Added IEnums::CompressionLevel - Added Util::Compresss() supporting compression level - Added combined graph nodes: equivalent to Reference with parent Scale with parent Transform equivalent to Reference with parent Scale equivalent to Scale with parent Transform - Updated FBX SDK to version 2016.1 - Added Graph::ITrackerResult and Graph::TrackerResult for querying node traversal issues - Added "slip" parameter and interface methods in Graph::Contact and Graph::IContact - Added Graph::IIsland interface and Graph::Island node for separating physics simulator instances - Misc improvements for Util::ShaderBuilder New Platform Features: - iOS Platform: ICloudControl and IGameController - OSX Platform: ICloudControl and IGameController API Changes: - Removed method IGameCenterPlayer::IsFriend() - Removed method IGameCenterAchievementEntry::IsHidden() - Changed Input::AccelerationVector from Real to Double - Changed Input::AngularVelocityVector from Real to Double - Added Array::RemoveGet(SInt32 index) - Added Array::Swap(Array& other) - Added ObjectArray::Swap(ObjectArray& other) - Renamed MURL_COMPILER_GCC42 to MURL_COMPILER_GCC Fixes: - IAppStoreProduct fixed mistaken GetReceiptData() and GetReceiptSignature() - Graph::PlaneGeometry: Fixed border size calculation - Graph::TextGeometry: - Fixed text fitting for outline fonts - Fixed border size calculation for bitmap fonts - Allow fontSize parameter as an alternative to scale factor when using bitmap fonts - Fixed a crash regarding empty font resources - Graph::GenericParameterGroup: fixed a possible crash - Fixes for various nodes crashing after initialization failure - Fixed using 8bit stencil buffer type as generic format for GLES 2.0 - Fixed returning correct number of used light units in Video::GlEs20::ShaderProgram - Various physics engine fixes - Fixed calculation of view matrix in Graph::Light - Fixed quaternion interpolation in Graph::TransformableAnimationTimeEvaluator - Fixed a mesh/sphere collider issue reporting wrong intersections - Fixed incorrect spacing in Util::Font::QueryTextSize() - Fixed resetting transitions in Graph::ClipSequencer - Fixed parsing empty string pieces in Util::Attributes and Resource::NativeAttributes for comma-separated values - Fixed Graph::ResourceMeshGeometry duplicate skinning when referenced - Misc scene converter fixes - Fixed accepting custom chunks in Resource::WavAudio loader Xcode debug data formatter, see murl/common/xcode/readme.txt - Support for Murl::Color class - Support for Murl::Data / Murl::MutableData / Murl::ConstData class - Support for Murl::Math::Vector class - Support for Murl::String class - Support for Murl::System::DateTime class - Support for Murl::System::Time class - Support for Murl::Util::File class Version 1.00.5880Beta API Changes: - Added IAppStoreProduct::GetReceiptSignature(), see the method documentation for platform specific data content. - Added Resource::IDictionary, together with Resource::XmlDictionary and Resource::NativeDictionary for grouping together multiple key/value string pairs. - Added Resource::NativeImage. Improvements: - Built with Android NDK r10e - Updated 3rd party libpng to libpng-1.6.18 - Updated 3rd party libwebp to libwebp-0.4.3 - Updated 3rd party lua to Lua 5.3.1 - Added Math::MinMax template class. - Added ILoader::RemovePackage() and ILoader::RemoveProcessor() methods. - Added Util::PrintToString() method (equivalent to System::CLib::PrintToString()). - Added Graph::ITransformable methods to read Euler angles: GetRotationX(), GetRotationY() and GetRotationZ() - Added Graph::IAnchor::GetWorldPosition() method - Added Graph::IInstance GetReplicationNode() method - Added Color::StringFormat enumeration for better control of how to convert a color to a string via Util::StringToColor(). - Perform rounding to the nearest integer instead of implicit floor() when querying integer values from Murl::Color. - Added missing value getters/setters in Graph::IGenericParameter. - Allow to query number of mip levels present in Resource::IImage. - Added "srgb" boolean attribute in scene converter element. - Added IEnums::IsPixelFormatStoringLinearColorValues() function. - Added IEnums::DEPTH_SORT_MODE_VIEW_Z enumeration value. - Catch empty shader output after GLSL optimizer, to prevent a crash in OSX' OpenGL driver shader compiler. - Updated GLSL optimizer. - Misc improvements in shader translator and Util::ShaderBuilder. - Misc improvements in shader resources. - Added Util::IndentString() function. - Added "includeForCondition"/"excludeForCondition" attributes in Graph::Node. - Added Graph::ITexture::SetAutoScaleFactor() method for automatically resizing a texture to a multiple of the current output surface resolution. - Allow frame buffers to globally share renderbuffers to save GPU memory. - Allow attaching the same frame buffer texture(s) to multiple frame buffers. - Added "useMipMapGeneration" attribute in Graph::FrameBuffer to automatically create a full MIP chain after rendering (texture must have "useMipMapping" set to true). - Added "targetMipLevel" attribute in Graph::FrameBuffer to select the target texture MIP level to render to (texture must have "useMipMapping" set to true). - Added some missing pixel format converters & scalers - Improved quality of filtered surface scaling. - Added possibility for gamma-correct surface scaling. - Improved Resource::XmlShader parameterization. - IFeatureSet: Allow to force features enabled/disabled, for debugging purposes. - Added Graph::IListener::SetMaxDistance(). - Added length to Math::Cone. Fixes: - Fixed Graph::Instance now creates Graph::Container nodes for replications. - Fixed Logic::ITimeframe::WasStarted() is reported the tick after Start() instead of the same tick (which matches the behaviour of Logic::ITimeline::WasStarted()). - Fixed a potential crash in Graph::GenericGeometry when updating vertices and/or indices - Fixed Util::ColorToString() for hex strings. - Fixed Graph::NinePatchPlaneGeometry problem when output size is smaller than the sum of the corner sizes. - Fixed incorrectly added zero byte as XML entity in Util::EncodeXml(). - Fixed incorrect parsing of "timelineUnits" attribute in Graph::TimeController. - Fixed static graph instance creation from a package when conditional sub-packages are present. - Fixed a problem when re-initializing any of Graph::GenericParameters and related nodes. - Fixed misc issues with Graph::GenericParameters, Graph::GenericParameter and Graph::GenericParameterGroup. - Fixed treating an SInt32 uniform as a float in GLES2.0 renderer when setting a custom uniform variable. - Added missing GenericResourceArrayTarget::Update() method. - Added missing "UNDEFINED" strings for various enumerations in Murl::IEnums. - Fixed Graph::TextGeometry line offset for multi-line strings. – Fixed Graph::Template attribute evaluation. - Fixed a crash in scene converter when importing an fbx scene without material. - Fixed FBX animation import when multiple animation stacks are present. - Fixed a crash in Graph::AudioSequence when audio source has no stream. Version 1.00.5630Beta API Changes: - Graph::INamespace::UnregisterNode()/UnregisterSubNamespace() now require an additional pointer to the actual object - Reworked Logic::ITouchArea to Logic::IScrollProcessor New Features: - Support for cube maps and/or MIP levels in DDS image resources Improvements: - Updated 3rd party facebook SDK to iOS v3.23.2 and Android v3.23.1 - Added functions to expression evaluator: Murl::Math::Interpolation() e.g. a = Interpolation('EASE_IN', b) Murl::Util::Rng::Seed(), Rand(), RandBool(), RandSInt(), RandReal(), RandDouble() - Added more detailed error messages to expression evaluator. - Added Util::Rng RandDouble() method. - Added String::GetUTF8Char() and String::GetChar() method. - Optimized memory usage for IUrlRequest. - Reworked Logic::ITouchArea to Logic::IScrollProcessor: Added position tracking and bounds with damping. - Graph::FixedParameters nodes now accept multiple parent parameters nodes for modulation - Resource::IImage, Resource::IAudio and Resource::IVideo can now hold multiple data streams - Allow querying the optional bounding volume of a Graph::INode - Allow querying the default controller class info of a Graph::INode Fixes: - Fixed Graph::Template not accepting user-defined attributes - Fixed Graph::Material not updating depth offsets upon initialization - Fixed a bug in the PVR image loader not accepting a proper MIP chain - Fixed an initialization problem in Graph::Transform when using euler angles - Fixed a crash when re-initializing a Graph::FixedParameters node - Fixed Util::GetNormalizedPath() - Fixed unexpected behaviour in Util::Util::GetNormalizedPath() - Setup MURL_IMAGE_CONVERTER shell variable - Misc fixes in scene_converter tool - Added missing controller classes to Graph::IFactory - Fixed an initialization problem in Graph::FrameBuffer - Added some missing forward declarations - Fixed Graph::Anchor update at very first frame - Fixed a crash in Graph::FlatTexture and Graph::CubemapTexture when changing source image resources/video streams at runtime - Fixed parent order for Graph::IReference nodes - Fixed lagging touchable input when moving a camera - Fixed a crash when loading a package failed (regression) - Fixed fullscreen & vsync bugs in DirectX 11.1 platform frontend - Fixed a bug in Android IAP when more than 20 SKUs are queried Version 1.00.5467Beta New Features: - Image Converter command line tool for simple image format conversions Improvements: - Updated 3rd party jpeglib to jpeg-9a - Updated 3rd party libogg to libogg-1.3.2 - Updated 3rd party libpng to libpng-1.6.16 - Updated 3rd party libvorbis to libvorbis-1.3.4 - Updated 3rd party lua to Lua 5.3.0 - Updated 3rd party openal_soft to openal-soft-1.16.0 - Updated 3rd party zlib to zlib-1.2.8 - Lua Addon support for Lua 5.3 64-bit integer numbers - Added "Murl::" scope to factory object macros - Cleanup of IEnums::Feature and IEnums::PixelFormat - Added Util::HasMatchPattern() and Util::IsNameMatching() method for evaluating wildcard patterns. - Atlas Generator support for wildcard patterns in file names Fixes: - Fixed a problem in the package loader when loading/unloading multiple packages in a single batch - Fixed an issue preventing a Graph::Body from correctly updating its parent transform - Initialization fix in Graph::ShaderProgram - Minor de-init fixes in Graph::NodeTarget and similar classes Version 1.00.5358Beta API Changes: - Clearing a frame buffer now always affects the whole target surface instead of the masked region only. New Features: - Atlas Generator support for specifying a minimum output image size: Added attribute. - Introduced a simple expression evaluator (Util::Evaluator), which is also used for parsing XML attributes in a graph resource and tools XML config files. See the "News" section at www.murlengine.com for further details. - Added IEngineConfiguration::GetDefaultGraphParameters(), which can be used to specify custom global constants for scene graph attribute evaluation. Improvements: - Support for Android NDK r10d - Updated 3rd party facebook SDK to iOS v3.22 and Android v3.22 - Updated 3rd party libwebp to libwebp-0.4.2 - Android platform support for low-memory warning, see IAppConfiguration::SetMemoryWarning() - Graph::Button up/down/hover/disabled state can share same nodes - Added Graph::INode::GetPath() method - Added Graph::INode::PrintTree() parameters to include and exclude nodes by NodeFlags - Added Math::StaticMatrix::Zero() and Math::StaticMatrix::Identity() - Added Math::Matrix operator== and operator!= - Added Math::Quaternion operator== and operator!= - Added Math::Rectangle IsEqual(), operator== and operator!= - Added Color operator== and operator!= - Added Logic::Animation::SetIntermediateKeys() method - Added Logic::IState::GetResourceText() method - Added "maxNumberOfStreamBuffers" attribute to Graph::AudioSequence - Reduced app binary size by enabling hidden symbol visibility and dead code stripping Fixes: - Fixed an initialization problem in Graph::Light - Added missing "allowDynamicBatching" XML attribute in Graph::CubeGeometry - Fixed an error when using "exclude" and "include" conditions for a resource in an XML package at the same time. - Fixed a problem when clearing frame buffers on certain devices. - Report an error when a frame buffer texture is bound to multiple frame buffers Version 1.00.5225Beta Improvements: - VS2013 support - Support for Android NDK r10c - Added backbuffer multisampling support for DirectX 9.0 & 11.1 - Updated scene converter FBX SDK to 2015.1 - Improved Graph::Button to allow dynamic setting of state children New Features: - Added Logic::ITimeframe::WasStarted() method Fixes: - Math::Lerp() fixed floating-point arithmetic error if startValue == endValue - Minor initialization fixes to Graph::TextGeometry - Fixed a bug in conditional graph instance creation within a resource package - Fixed Android API level detection beyond level 20 Version 1.00.5139Beta Improvements: - Updated 3rd party facebook SDK to iOS v3.20 and Android v3.20 - Atlas Generator support for rotating images: Added attribute. Added attribute. Added attribute. Added attribute. Added attribute. Fixes: - Fixed Logic::TimeFrame::HasPassedTime() not working at WasRunning() state - Fixed Logic::TimeFrame::Reset() set the current time to zero. Version 1.00.5068Beta API Changes: - Renamed Matrix method SetRotationComponent(DataType angle, DataType ax, DataType ay, DataType az) to SetRotationComponentAxisAngle(DataType angle, DataType ax, DataType ay, DataType az) New Features: - Xcode 6.1 and OSX 10.10 support - Added enumerations to IEnums: TARGET_DEVICE_IPAD_6 TARGET_DEVICE_IPAD_MINI_3 - Added IEnums::RotationOrder enum: currently the default ROTATION_ORDER_ZYX is defined only - Added Euler angle attributes to Graph::Transform class: angleX="0deg", angleY="0deg", angleZ="0deg", rotationOrder="ZYX" - Added Euler angle attributes to Resource::XmlAnimation class: Improvements: - Updated 3rd party facebook SDK to iOS v3.19 and Android v3.19.1 - Added Vector::IsZeroPosition() method - Added Math::Lerp() linear interpolation function template - Added Logic::Animation template typedefs for UInt64 / SInt64 - Added "affectDepthOrder" attribute to Graph::CloneTransform and Graph::ResetTransform nodes, with access methods in Graph::ICloneTransform and Graph::IResetTransform. - Improved manual control over graph/script instances to be created when a Murl::IPackage is loaded. See methods AddGraphInstance(), RemoveGraphInstance(), HideGraphInstance(), UnhideGraphInstance() and equivalent methods for scripts like AddScriptInstance() etc. - Added rotation methods to Graph::ITransformable interface: Bool SetRotation(const Quaternion& q) and Bool SetRotationXYZ(Real angleX, Real angleY, Real angleZ, IEnums::RotationOrder rotationOrder) - Added Matrix method SetRotationComponentXYZ(DataType angleX, DataType angleY, DataType angleZ, IEnums::RotationOrder rotationOrder) Fixes: - Correct display surface size on iOS startup - Improved path query for android sdk build tools - Complete Graph::Transform animation attributes documentation - Atlas Generator more precise error message handling Version 1.00.4990Beta API Changes: - GetText() methods in Resource::ICollection and Resource::IPackage now return a text object instead of a char pointer. Use GetValue() on this text object to retrieve the actual string. New Features: - Added iOS8 platform support - Added enumerations to IEnums: OPERATING_SYSTEM_IOS_8_0 OPERATING_SYSTEM_OSX_10_10 TARGET_DEVICE_IPHONE_6 TARGET_DEVICE_IPHONE_6_PLUS - Added methods to ICustomControlable: AppRegisterUserNotificationSettings() AppHandleActionWithIdentifier() AppHandleEventsForBackgroundURLSession() AppRegisterForRemoteNotification() AppReceiveRemoteNotification() AppPerformBackgroundFetch() - Added CustomControlable base class. - Added methods to IPlatform: GetPlatformConfiguration() GetFileInterface() Improvements: - Updated 3rd party facebook SDK to iOS v3.18 and Android v3.18 - Atlas Generator support for creating multiple images: Added attribute. Added attribute. Added attribute. Added attribute. Added attribute. Added attribute. Added attributes. Added attribute. Added attributes. Added tag. - Array / Index / Map container: Added IsIndexValid() method. - IFile Automatic data resize of empty data for Read(Data& data) method. Fixes: - Stability fixes in various graph nodes - Fixed an issue when running in sequential run loop mode - Fixed incorrectly setting scale factor/active/visible in animation controllers when no such keys are present - Util::SplitString() Fixed adding empty array elements if acceptEmpty is false. Misc: - Added misc interface methods in Murl::Resource namespace for convenience Version 1.00.4820Beta API Changes: - Changed the Resource::IShader interface to allow for shaders of multiple types and languages to be present in a single resource. Existing methods take an additional "shaderIndex" parameter to query a specific shader. - Removed the IEnums::ShaderLanguageVersion enumeration, which was merged into IEnums::ShaderLanguage. - Changed the Graph::IShader interface to allow returning video shader objects based on type (fragment/vertex), if present. Changed the Graph::Shader class to allow referencing shader resources containing both vertex and fragment shaders, and Graph::ShaderProgram to allow for referencing such a shader node via the common "shaderId" attribute. New Features: - Added a fallback mechanism to Graph::IShader and Graph::IProgram, used in case a shader/program fails to compile or link. Improvements: - Addons::Lua::IAddon Added GetGlobal() SetGlobal() methods to enable data exchange from C++ to Lua and vice versa. Fixes: - Renamed misspelled Android build variables: MURL_MODULE_PREBIULT_LIB_... to MURL_MODULE_PREBUILT_LIB_... - Fixed incorrect handling of Graph::Button nodes with respect to multiple cameras/input projections Misc: Version 1.00.4754Beta API Changes: - Changed Murl::IApp class interface: Added 2nd parameter to Configure(IEngineConfiguration* engineConfig, IFileInterface* fileInterface) - Changed Murl::Logic::IState class interface: Renamed GetRecentTickDuration() to GetCurrentTickDuration() - Changed Murl::Logic::BaseProcessor class interface: Renamed GetEngineProcessor() to GetProcessor() - Changed Murl::ILoader class interface: Added overload for AddPackage() with 3 parameters only. - Introduced shared pointers for Murl::Logic interfaces: typedef SharedPointer GraphSoundObjectPtr; typedef SharedPointer IAppGraphPtr; typedef SharedPointer IAppProcessorPtr; typedef SharedPointer IAppStagePtr; typedef SharedPointer IAppStepablePtr; typedef SharedPointer IAppTimelinePtr; typedef SharedPointer INodeObserverPtr; typedef SharedPointer IObservableNodePtr; typedef SharedPointer IProcessorPtr; typedef SharedPointer IStagePtr; typedef SharedPointer IStageProcessorPtr; typedef SharedPointer IStageTimelinePtr; typedef SharedPointer IStepablePtr; typedef SharedPointer IStepableObserverPtr; typedef SharedPointer ITimeframePtr; typedef SharedPointer ITimelinePtr; typedef SharedPointer ITouchAreaPtr; typedef SharedPointer SoundFaderPtr; Changed several interfaces to accept shared pointers instead of raw pointers. To adjust existing code simply replace all '*' by 'Ptr', e.g. IProcessor* to IProcessorPtr. - Renamed all addon files to a consistent naming scheme: murl_addons_[name]_factory.h, murl_addons_[name]_i_addon.h. - Renamed all addon interface classes to a consistent naming scheme: Murl::Addons::[name]::Factory, Murl::Addons::[name]::IAddon. - Introduced shared pointers for Murl::Addons interfaces: typedef SharedPointer IAddonPtr; for namespace Murl::Addons::Facebook, Murl::Addons::Filepanel, Murl::Addons::Openmax and Murl::Addons::Vuforia. To adjust existing code simply replace all '*' by 'Ptr', e.g. Addons::Facebook::IAddon* to Addons::Facebook::IAddonPtr. - Changed Murl::IAppAddonRegistry class interface methods to accept IAddonPtr shared pointers only. - Changed vuforia addon graph nodes XML namespace: e.g. Vuforia::DataSet to Vuforia::Graph::DataSet - Changed addon libraries to separate files for each addon on all supported platforms. - Renamed file murl_logic_graph_sound_fader.h to murl_logic_sound_fader.h - Moved methods from Murl::Util to Murl::Math namespace: Abs(), Min(), Max(), Clamp() and IsEqual(). - Changed Murl::Util string conversion methods StringToDouble() and StringToFloat() to locale independent comma separator '.' - Changed Murl::Enum class interface: Changed GetEnumValue() to GetEnumValueByName(), GetEnumName() to GetEnumNameByValue(), and IsEnumAvailable() to IsEnumValueAvailable(). Added methods to query values/names by index. - Cleaned up enum definition macros in murl_enum.h - Allow multiple controllers per node (see Graph::INode::AddController() and related methods). In addition to specifying a single node controller by e.g. controller.animationResourceId="...", it is possible to create multiple controllers via XML by defining a trailing index after the "controller" attribute part, e.g. controller.0.animationResourceId="..." and controller.1.scriptResourceId="..." New Features: - Lua addon: Adds a wide-ranging integration of the Murl framework to the Lua programming language including script resource handling. - Added package to support scripting (Lua) logic processor(s) instanciated from resource package. - Added Murl::Graph::ILogicController and graph node attribute controller="LogicController" to attach Murl::Logic::IAppGraph class instances. - Added Murl::Graph::IScriptLogicController and graph node attribute controller="ScriptLogicController" to attach scripting (Lua) objects. - Added mutli-byte character support to Murl::String: GetWChars(), SetWChars(), GetUTF16Chars(), SetUTF16Chars(), GetUTF32Chars() and SetUTF32Chars(). - Added Murl::Core::IStatistics interface class. - Added support for 64 bit arm cpu build on iOS. - Added support for x86 intel cpu build on Android. - Added attribute functionality to atlas_generator. - Added custom attributes functionality to atlas_generator. - Added support for 8bit and 32bit index buffers through IEnums::INDEX_TYPE_UINT8 and IEnums::INDEX_TYPE_UINT32, when supported by the GPU. Queryable via IEnums::FEATURE_INDEX_BUFFER_FORMAT_UINT8 and IEnums::FEATURE_INDEX_BUFFER_FORMAT_UINT32. - Added HLSL shader support in DirectX9 renderer (SM 2.0/3.0) - Added cube map support for DirectX 9.0 and 11.1 - Introduced the IEnums::ShadowVolumeGenerationMode enumeration, used in Graph::ResourceShadowGeometry. - Added support for multi targets in Vuforia addon. - Introduced resource path notation analogous to scene graph node paths. In addition to the existing "packageId:resourceId" scheme, it is possible to specify a resource ID as e.g. "/packageId/resourceId". If a resource is referenced from a sub-graph that was also created from a graph resource, it is possible to also use relative paths. In other words, a Graph::FlatTexture node may specify its image resource without explicit package ID when the image is in the same package as the graph resource. - Added culling option for Graph::BoundingBox nodes - Added SetBufferAccessMode() to Graph::IDrawable interface and all implementing node classes - Enabled back-buffer multisample anti-aliasing (MSAA) on iOS and Android via IEngineConfiguration::SetNumberOfAntialiasSamples(), if supported by the GPU. - Introduced XML shader resource type. - Added support for anisotropic texture filtering, via IEngineConfiguration::SetDefaultMaxTextureAnisotropy() and Graph::ITexture::SetMaxAnisotropy() - Introduced depth buffer offsets in Graph::IMaterial, see glPolygonOffset in OpenGL or D3DRS_DEPTHBIAS/D3DRS_SLOPESCALEDEPTHBIAS in DirectX 9 - Allow to chain multiple Resource::ICollections, via SetParentCollection() method - Allow up to 8 parallel slots for cameras and video cullers in the scene graph, accessible via a material's camera slot set by Graph::IMaterial::SetCameraSlot() Improvements: - Added Math::Matrix constructor from different data type - Added convenience constructors in Array and Index classes with 1, 2 or 3 given items. - Show bounding box center/dimensions in scene_viewer tool - Added extended graph node runtime information about class hierarchy, property members and deserializable node attributes - Added GetArea() and IsEmpty() methods and explicit coordinate setters to Math::Rectangle class - Allow "textureSlot" attribute in e.g. Graph::PlaneGeometry without explicitly specifying an index (such as textureSlot.0="42"), which defaults the index to 0. Applicable on various nodes that define attributes in an analogous way (single vs. plural attribute names), such as Graph::Clip (timelineId/timelineIds) or Graph::Material (textureStage/textureStages). - Updated 3rd party glsl_optimizer library. - Updated 3rd party libwebp library to v0.4.0 - Updated 3rd party AssImp library to v3.1.1 - Updated 3rd party facebook SDK to iOS v3.15.1 and Android v3.15.0 Fixes: - Fixed Android ndk make to make use of correct module dependencies. - Fixed a crash when resizing a Graph::FrameBuffer node - Misc fixes and improvements in scene_converter tool - Fixed a bug in Util::VideoSurface when performing a rotated clone operation. - Fixed lighting calculations in fixed shader programs (GLES20, DX111) - Fixed Math::Vector::Clamp() and Math::Vector::ClampLength() - Misc fixes in Math::Matrix - Fixed include dependency in Math::Sphere - Fixed Util::GetRelativePath() and Util::GetAbsolutePath() for paths including a Windows drive letter - Fixed directory creation in System::CLib for different Windows versions - Fixed incorrect handling of Graph::Button nodes with respect to multiple cameras/input projections - Fixed accessors for IEnums::ColorBufferMask, IEnums::DepthBufferMask and IEnums::StencilBufferMask - Fixed not working static graph instance creation from a sub-package via element in the sub-package's package.xml file - Fixed a bug that did not allow to create unnamed Graph::Anchor nodes - Fixed static OpenGL initialization - Fixed a bug in built-in physics body implementation - Fixed several bugs and memory leaks in DirectX 9.0 and 11.1 renderer implementation - Fixed bounding volume recalculation in Graph::Light and Graph::MultiLight nodes - Fixed dynamic setting of Graph::Light properties - Fixed volume extrusion in Graph::ResourceShadowGeometry when using front faces only - Fixed a node initialization problem regarding nested namespaces - Fixed VideoSurfaceTools::EncodeJpgImage() line pitch error Version 1.00.3970Beta API Changes: - Renamed Graph::ISound to Graph::IAudioSource and Resource::ISound to Resource::IAudio. Graph::Sound is still available, but deprecated. Use Graph::AudioSource instead. - Changed IJoystick to IGameController interface, and related interfaces - Renamed "*pass*" methods to "*stage*" in Graph::IMaterial etc. - Split Graph::IController to multiple different interfaces New Features: - Hardware-accelerated video playback (EXPERIMENTAL!). Added Graph::IVideoSource andf Graph::IVideoSequence interfaces, together with Graph::FlatVideoSequenceTexture and Graph::VideoSource nodes. - Added new pixel formats IEnums::PIXEL_FORMAT_B8_G8_R8_A8, IEnums::PIXEL_FORMAT_A8_B8_G8_R8 and IEnums::PIXEL_FORMAT_A8_R8_G8_B8 on supported platforms, queryable via respective IEnums::Feature values. - Added new pixel formats for 16bit and 32bit floating-point textures. - Added multi-planar pixel formats, for YUV encoded streams - Added Util::SampleConverter class. - Added Util::PixelConverter::ColorToPixel() method. - Added Input::IDevice::GetName() and Input::IDevice::GetId() methods for identifying multiple instances of a specific input device type. - Added IControlable::GetName() for the same purpose. - Added IMusicPlayerControl for playing music from the device's library if available. - Added Android In-App Billing V3 - Added Amazon store for Android - Added Samsung store for Android - Added Util::EncodeUrl() and Util::DecodeUrl() - Added support for GameCenter friends. - Lots of new features in scene_converter tool. - Added simple scene_viewer tool. - Added sRGB formats for frame buffers and textures - Added IEnums::MipMapGeneration enum - Added Util::VideoSurfaceTools::EncodeJpgImage() and WriteJpgImageFile() - Added support for different virtual keyboard types on iOS and Android - Added Graph::Timeline blending feature, via multiple timeline units and stages. Added Graph::MultiTimeline - Introduced Graph::IClipSequencer, Graph::IClip and Graph::IClipTransition together with Graph::IVariable for building blended animation sequences - Introduced individual clips in a Resource::IAnimation - Introduced "includeFor*" and "excludeFor*" attributes on Graph::Node instances, analogous to XML resource attributes. Graph nodes can now be conditionally created directly in the graph. - Introduced user-defined configs, via IApp::IsUserConfigurationMatching and "includeForUserConfigurations" - Introduced Graph::Template nodes to specify parameterizable sub-graphs directly in the graph, to be used via Graph::Instance - Introduced morph targets in Resource::IMesh, and Graph::ResourceMeshGeometry - Added Util::TimeToString() methods - Added Util::GeoLocation class - Android "Immersive Full Screen Mode" - OSX native full screen mode support. - Added support for projective light textures. - Supply build projects for rebuilding platform from source - Added System::File::Delete*() and Move*() methods for files and folders - Added System::File::GetItemCreationTime() and GetItemModificationTime() - Added Util::Utf32ToUtf8() - Added simple project creation tool Dashboard Improvements: - Improved game controller support. - Allow dynamic setting of font & font size in Graph::TextGeometry and Graph::FlatTextTexture - Improved iOS suspend/resume - Socket client/server user messaging. - Misc improvements in String, Array and Data classes. - Misc logic processor improvements - Added "startLoop" attribute for Graph::Timeline Fixes: - Setting correct window aspect ratio on startup. - Misc audio-related bug fixes - Fixed Win32 system dialog - Fixed iOS device ID to be conformant with AppStore guidelines. - Fixed Win32 email encoding - Fixed Android startup screen - Misc shutdown fixes. - Misc socket client/server fixes. - Fixed a potential deadlock when creating graph nodes from code. - Fixed & improved iOS auto rotation - Lots of other small fixes. Misc: - Heavily updated interface & class reference API documentation. - Adaptions for XCode 5, iOS 7 and OSX 10.9 - IEnums device cleanup - Updated Facebook addon SDK - Optimized background package loading - Split murl_i_enums.h to multiple files. - Renamed murl_enums.h to murl_enum.h Version 1.00.3083Beta API Changes: - Set "swappable" attribute for Graph::Node to deprecated, introduced "enableAutomaticSwapping" and "enableManualSwapping" instead - Renamed CreateDecodedData() and DestroyDecodedData() to Prepare*/Finish* for IAudioStream and IVideoStream - Changed absolute timeout values to relative ones in System::Semaphore::Wait() - Renamed System::Time::Now() to System::Time::GetNow(), removed Since() method and added GetTickCount() - Renamed mesh_converter to scene_converter, introduced XML config files to improve automation of scene conversion New Features: - Added IAppConfiguration::SetAutomaticResourceEvictionEnabled() to better control memory saving on low-end devices - Introduced Util::EvictableVideoStream and EvictableVideoSurface - Font rendering cleanup - Added Graph::ITexture::SetVideoStream() method to manually set a video stream source from code - Added ETC1 texture compression where available (Android) - Added ILoader::AddGraphInstance() and RemoveGraphInstance() to manually control graph instances created when a package is loaded - Added misc Murl::Util functions - Allow Graph::FrameBuffer nodes to dynamically change dimensions - Added CurrencyCode and PriceValue in Android IAB for PlayStore 4.3.10 and above - Implemented auto rotation on Android Improvements: - Misc renderer object cleanup - Improved engine memory footprint related to sound instances & fixed program creation - Improved Facebook addon session state handling - Optimized rendering performance on iOS devices Fixes: - Misc doxygen comment fixes - Ignore mouse button parameter for touch devices - Fixed a race condition in the GLES 1.1 & 2.0 renderers when creating vertex/index buffers in the background - Misc fixes for certain Android devices (e.g. HTC One) - Misc fixes for Android In-App Billing - Fixed an iOS issue when suspending/resuming audio playback - Fixed an issue when restarting Vorbis audio streams - Fixed a timeout problem in Util::MessageQueue - Minor Android fixes (screen rotation lock, compass device, face up/down ...) - Minor cleanup in Android platform code Version 1.00.2828Beta API Changes: - Added various config items to IPlatformConfiguration - Changed IWebControl::CreateUrlRequest() to not take an URL string. The URL string has to be specified later with the actual URL request object returned. - Cleaned up IUrlRequest interface: Changed IUrlRequest::Post to SendGet() to do a real HTTP GET, added SendPost() for HTTP POST, added GetCurrentDataSize() to check how many bytes have been transmitted so far. - Interface cleanup of Graph::IDrawable and Graph::IGenericGeometry - Updated internal .murl/.murlpkg file revisions to 1.00 Note: Re-run tools in order to update internal revisions of your files! New Features: - Added optional Facebook add-on for iOS and Android - Added Logic::ITimeframe::HasPassedTime() method - Added Graph::ISound::SetBufferType() method for explicitly choosing a sound instance's buffer type (streaming or static) - Added "renderBorder" and "repeatBorder" attributes for atlas_generator config files - Added Resource::IFactory::CreateObjectFromFile() and related methods for runtime-creation of resource objects, together with Logic::IState::GetResourceFactory() to actually access the resource factory for doing so - Added ILoader::QueryPackage() and IPackage::Query() methods for retrieving information about a registered resource package, plus related methods in Resource::IPackage, Resource::IPackageFactory and Resource::ICollection - Added Resource::IArchive resource type - Added Util::Compress() and Util::Uncompress() functions, for comressing and uncompressing custom data using ZLib - Added Graph::IAligner::GetBoundingVolume() to retrieve current bounding volume in OnFinishTick() - Added IPackage::HasFailedLoading() and IPackage::HasFailedUnloading() methods - Introduced the "outputTextureId" attribute in Graph::TextGeometry and Graph::FlatTextTexture to allow for layered text rendering to a single texture - Introduced "offsetX" and "offsetY" attributes in Graph::TextGeometry to specify an X and Y offset for rendering Improvements: - Optimized surface blurring - Changed the OpenAL library to build as a shared lib on Android - Improved Android platform code & tool chain to allow for registering custom JNI classes and controls - Updated Android In-App Billing to Google V3 implementation - Improved handling of custom controls - Introduced a mechanism for certain Android devices (e.g. Galaxy S4) trying to prevent automatic CPU throttling by the OS - Added optional file category for ILoader::AddPackage() - Improved embolding of outline fonts - Renamed "Dx9" namespace to "Dx90" Fixes: - Fixed minor memory leaks - Fixed a bug in Graph::BoxCuller - Fixed a bug in the openal_soft library which caused noticeable noise when sending the app to background - Added a workaround on Android for explicitly setting the target frame rate with IAppConfiguration::SetDisplayRefreshFrequency() - Fixed a bug in Graph::TextGeometry resulting in too large output with a prescale factor of > 1 - Fixed a bug regarding custom file/folder access in Android - Updated resource_packer to print a better response when output file(s) were specified in an incorrect way - Fixed E-Mail handling - Fixed a bug regarding incorrect word wrapping of outline fonts - Fixed a bug regarding automatic text fitting with non-zero borders - Fixed a bug in Graph::TextGeometry preventing correct alignment in conjunction with Graph::Aligner - Fixed Graph::Aligner to not apply spacing between elements for inactive children - Fixed a nasty race condition in Graph::Node::Init() - Fixed a bug regarding touch input handling for orthographic cameras - Fixed a bug in font_converter resulting in a crash when parsing certain true type fonts Version 1.00.2194Beta Improvements: - Enabled dynamic geometry batching if possible. Can be controlled using the "allowDynamicBatching" attribute or the SetDynamicBatchingAllowed() interface method on PlaneGeometry, GenericGeometry and other nodes. - Updated WebP library to v0.3 - Added optional vertex attributes for PlaneSequenceGeometry and PlaneGeometry: Normal/Binormal/Tangent and TexCoord1 - Added Graph::NinePatchPlaneGeometry node - Added Graph::BoundingBox node - Added the Win32 implementation of the IPreferencesControl interface - Introduced the "parentTextId" target attribute for TextGeometry nodes - Added the "allowNpotTexture" attribute for TextGeometry nodes - Added a blur option for TextGeometry and FlatTextTexture nodes - Added the "enableContainerFitting" attribute for TextGeometry nodes - Enabled separate blend functions/equations on GLES 1.1 - Added OutCoord range for Graph::IButton and InCoord range for Graph::IFrameBuffer - Added "vertexColoringEnabled" attribute for FixedProgram node - Added Util::Timeline - Added "activeFaces" attribute for Button nodes - Misc improvements on timelines and logic sound objects - Misc optimizations Fixes: - Fixed a crash in Graph::Aligner when activated - Fixed Graph::Controller incorrectly evaluating at time -1.0 - Fixed a socket address issue on OSX - Fixed children error checking for Reference and ReferenceTransform nodes - Misc minor fixes in GLES and DX9 renderers - Misc logic fixes Version 1.00.2096Beta Important API Changes! You should perform a search&replace operation on your user code in order to incorporate these changes. - Renamed Murl::ISystemFont to Murl::IFont - Unified font attribute names in Graph::TextGeometry and FlatTextTexture, and moved all respective methods to Graph::IFont interface: "systemFontId","fontId" -> "systemFontName" "systemFontSize" -> "fontSize" "systemFontTextColor" -> "textColor" "systemFontBackgroundColor" -> "backgroundColor" Improvements: - Added Truetype and OpenType font embedding support through font_converter and Graph::TextGeomety/Graph::FlatTextTexture - Added border/borderX/borderY attributes to Graph::PlaneGeometry, PlaneSequenceGeometry, TextGeometry and Button, for better content alignment, plus respective interface methods - Added IAppConfiguration::SetSystemDebugInfoItems() to select statistic items to display when the debug package is loaded - Added posX/posY and sizeX/sizeY attributes to Graph::Camera nodes, to select only a sub-region of the output surface to render to - Physics simulator cleanup & improvements - Added "scale" attribute to XML animation files, to set a unified scale factor for all 3 axes - Added Logic::ITimeline::SetCurrentTime() and SetCurrentLoop() methods - Stripped unnecessary debug information from (most) static libs Minor fixes: - Fixed Graph::Camera to consider scissor mask when clearing - Fixed minor memory leaks - Fixed a crash in Graph::TextGeometry when using a prescale factor other than 1 - Fixed a misbehavior in Graph::TextGeometry when re-setting text - Unified QueryTextSize() in Graph::TextGeometry and FlatTextTexture to always return _unscaled_ values - Fixed system font rendering on OSX/IOS (position/cropping issues) - Fixed system fonts to accept a user-defined leading value - Fixed string-to-color conversion to set alpha to 100% when not explicitly specified via a single-value hex string - Container classes: Minor fixes for ObjectArray/ObjectIndex/ObjectMap Version 1.00.1938Beta Important API Changes! You should perform a search&replace operation on your user code in order to incorporate these changes. - Renamed Step()/OnStep() methods to ProcessTick()/OnProcessTick() in ALL locic interfaces and classes - Renamed Animate()/OnAnimate() methods to ProcessFrame()/OnProcessFrame() in ALL locic interfaces and classes - Renamed Identity() to SetIdentity() for Math::Matrix - Renamed Minimum()/Maximum()/MinimumSelf()/MaximumSelf() to Min()/Max()/ MinSelf()/MaxSelf() for Math::Vector - Renamed Length()/LengthSquared() to GetLength()/GetSquaredLength() for Math::Vector - Removed GetLocalEventVelocity() and GetLocalEventAcceleration() for Graph::IButton - Removed GetLocalVelocity() and GetLocalAcceleration() for Graph::IMultiTouchable - Added Graph::IButton::GetLocalEventDelta() - Added Graph::IMultiTouchable::GetLocalDelta() Improvements: - Added FinishTick() and FinishFrame() methods in logic classes - Added Clamp()/ClampSelf() for Math::Vector - Added MinLength()/MaxLength()/ClampLength() and *Self() methods for Math::Vector - Atlas Generator: improved packing strategy and output size calculation - Atlas Generator: added exclude attribute for input files - Added Graph::IAligner interface and Graph::Aligner node - Added Graph::BoxCuller for orthographic cameras - Added system font rendering capability for Graph::TextGeometry - Enabled dynamic texture size change - Enabled Non-power-of-two textures, if enabled by GPU - Added IEnums::FEATURE_LIMITED_NON_POWER_OF_TWO_TEXTURES and IEnums::FEATURE_FULL_NON_POWER_OF_TWO_TEXTURES engine features - Added Math::E constant and Math::Log2()/Math::Log10() functions - Improved error handling for textureSlot attribute in geometry nodes - Added DepthOrderKey element for XML animation resources - Added Util::StringToXXArray() methods - Enabled aspect clipping/borders in Graph::Camera nodes - Added Logic::ITimeline::IsOrWasRunning() method Minor fixes: - Fixed Graph::Camera encapsulated state for input processing - Fixed Video renderer light state handling - Fixed bitmap font vertical size calculation in Font Converter - Fixed matteThreshold comparison in resource images - Fixed SetTextColor() and SetBackgroundColor() in Graph::FlatTextTexture - Fixed Logic::StateMachine Version 1.00.1818Beta Added "materialSlot", "parametersSlot" and "textureSlot" attributes to geometry nodes, together with Graph::IDrawable interface. Updated atlas generator to also support these slots Fixed minor atlas generator issues Fixed input device update issue Fixed animation evaluators for startTime < 0 Version 1.00.1733Beta Initial Public Beta Release