Changes in PixelLight 1.0.0-R1 (released on August 23, 2012) - Feature: The loadable system can now also deal with file formats which don't have any file extension - Feature: The loadable system can now also deal with file formats like DICOM which load from directories instead of files - Feature: Added support for tessellation control shader (named "hull shader" in DirectX 11) within "PLRenderer" - Feature: Added support for tessellation evaluation shader (named "domain shader" in DirectX 11) within "PLRenderer" - Feature: Added support for geometric primitive instancing within "PLRenderer" - Feature: Added "55RendererTessellation"-sample - Feature: Added "56RendererInstancing"-sample - Feature: Added shaders based scene renderer pass "PLCompositing::SRPDebugDepthShaders" visualizing the depth buffer for debugging purposes - Feature: Added shaders based scene renderer pass "PLCompositing::SRPMotionBlurShaders" for image based motion blur - Feature: Autodesk 3ds Max 2013 scene exporter added - Feature: Added plugins for volume rendering - Change: Moved out-of-date "PLScene::SNSky" and "PLScene::SNTerrain" into the new plugin project "PLNature" ("PLNature::SNSky", "PLNature::SNTerrain") - Change: Moved "PLPhysics::SNMPhysicsBodyTerrain" into "PLNature::SNMPhysicsBodyTerrain" - Change: Updated from "Cg Toolkit 3.1 - February 2012" to "Cg Toolkit 3.1 - April 2012" - Change: Updated from "SQLite 3.5.6" to "SQLite 3.7.13" - Bugfix (ID: 3502066): "PLGraphics::Color4::IsValid()" alpha-check was invalid - Bugfix (ID: 3512436): "pl_implement_class(Keyboard)" was missing within "PLInput" - Bugfix (ID: 3514155): The ingame console was processing input events received while the main window had no focus - Bugfix (ID: 3531730): "PLScene::SceneContainer::SetHierarchy()" did not assign the new given hierarchy type - Bugfix: "PLRenderer::Texture::SetTextureBuffer()" did not update the original texture size - Bugfix: "PLRenderer::EffectLoaderPL::LoadV1()" was not loading the "Name"-attribute of techniques - Bugfix: When loading a new resource, PLViewer/PLViewerQt did not destroy the currently used script Changes in PixelLight 0.9.11-R1 (released on February 23, 2012) - Feature: Beside "Scene" and "Script", "PLViewer" is now also able to load in "Mesh", "Material" and "Image" (= texture) - Feature: Within the PLFrontendQt adapter project, there's now an interactive realtime RTTI browsing GUI - Feature: Added dock widgets to the PLFrontendQt adapter project which can be instanced and used via the PixelLight RTTI system in a generic way - Feature: Added Qt based PixelLight viewer named PLViewerQt which is similar to the minimalistic PLViewer, but more advanced and with support for the PLFrontendQt dock widgets - Feature: "PLRenderer::VertexBuffer": Added support for the "half" data type (16 bit floating point) - Feature: "PLRenderer::VertexBuffer": Added generic comfort methods "GetFloat()" and "SetFloat()" - Feature: Implemented "PLCompositing::SRPBackgroundColorGradient" which can be used for a simple color gradient background - Feature: It's now possible to create RTTI class instances via script - Feature: Added position, rotation and scale transform gimzo scene node modifiers - Feature: Added "Fast Approximate Anti-Aliasing" (FXAA) support within "PLCompositing" - Feature: Added volume texture compression (VTC, "GL_NV_texture_compression_vtc"-extension) support - Feature request ID: 3486884: Added "PLCore::MemoryManager::Move()" - Feature (Windows): Added support for "LuaJIT", a Just-in-time (JIT) compiler for Lua - Change (Windows): Updated Qt from "4.7.0" to "4.8.0" - Change: Updated from "Cg Toolkit 3.0 - February 2011" to "Cg Toolkit 3.1 - February 2012" - Removed: "PLViewerStandalone", use "PLViewer" instead and provide "PLViewer.cfg" in it's executable directory for standalone-mode - Bugfix: "PLRendererOpenGLES2" font rendering worked on "Tegra 2", but failed on "PowerVR SGX 540" - Bugfix: Now taking into account odd OpenGL ES 2.0 "gl_FragColor" behaviour on "LG P920 Optimus 3D" (PowerVR SGX 540, Android 2.3.5, "Link Error: Fragment shader was not successfully compiled.") - Bugfix: "PLRenderer::VertexBuffer::ClearVertexAttributes()" was not resetting the size of the vertex buffer - Bugfix: Indices were swapped within "PLMath::EulerAngles::ToMatrix()" and "PLMath::EulerAngles::FromMatrix()" resulting in the inverse of the orthogonal rotation matrix Changes in PixelLight 0.9.10-R1 (released on December 23, 2011) - Feature: There's now official 64 bit support (no prebuild SDK, but building PixelLight is easy and described in detail within the "PixelLightBuild"-document) - Feature: Added Mac OS X support (>=10.6, "PLRendererOpenGL"-port is still under construction) - Feature: Added "PLInput::SplitTouchPad": This is a gamepad device emulation by using a touch screen making it possible to e.g. move & look at the same time, Android backend implemented - Feature: Added support for 2D array textures within the renderer (kind of 3D texture, but without filtering between the depth layers) - Feature: Added scene node modifier "PLEngine::SNMEgoLookController" for restricted 3D look around and "PLEngine::SNMEgoOrbitingController" for restricted 3D orbiting - Feature request ID: 3443487 (Windows): Added critical section support to the mutex implementation - Feature request ID: 3439371: Added method "PLCore::Socket::IsDataWaiting()" - Feature: Added "PLRenderer::TextureBuffer::DownloadAsImage()" downloading texture data from the GPU as "PLGraphics::Image" instance which can e.g. be used to save the data easily - Feature: Added comfort renderer program wrapper "PLRenderer::ProgramWrapper" and ease of use methods within "PLRenderer::ShaderLanguage" and "PLRenderer::UniformBuffer" - Feature (not part of the prebuild SDK): Added "PLUnitTests" and "PLUnitTestsPerformance" basing on UnitTest++ (http://unittest-cpp.sourceforge.net/) as replacement for the old unit tests - Change: Various minor bugfixes and usability improvements within the CMake based build system to make building PixelLight across multiple platforms as painless as possible - Change: Made more methods inline in order to give the compiler a chance to optimize out function calls - Change: Renamed the document "PixelLightCodingConventions" into "PixelLightConventions" and continued to add more details - Change: "PLRendererOpenGL" is now making the upload and the on-the-fly compression of 3D textures easier for the graphics driver in case extensive texture data is given (reduces the risk of a driver crash) - Bugfix (ID: 3431174): Within the "PLCore::System"-constructor, the main thread was created incorrectly - Bugfix (ID: 3433006): The return value of "PLCore::FileObject::GenericMove()" and "FileObject::PLCore::GenericCopy()" was always "false" - Bugfix (ID: 3433854): The Autodesk 3ds Max scene exporter options "PL directories" and "Subdirectories" did not work correctly - Bugfix (ID: 3442054): "PLCore::Connection::Receive()" called "PLCore::Connection::OnReceive()" with the fixed buffer size, instead of with the number of received bytes - Bugfix: PLProject was not parsing "pl_module_active" and "pl_module_delayed" - Bugfix: "PLRendererOpenGL::Renderer::ChooseFormats()" was also returning compression formats even when the data type of the given image was not "byte" - Bugfix: "PLEngine::SNMOrbitingController": The rotation axis were inverted - Bugfix: "PLScriptLua"-plugin: Setting a boolean RTTI attribute by writing e.g. "MyRTTIObject.MyBooleanAttribute = true" within a Lua script didn't work Changes in PixelLight 0.9.9-R1 (released on October 23, 2011) - Feature: Added Android support (>=2.3, Gingerbread, android-9 API level) - Feature: "PLRendererOpenGLES2" now also supports desktop PC GPU drivers capable of native OpenGL ES 2.0 instead of just an emulator when developing on a desktop PC - Feature: "PLRendererOpenGLES2" now supports the following extensions: GL_EXT_texture_compression_s3tc, GL_EXT_texture_compression_dxt1, GL_EXT_texture_compression_latc, GL_EXT_texture_filter_anisotropic, GL_EXT_Cg_shader, GL_AMD_compressed_3DC_texture, GL_NV_get_tex_image, GL_OES_mapbuffer, GL_OES_element_index_uint, GL_OES_texture_3D, GL_ARB_draw_buffers, GL_NV_fbo_color_attachments, GL_NV_read_buffer, GL_ANGLE_framebuffer_blit, GL_ANGLE_framebuffer_multisample, GL_OES_packed_depth_stencil, GL_OES_depth24 and GL_OES_depth32 - Feature: The plugin "PLAssimp" using "ASSIMP - Open Asset Import Library" is now also able to load in complete scenes (without merging everything into one huge mesh) - Feature: Added string encoding format option to "PLCore::File::Open()" in order to support read and write of Unicode text files - Change (Linux): Tweaked the compiler and linker settings to reduce the binary size - Change (Windows): "PLFrontendQt" includes simplification: "Include\Qt" instead of "Include\Qt\Qt" - Change: When developing with PixelLight, the registry key (or environment variable) is now only used as fallback in case PLCore is used statically, so, usually you no longer need this registry key - Change: Layout changes within the LaTex documents - Change: "PLInput": Changed the names of some controls for a more uniform naming schema to make it easier to guess e.g. the control name of a keyboard key - Change: Updated the free open source particle engine "SPARK" (http://spark.developpez.com) to version 1.5.5 - Change: Added enhanced "PixelLightBuild"-document as replacement for the "BUILD" text file (got confusing as it grew) - Change: Text based log formatter implementations are now using UTF-8 instead of ASCII - Change: Updated FMOD Ex from version "4.32.08" to "4.36.04" (has Android support) - Change: Updated sample sound files to make them work with FMOD Ex as well - Removed: Legacy pbuffer support within "PLRendererOpenGL" - Bugfix: Loop and 2D are now working within the FMOD Ex sound backend - Bugfix: PLRendererOpenGL & PLRendererOpenGLES2: Automatic texture decompression was broken ("Passing "empty" images to the GPU no longer creates internal image data"-change in PixelLight 0.9.6-R1) - Bugfix: "PLEngine::EngineApplication": The clear color hint within scenes was broken - Bugfix (Windows): "PLFrontendOS::OSWindowWindows::SetPositionSize()" was not setting the window size correctly (the window border must be ignored) - Bugfix (Linux): "PLFrontendOS::OSWindowLinux::GetX()" & "PLFrontendOS::OSWindowLinux::GetY()" were not returning the window position correctly (window decoration issue) - Bugfix: "PLFrontendPLGui" was not returning and setting the window size correctly (the window border must be ignored) - Bugfix: Uncompressed dds images with mipmaps and "DDS_LINEARSIZE" set were not loaded correctly - Bugfix: The properties of RTTI classes were not registered as expected: Only the properties of the direct base class were registered, but not the properties the base class received from it's base classes - Bugfix: There were situations were "PLEngine::Picking::MeshIntersection()" failed when the intersection line start position was inside the scene node to test against - Bugfix: "PLCore::Tokenizer" is now able to deal with Unicode as well Changes in PixelLight 0.9.8-R1 (released on August 23, 2011 - one year after the first public PixelLight release and nearly 9 years after development start on September 16, 2002) Please note that this release comes with several breaking changes with the goal to simplify the overall structure of PixelLight, have a look into the diaries (Git repository) for details - Feature: Applications, including their lifecyle, are now controlled by frontends in order to make the PixelLight technology usable for more use cases - Feature: Added a null frontend without any GUI involved, useful for example when only rendering into background buffers - Feature: Added a lightweight native OS frontend - Feature: Added a frontend for PixelLight's own GUI system (uniform for OS & ingame) perfectly integrated into the complete system - Feature: Added a frontend and adapter for Qt (Qt is a cross-platform application and UI framework, http://qt.nokia.com/) to bring PixelLight and Qt together - Feature: Added plugin "PLAssimp" using "ASSIMP - Open Asset Import Library" in order to provide loader implementations for 3ds, obj, Blender, Collada etc. - Feature: Now using the new language keyword "override" from C++0x in order to give the compiler a chance to detect and blame more errors related to overwriting methods - Feature: Clang (http://clang.llvm.org/) v3.0 (currently in development) is now supported - Feature: Connected "PLInput::Control" to the RTTI as well as the derived classes "PLInput::Axis", "PLInput::Button", "PLInput::Effect" and "PLInput::LED" (meaning they can now be used e.g. by scripts) - Feature: The scripted stand-alone application "45ScriptApplication.lua" now also shows how to get and process input events by using scripts - Feature: Linux: Added fullscreen rendering support - Change: Moved the "PLProject"-executable from the runtime directory into the tools directory - Change: Merged "Demos" into "Samples" in order to simplify the structure of PixelLight - Change: Merged "PLGeneral" into "PLCore" in order to simplify the structure of PixelLight - Change: "PLCore::Url": Renamed "GetTitle()" into "GetCompleteTitle()" and added some more filename title/extension related methods - Change: Moved "SNMPhysicsCharacter" and "SNMPhysicsCharacterController", primary intended for rapid prototyping, from "PLPhysics" into "PLEngine" - Change: Moved "SNMCameraZoomController", "SNMLookController", "SNMMoveController" and "SNMOrbitingController", primary intended for rapid prototyping, from "PLScene" to "PLEngine" - Change: Merged documentation for "PLCore", "PLDatabase", "PLMath", "PLGraphics", "PLRenderer", "PLMesh", "PLScene", "PLPhysics", "PLSound", "PLInput", "PLGui", "PLEngine" into "PixelLightBase" - Change: The sample applications are now using "PLInput" instead of "PLGui" to get and process input events - Change: "PLMath::GraphManager" and "PLMath::GraphPathManager" are no longer singletons - Change: Renamed "PLPluginActiveX" into "PLFrontendActiveX" - Change: Renamed "PLPluginMozilla" into "PLFrontendMozilla" - Change: Updated experimental frontends for Mozilla and ActiveX so you can run your PixelLight applications also for example within a browser window - Change: Renamed "PLXmlText" into "PLGuiXmlText" to make clear that this project is PLGui related and not for instance a generic XML parser library - Change: Renamed "PLCore::Core" into "PLCore::Runtime" and added more runtime related methods in order to it more comfortable to work with the PixelLight runtime - Change: Updated zlib from "1.2.3" to "1.2.5" - Change: Updated PCRE from "8.10" to "8.12" - Change: Updated libpng from "1.4.5" to "1.5.4" - Change: Updated libjpeg from "8b" to "8c" - Change: Updated FreeType from "2.3.12" to "2.4.6" - Removed: Outdated "PLDefaultFileFormats" (use "PLAssimp" instead) - Removed: Currently experimental browser plugins from the public SDK because they are not yet ready to be used and therefore may cause confusion - Bugfix: PLProject: Although not recommended, it's possible that there are multiple RTTI classes defined within a single file, PLProject can now also deal with this case - Bugfix: Linux: Fixed keyboard issue regarding to key modifiers (e.g. "a-down"->"shift-down"->"a-up" => "a-up" event came only after releasing the shift key) Changes in PixelLight 0.9.7-R1 (released on June 23, 2011) - Feature: Added a generic, script language independent, script interface within the PLCore component with support for - Global variables - Global functions (C++ calls script and script calls C++) - RTTI objects (properties, attributes, methods, signals, slots) - Namespaces - Feature: Added the script backend PLScriptLua which adds support for Lua - Feature: Added the experimental (in Git repository) script backend PLScriptV8 which adds support for JavaScript by using V8 (ECMA-262 compliant JavaScript engine) - Feature: Added the experimental (in Git repository) script backend PLScriptPython which adds support for Python - Feature: Added the experimental (in Git repository) script backend PLScriptAngelScript which adds support for AngelScript - Feature: Added plugin PLScriptBindings which exposes certain parts of PixelLight to script languages - Feature: The tool PLViewer can now also run scripted stand-alone applications instead of just showing scenes - Feature: Added demo Lua script "PLDemoSimpleScene.lua" which is a Lua port of the C++ PixelLight SDK demo "PLDemoSimpleScene", use e.g. PLViewer to run the script - Feature: Added "PLEngine::ScriptApplication" to the application framework, this class can load in and execute a given script out of the box - Feature: Added the C++ demo "PLDemoScriptApplication" showing how to use "PLEngine::ScriptApplication" in order to load in and execute a scripted stand-alone application - Feature: Added support for non-power-of-two textures (NPOT) - Feature: Added delayed shared library loading for plugins to speed up the program start and to reduce memory consumption - Feature: Completion of the internal string buffer manager to improve the overall string performance - Feature: Exposing C++ class methods to the RTTI has no longer an impact on the RTTI class instance memory requirements - Change: Changed event emit, to emit an event named "MyEvent" call "MyEvent()" instead of "MyEvent.Emit()" - Bugfix/Workaround: God-rays and HBAO were not working on "ATI Catalyst 11.3 driver" and "ATI Catalyst 11.5 driver" - Bugfix: Using the scene node debug flags "DebugContainerAABBox" and "DebugContainerSphere" together produced an graphics error - Bugfix: PLProject is now using the PLGeneral XML classes to write down plugin-files, this way strings within those plugin-files are always correctly encoded - Bugfix: PLCore: There was an issue when using a reference type as RTTI method result Changes in PixelLight 0.9.6-R1 (released on April 23, 2011) - Feature: Added new plugin "libRocket_PL" which integrates the free open source HTML/CSS game interface middleware "libRocket" (http://librocket.com/) into PixelLight - Feature: Added new demo "PLDemo_libRocket" showing how to use the new "libRocket_PL"-project within C++ projects - Feature: PLRenderer: Added uniform buffer (UBO, aka constant buffer) support, have a look at the PLDemoRendererTriangle demo project for an example how it can be used - Feature: Added another SSAO algorithm "PLCompositing::SRPDeferredSPAAO" which comes with a good performance while still looking ok - it's now the default SSAO algorithm - Feature: In order to use vertex texture fetch within "PLCompositing::SRPEndHDR", one must now set the new "UseVertexTextureFetch"-flag (we had some VTF GPU driver issues) - Feature: "PLGeneral::Url": Added UNC (Uniform Naming Convention aka Universal Naming Convention) support - Feature: Added "PLCompositing::SRPDeferredVolumetricFog" which is a special version of "PLCompositing::SRPVolumetricFog" for deferred rendering (better performance) - Feature: PLCompositing: "SRPLighting" & "SRPDirectionalLightingShaders" & "SRPDeferredGBuffer" are now using a material cache to reduce required CPU time (better performance) - Feature: Added methods to "PLGraphics::Image" to make it possible to copy, takeover and share user provided image data - Feature: Autodesk 3ds Max 2012 scene exporter added - Change: Updated from "Cg Toolkit 3.0 - November 2010" to "Cg Toolkit 3.0 - February 2011" - Change: "PLGeneral::System::GetMicroseconds()" and similar methods worked with 32 bit unsigned integer, changed to 64 bit unsigned integer - Change: PLMath: The operators <, >, <= and >= of Vector2i, Vector3i, Vector2, Vector3 and Vector4 are now using a lexicographical order - Change (Windows): The PL SDK now comes with the new "Microsoft Visual C++ 2010 SP1 Redistributable Package" and is build with MSVC 2010 SP1 - Change: "PLRenderer::GeometryShader" input/output primitive type and the number of output vertices can now be set by the user - Change: Updated "Newton Game Dynamics" from "2.24"(Linux)/"2.28"(Windows) to "2.32" (first free open-source version of this physics library) - Change: "SPARK_PL": Renamed previously experimental "SPARK_PL::SNFireDemo" scene node into "SPARK_PL::SNFire" - Change: "SPARK_PL": Separated renderer classes for fixed functions (was already implemented) and shaders (added implementation) - Change: Performed some minor physics joint scene node modifier refactoring to enhance the usability - Change: "PLCore::ConsoleApplication::OnInitData()" is now using English as the default language instead of the current system locale, this makes things more predictable - Bugfix: Added "Data/Misc/PixelLight_English.loc" to "Standard.zip" to fix the log message "[Error]: Can't open the file 'Data/Misc/PixelLight_English.loc' to load in the loadable 'Localization'!" - Bugfix: Fixed some problems with the GLSL shaders when using a NVIDIA graphics card or ATI graphics drivers from around 2009 - Bugfix: Linux: PLRendererOpenGL: "glXSwapIntervalSGI" was used without been defined, initialized or checked... - Bugfix: The swap interval (vertical synchronisation) setting is now working (as long as it is not overwritten by the GPU driver) - Bugfix: "PLGraphics:ImageData::Decompress()": There was an buffer overflow when decompressing images with none-multiple of 4 dimensions - Bugfix: If necessary, joint scene node modifiers need to transform the joint position and direction(s) into the physics world scene container - Bugfix: PLRendererOpenGL: When using a depth buffer texture format (D16, D24, D32) "FrameBufferObject::Initialize()" was also adding a color buffer, fixed that - Bugfix: PLRendererOpenGL: "gl_PointSize" in GLSL and "PSIZE" in Cg had no effect because "GL_VERTEX_PROGRAM_POINT_SIZE_ARB" was not enabled - Bugfix (ID: 3286541): "PLGeneral::XmlElement::GetLastAttribute()" was returning the first instead of the last attribute Changes in PixelLight 0.9.5-R1 (released on February 23, 2011) - Feature: New plugin "SPARK_PL": Integrates the free open source particle engine "SPARK" (http://spark.developpez.com) into PixelLight - Feature: Added new demo "PLDemoSPARK_PL" showing how to use the new "SPARK_PL"-project within C++ projects - Feature: Added new demo "PLDemoPicking" showing how picking works - Feature: "PLGraphics": Added basic support for half as image data format - Feature: "PLGraphics::ImageLoaderDDS": Added support for half/float images - Feature: "PLGraphics::ImageLoaderJPG": Added "fancy upsampling" and "interblock smoothing" as optional load parameters and "quality" as optional save parameter - Change (Windows): Migrated from Microsoft Visual Studio 2008 to Microsoft Visual Studio 2010 as the main development IDE - Change (Windows): OpenAL: Updated "OpenAL32.dll" from "6.14.357.22" to version "6.14.357.24", updated "wrap_oal.dll" from "2.1.8.1" to version "2.2.0.5" - Change (Windows): Updated "Newton Game Dynamics" from "2.24" to "2.28" - Change: Migrated from "NULL"-definition for a null pointer to "nullptr" introduced by C++0x and already supported by multiple modern compilers - Change: Migrated from C style casts ("int i = (int)42.21f") to C++ style casts ("int i = static_cast(42.21f)") - Change: "PLGeneral::String": Refactoring of the UTF8 support for better interaction with other libraries and frameworks like Qt - Change: Moved the somewhat out-dated particle group base class "PLScene::SNParticleGroup" into the "PLParticleGroups" plugin project - Change: Updated libogg from "1.2.0" to "1.2.2" - Change: Updated libvorbis from "1.3.1" to "1.3.2" - Change: Updated from "Cg Toolkit 3.0 - July 2010" to "Cg Toolkit 3.0 - November 2010" - Change: Updated OpenEXR from "1.4.0" to "1.6.1" - Change: "PLPhysics::SNMPhysicsBody": Made following attributes to flags: InitFrozen->InitUnfrozen, AutoFreeze->NoAutoFreeze, UseGravity->NoGravity, UseRotation->NoRotation - Bugfix: The PLImageLoaderEXR plugin was broken, loading exr (high dynamic range image file format) images is working again - Bugfix: "PLGraphics::IEConvert" e.g. RGB to RGBA is now working for floating point image formats - Bugfix: "PLGraphics::IEScale" was not always working correctly - Bugfix: "PLPhysics::SNMPhysicsCharacterController" rotation was broken in "PixelLight 0.9.4-R1" - Bugfix: "PLGraphics::ImageLoaderJPG": Saving a given RGBA image was not working - Bugfix: "PLScene::SceneNode::DirtyAABoundingBox()" was buggy, this caused e.g. particle effects to be "culled to early" - Bugfix: "PLMath::Math::GetRandNegFloat()" was broken Changes in PixelLight 0.9.4-R1 (released on December 23, 2010) - Feature: Linux 64 bit support for a minimal build added (64 bit support for optional projects not yet added) - Feature: Added basic PLDemoRendererTexturing demo - Feature: Added "PLEngine::SceneRendererTool" helper class for simplified scene renderer access - Feature: Autodesk 3ds Max 2011 scene exporter added - Feature: Performance improvements within the string implementation - Feature: Added a static adapter class within PLGeneral for mapping Qt strings to PixelLight strings and vice versa - Change: Integrated "PLCompositing::SRPPostProcessing" into the compositing system, now it's possible to use post processing within the deferred scene renderer - Change: Moved nearly all compositing relevant classes from PLScene to PLCompositing - Change: Scene graph update refactoring for less CPU usage - Change: All file loader implementations now also have versions of the filename extensions written in capital letters (e.g. beside "tga" also "TGA") - Change: Updated libpng from "1.2.44" to "1.4.5" Changes in PixelLight 0.9.3-R1 (released on October 23, 2010) - Feature: Added support for "LATC1" and "LATC2" (formally "3DC"/"ATI1N"/"ATI2N" on ATI GPU's only) texture compression - Feature: Cg shader language support is now optional (PLRendererOpenGLCg plugin) instead of directly build in within PLRendererOpenGL - Feature: Deferred scene renderer and HDR compositing steps are now supporting GLSL as well instead of just Cg - Feature: Added MinGW support to the header file "PLGeneralWindows.h" from "PLGeneral" - Feature: Input control scene nodes and scene node modifiers are now using virtual input controllers instead of accessing input devices directly - Feature: Within "PLScene::SceneApplication::OnInputControllerFound()", input control can be changed (e.g. assigning other keys) - Feature: Deferred scene renderer performance improvements (if the CPU is the bottleneck) - Change: Updated from "Cg Toolkit 2.2, February 2010 Release" to "Cg Toolkit 3.0 - July 2010" - Change: Introduced new "PLRenderer::ShaderLanguage" interface, removed "CreateShader()" and "CreateProgram()" within "PLRenderer::Renderer" - Change: Camera zoom input control modifier "PLScene::SNMCameraZoom" was replaced by "PLScene::SNMCameraZoomController" - Change: "PLPhysics::SNMPhysicsCharacterController" is now using a virtual input controller instead of accessing input devices directly - Change: "PLPhysics::SNPhysicsMouseInteraction" is now using a virtual input controller instead of accessing input devices directly - Change: "PLScene::SNMMoveController" is now using a virtual input controller instead of accessing input devices directly - Change: "PLScene::SNMOrbitingController" is now using a virtual input controller instead of accessing input devices directly - Change: New "PLScene::SNMLookController" scene node modifier as replacement for "PLScene::SNMMouseLookController" - Change: Renamed "PLScene::SNMMouseOrbitingController" scene node modifier into "PLScene::SNMOrbitingController" - Removed: Old shader interface within PLRenderer - Removed: "PLScene::SNMMouseMoveController", use "PLScene::SNMMoveController" with virtual input controller instead - Bugfix: Within some GLSL shaders, the not specified "clamp(float, int, int)" was used, which didn't work on every system - Bugfix: Fixed PLDemoRendererRTT graphics bug - Bugfix (Windows): The precompiled PLDemoNetworkChat binary within the SDK is now a correct console application - Bugfix: "PLGeneral::String" < and > operators fixed Changes in PixelLight 0.9.2-R2 (released on August 27, 2010) - Bugfix (Windows): Wrong dependency to debug version of MSVC runtime fixed (libfreetype) Changes in PixelLight 0.9.2-R1 (released on August 23, 2010 - first public PixelLight release) - Feature: The PLGui project was replaced by it's third complete refactoring - Feature: Added XML versions of the PixelLight chunk and the PixelLight mesh file format - Feature: Linux port improvements, PixelLight now runs as a whole under Linux as well - Feature: OpenGL ES 2.0 renderer backend for mobile devices - Feature: Initial support for the mobile platform Maemo (used for example by Nokia N900) - Feature: PLInput now also supports device output controls such as rumble and force-feedback effects as well as control over device LEDs - Feature: PLInput now also supports virtual devices for device control mapping - Change: Application framework refactoring - Change: PLInput refactoring - Change: Renamed PLEngine project into PLScene - Change: Added new PLEngine project - Change: Merged PLCompositingFixedFunctions and PLCompositingShaders into one common PLCompositing project - Bugfix: Various bugfixes within PLSound and it's backend implementations like PLSoundOpenAL - Removed: Debug dialog (new "ingame"-edit features will follow with one of the next PixelLight versions) - Removed: Loadable type search paths, write for example "Data/Meshes/MyMesh.mesh" instead of "MyMesh.mesh" Changes in PixelLight 0.9.1-R3 (released on July 01, 2010) - Feature: PLRenderer now contains a complete new font interface - Change: "PLRenderer::DrawHelpers" refactoring, internally, there's a fixed functions and shaders based implementation Changes in PixelLight 0.9.1-R2 (released on June 22, 2010) - Feature: PLRenderer now contains a complete new shader interface with vertex, geometry and fragment shader support - Feature: PLRendererOpenGL supports now the shader languages GLSL and Cg instead of just Cg - Change: Moved the fixed functions based scene renderer passes from PLEngine into the new plugin project PLCompositingFixedFunctions - Change: Moved the shaders based scene renderer passes from PLEngine into the new plugin project PLCompositingShaders - Change: "PLRendererOpenGL::RendererOpenGL" renamed into "PLRendererOpenGL::Renderer", same for PLDatabase, PLSound and PLPhysics - Change: To enhance the flexibility, PLRenderer and it's backends no longer dependent on PLGui - Change: "SRPForwardDepth" was replaced by the more universal "SRPDiffuseOnly" - Change: "SRPForwardAmbient" was replaced by the more universal "SRPDirectionalLighting" - Change: "SRPForwardLighting" was replaced by the more universal "SRPLighting" Changes in PixelLight 0.9.1-R1 (released on June 1, 2010) - Feature: PLCore now contains a complete new, even more powerful RTTI system which comes with an extensive documentation - Feature: "EffectWeight" parameter added to all post process effect scene node modifiers to blend the effect smoothly in/out - Feature: New samples for programmers - Change: Previous samples renamed into demos and refactored - Change: Due RTTI usage, "Loader"/"Loadable" and associated classes moved from PLGeneral to PLCore - Change: Due RTTI usage, "Resource" and associated classes moved from PLGeneral to PLCore - Change: Due RTTI usage, "Chunk" and associated classes moved from PLGeneral to PLCore - Change: Due RTTI usage, "Localization" and associated classes moved from PLGeneral to PLCore - Change: "PLEngine::SceneNode" is now using the new "PLMath::Transform3" which can be accessed by using "PLEngine::SceneNode::GetTransform()" - Change: The PixelLight documentation CC licence is now "Attribution-NonCommercial-ShareAlike 3.0 Unported" instead of "Attribution-Share Alike 3.0 Unported" - Change: "PLSceneViewer" moved from "PLSamples" to "PLTools" and was renamed into the more general "PLViewer" - Change: Moved "3dsMax" directory into the "Tools" directory - Change: "PLGeneral::Log" moved from the directory "Tools" into the directory "Log" - Change: The standard log filename is now "PLLog.txt" instead of "pllog.log" - Removed: Old RTTI system within PLGeneral - Removed: Depreciated "ExtendedSceneApplication", use picking classes "Picking", "PickingResult" and "MousePicking" instead Changes in PixelLight 0.9.0-R2 (released on Mai 4, 2010) - Feature: PLMath::Half offers methods to deal with half values (16 bit floating point) - Feature: SNMPhysicsUpdateVelocity added, if this scene node modifier is added, static bodies influence dynamic bodies if they move - Change: PLRenderer::TextureBuffer interface improvements - Bugfix: Fixed situations within the deferred scene renderer resulting in NANs - Removed: Scene node PLEngine::SNClear, this functionality is now done by the scene renderer pass PLEngine::SRPBegin Changes in PixelLight 0.9.0-R1 (released on April 16, 2010) - Feature: New PLXmlText project, define website like GUI content using XML files - Feature: New scene renderer "Deferred.sr" for modern deferred rendering - Feature: "Horizon Based Ambient Occlusion" (HBAO) support for the deferred scene renderer - Feature: "High Definition Ambient Occlusion" (HDAO) support for the deferred scene renderer - Feature: "Glow" support for the deferred scene renderer - Feature: "Depth Of Field" (DOF) support for the deferred scene renderer - Feature: "God Rays" support for the deferred scene renderer - Feature: "EdgeAA" support for the deferred scene renderer for simple anti-aliasing - Feature: "Depth fog" support for the deferred scene renderer - Feature: Added "Reinhard Tone Mapping" for converting rendered images from HDR into LDR - Feature: HDR gamma correction for linear space to sRGB space conversion when the rendering is done - Feature: Logarithmic average luminance calculation for automatic HDR exposure - Feature: HDR light adaptation, simulates the gradual adaptation of the human eye to different lighting conditions - Feature: HDR bloom - Change: The material parameter "ReflectionMapColor" was renamed into the more universal "ReflectionColor" - Change: "PLGeneral::Config" is no longer a singleton - Change: PLRenderer refactoring: Legacy features moved into a new "FixedFunctions" interface, update our plfx-files if required - Bugfix: PLRendererOpenGL multi-render-targets support is now working - Bugfix: "ShaderLighting.sr", "Spherical Environment Mapping" fixed - Removed: Out-of-date PixelLab and it's plugins PLGuiEditor, PLMaterialEditor, PLMeshEditor, PLRagdollEditor, PLSceneEditor - Removed: Support within PLRenderer for legacy accumulation buffer, use render to texture instead Changes in PixelLight 0.8.5 - Feature: New picking classes "Picking", "PickingResult" and "MousePicking" for "ExtendedSceneApplication" replacement - Feature: Added "delayed loading" within "PLEngine::SNMesh" for initially invisible scene nodes - Feature: Added "delayed loading" within "PLRendererOpenGL::Font2D" and "PLRendererOpenGL::Font3D" - Feature: Minor performance improvements on various places - Feature: "Windows 7" detection and general compatibility tests - Feature: Added anti-aliasing (multisample) support to the OpenGL renderer - Feature: Added a view rotation offset to "PLEngine::SNCamera", can for example be used together with a head tracker system - Feature: Added "PLEngine::SQByName" scene query to enumerate scene nodes by their name using a regular expression - Feature: Added "PLEngine::SQByClassName" scene query to enumerate scene nodes by their class name using a regular expression - Feature: 3ds Max 2010 scene exporter added - Change: "PLGui::OnMouseButtonDoubleClick()" now also fires a "OnMouseButtonDown()", which was omitted in previous versions - Change: Scene node modifier implementations are using their "active"-state again - Change: Renamed "SpaceNavigator" into "SpaceMouse" - Change: Added "PLEngine::SceneContext" class - Change: Removed legacy "PLEngine::PL" class - Change: Removed legacy selection buffer feature from "PLRenderer" - Change: "PLGeneral::CommandLine" refactoring - Change: "PLEngine::SNBitmap" renamed into "PLEngine::SNBitmap2D" and derived from new abstract class "PLEngine::SNBitmap" - Change: New "PLEngine::SNBitmap3D" scene node for none camera aligned bitmaps - Change: "PLEngine::SNText" renamed into "PLEngine::SNText2D" and derived from new abstract class "PLEngine::SNText" - Change: New "PLEngine::SNText3D" scene node for none camera aligned texts - Change: Removed "PLEngine::SNBillboard", "PLEngine::SNBillboardCylindrical" and "PLEngine::SNBillboardSpherical" - Change: Added "PLEngine::SNMBillboard", "PLEngine::SNMBillboardCylindrical" and "PLEngine::SNMBillboardSpherical" - Change: PLGraphics completely rewritten to get rid of the DevIL image library dependency - Bugfix: Minor bugfixing on various places Changes in PixelLight 0.8.4 - Feature: "RenderApplication": Added: "IsFullscreen()", "SetFullscreen()" and "OnFullscreenMode()" - Feature: Added within "ExtendedSceneApplication" an optional maximum picking distance - Feature: You can now also use "AltGr + Return" within "RenderFrame" to toggle fullscreen mode - Feature: 3ds Max scene exporter supports now the "Subtractive Transparency" parameter of the standard material - Feature: "ShaderLighting" scene renderer: "SNMPostProcessGlow" post process effect added - Feature: "ShaderLighting" scene renderer: Added support for the new material parameters "Glow" and "GlowMap" - Feature: New scene node modifier "SNMCameraZoom" for camera zoom - Change: "BasicSceneApplication::SetCamera()" automatically performs advanced actions - Change: "RenderFrame" is no longer automatically changing the visibility of the OS mouse cursor - Change: SceneNode: Renamed "GetCommonParent()" into "GetCommonContainer()" - Change: SceneNode: Renamed "GetRootNode()" into "GetRootContainer()" - Change: The default setting for "RenderState::DstBlendFunc" is now "BlendFunc::InvSrcAlpha" instead of "BlendFunc::One" - Change: "SNMPositionKeyframeAnimation" & "SNMRotationKeyframeAnimation" & "SNMScaleKeyframeAnimation" are now using binary "chunk"-files - Change: By default, the ingame GUI font depends on the virtual GUI size instead of the window size - Change: "SceneContainer::Get("")" no longer returns "the current node", instead it returns "NULL", use "SceneContainer::Get("This")" instead - Bugfix: Mouse movement was frame rate dependent due to polling policy - Bugfix: "SceneContainer::GetTransformMatrixTo()" wasn't always working correctly - Bugfix: 3ds Max scene exporter failed to export keyframes for certain nodes - Bugfix: 3ds Max scene exporter user property "OriginalNormals" removed because no longer required Changes in PixelLight 0.8.3 - Feature: Added "ExtendedSceneApplication" application class offering for example picking functions - Feature: "ShaderLighting" scene renderer: Added support for the new material parameter "OpacityOcclusion" - Feature: Scene renderers: Added support for the new material parameters "SrcBlendFunc" & "DstBlendFunc" - Feature: Added "SpaceNavigator"-support in "SNMMouseLookController", "SNMMoveController" and "SNMMouseOrbitingController" - Feature: 3ds Max scene exporter supports now the "Index Of Refraction" parameter of the standard material - Feature: 3ds Max scene exporter supports now node multimaterial per instance (will result in "skin"-files) - Feature: 3ds Max scene exporter automatically creates a camera (with default modifiers) for active viewport without an assigned camera node - Feature: 3ds Max scene exporter "Publish"-option added (adding "PLSceneViewer" to the exported data so have a "runnable package") - Change: PLPhysicsNewton is now using "Newton Game Dynamics 2 Beta 18" - Change: Improved and extended "SNMOrbiting", "SNMMouseOrbitingController", "SNMMouseLookController" and "SNMMoveController" - Change: "BasicSceneApplication": Added "SaveScreenshot()", "MakeScreenshotFilenameRecommendation()" and "LoadScene()" - Change: "SceneContainer": Added "GetTransformMatrixTo()" - Change: "SceneNode": Added "GetCommonParent()" - Bugfix: "ShaderLighting" scene renderer DOF post process (SNMPostProcessDepthOfField) support was broken - Bugfix: "ShaderLighting" scene renderer "Opacity" support was broken Changes in PixelLight 0.8.2 - Feature: Added support for embedding a GuiApplication (or any derived classes) into other windows or programs - Feature: "ShaderLighting" scene renderer now supports directional lights - Feature: "ShaderLighting" scene renderer now supports fresnel reflection - Feature: Added "SNAntiPortal", it's similar to a "cell portal", but nodes seen through it are not drawn (occlusion culling) - Feature: Added special scene node modifier "SNMOrbiting" for orbiting and "SNMMouseOrbitingController" for orbiting by using the mouse - Feature: 3ds Max scene exporter "anti-portal"-support added - Feature: 3ds Max scene exporter has now point cache support ("PC2" file format version 1) -> adds "_" named morph targets - Feature: 3ds Max 2009 scene exporter added - Feature: 3ds Max scene exporter toolbar added ("PixelLight Scene Exporter Toolbar") - Feature: 3ds Max scene exporter "Normal Bump" texture map support added - Feature: PixelLight Browser Plugins (for Internet Explorer and Mozilla Firefox) are usable again, but only show a static demonstration for now - Change: Renamed "SNPortal" into "SNCellPortal" - Bugfix: "Two Sided Lighting" of the "ShaderLighting" scene renderer produced dark silhouettes in certain situations Changes in PixelLight 0.8.1 - Feature: Main application framework design is now complete - Change: Look direction of SNCamera and SNSpotLight changed to positive z-axis ("Flags="FlipXAxis|FlipZAxis"" normally no longer required) - Change: SNMMoveController & SNMMouseMoveController: Renamed "DefaultSpeed" into "Speed" - Change: Renamed the directory "Data/Meshs" into "Data/Meshes" - Change: 3ds Max exporter: Removed "Flags" key in the user properties (use "Vars" instead) - Bugfix: 3ds Max scene exporter was in some situations exporting wrong texture coordinates when using multi-materials - Bugfix: 3ds Max scene exporter was in some situations exporting wrong textures when using multi-materials - Bugfix: 3ds Max scene exporter wasn't resetting everything when using the "Default"-button in the dialog Changes in PixelLight 0.8.0 - PixelLight SDK for Windows released - Bug fixed: PLInput could cause a crash on 64bit systems (see http://support.microsoft.com/kb/946924/en/) - Lots of bugfixes - Improved 3ds Max exporter to avoid typical pitfalls