Subversion Repository Public Repository


This repository has no backups
This repository's network speed is throttled to 100KB/sec

Entry Size Revision Updated
fmod 804 Thu 01 Dec, 2016 17:20:59 +0000
Headers 804 Thu 01 Dec, 2016 17:20:59 +0000
openAl 804 Thu 01 Dec, 2016 17:20:59 +0000
sdl_mixer 804 Thu 01 Dec, 2016 17:20:59 +0000
SFXDevice.cpp 3.9K 804 Thu 01 Dec, 2016 17:20:59 +0000

Commits for Divide-Framework/trunk/Source Code/Platform/Audio

Revision Author Commited Message
804 IonutCava picture IonutCava Thu 01 Dec, 2016 17:20:59 +0000

- Singleton elimination update Part I: get it to compile
— The following classes are no longer Singletons: GFXDevice, GL_API, DX_API, SFXWrapper, FmodWrapper, SDLWrapper, ALWrapper, PXDevice, InputInterface, RenderPassManager, SceneManager and ResourceManager;
— Refactor system to a Context / Component based implementation (Pass relevant context to objects: e.g. GFXDevice object to Textures, GUI to GUIElements, etc)
— Make devices and managers components of the kernel
— Allow multiple Resource caches to co-exist. This may prove useful for later when a more fragmented memory model is need (per frame / per scene / global caches / etc)

  • next steps: part II – cleanup/refactor new code, part III – optimise code, part IV – remove remaining Singletons (e.g. Application, ParamHandler, FrameListenerManager, Recast, PostFX and DebugInterface)
801 IonutCava picture IonutCava Sun 27 Nov, 2016 21:28:01 +0000

- More performance analysis guided optimizations.
- Some refactoring to allow later removal of Singletons status for: GFXDevice, SFXDevice, PXDevice, GUI and Input.
— Pass a PlatformContext around objects to access these classes.

788 IonutCava picture IonutCava Fri 21 Oct, 2016 16:11:37 +0000

- Added support for the Arena Allocator by Mamasha Knows (
— Used for GFX Related objects: Textures, shaders, etc

746 IonutCava picture IonutCava Thu 30 Jun, 2016 10:53:30 +0000

- Add multiple playlist support for music.
— Needs more testing
— No cross-fading between tracks because SDL_mixer doesn’t support that.
-— Build cross-fade in the tracks instead?

745 IonutCava picture IonutCava Wed 29 Jun, 2016 20:14:50 +0000

- Added on click sounds for buttons
- Added music playlist options for scenes (configurable via XML)
- Cache sound chunks and music files in SDLWrapper.cpp

743 IonutCava picture IonutCava Tue 28 Jun, 2016 15:55:50 +0000

- More performance tuning:
— Move billboarding related camera variable calculation to shaders instead of CPU
— Replace some DIVIDE_ASSERT calls with regular assert calls in really low level code.
— Some cleanup of the GenericDrawCommand class
— glRegularBuffer does an invalidation call before updating
— Misc changes

715 IonutCava picture IonutCava Fri 27 May, 2016 16:19:22 +0000

- Added initial Fade In / Fade Out post effect (used for scene transitions for now)
- Added a GUI Interface that handles a list of GUI elements (used by GUI and SceneGUIElements)
- Fixed some race conditions related to multi-threaded scene loading (a lot remain to be fixed)
- Improved per-thread GPU sync system a bit
- Simplified Singleton define macros (although we should get rid of singletons all together)

709 IonutCava picture IonutCava Thu 19 May, 2016 16:21:46 +0000

- Massive rewrite of the resource system:
— ResourceCache now uses a map of weak pointers and passes shared pointers to the call point of CreateResource
— RemoveResource is no longer needed, but resource based smart pointers use a custom deleter that calls unload()
— Keep a shared_ptr of the resource in the entity that needs it and pass shared_ptr references from getter methods
-— All of this removed the need for calls to RemoveResource, REGISTER_TRACKED_DEPENDENCY and UNREGISTER_TRACKED_DEPENDENCY reducing the number of mutex locks and atomic exchanges
- Singleton cleanup:
— Removed ShaderManager singleton and merged it’s data and responsibilities in static methods in both ShaderProgram and Shader classes.
Explanation: Due to the complex interdependency chains in the system, copying, updating, tracking the cache in a thread safe way became a lot more slower than a straight forward smart pointer based implementation. (e.g. scene graph nodes have 3d objects and material instances, 3d objects have materials, materials have textures and shaders, etc)

692 IonutCava picture IonutCava Wed 27 Apr, 2016 16:24:26 +0000

- Resource system cleanup:
— Resource name and resource file location (if any) is now passed only via explicit constructors! (ResourceDescriptors already contain this data, so why use setters?)
- Fix a bug with ortho projection matrix calculation (set m[3][3] to 1. this was skipped when the identity() call was changed to zero() in the ortho() function)
— This also fixed text rendering

670 IonutCava picture IonutCava Wed 06 Apr, 2016 16:21:35 +0000

- getInstance() renamed to instance() for simplicity (should really go away altogether, but that’s a different issue)
- some particle emitter threading updates