Skip to content

@gecko0307 gecko0307 released this Jul 21, 2018 · 58 commits to master since this release

  • LightFX - virtualized light sources on top of existing light system. An object with LightFX effect attached (using LightFXCreate function) will use 8 nearest lights, so in total many more than 8 lights can be used in a scene. LightFX supports all light types, lsParallel type lights have higher priority than lsOmni and lsSpot lights
  • Total number of OpenGL lights can now be limited with EngineSetMaxLights function. This is necessary to avoid overhead when using more than 8 lights. If this number is set to 0, behaviour is the same as before: Xtreme3D uses maximum number of lights supported by the hardware. By default this number is 8, so Xtreme3D by default will use 8 lights even if the hardware supports more. This limitation does not affect LightFX, only default 8-light system.
  • Initial Kraft physics engine integration. Kraft is an open source Object Pascal physics library for 3D games written by Benjamin 'BeRo' Rosseaux. It supports rigid body dynamics, all basic shapes (sphere, box, capsule, convex hull, static trimesh) and joints (grab, distance, rope, ball-socket, hinge, slider, fixed). The engine is fast, robust and game-friendly - you can implement a plausible character controller on top of Kraft with relative ease, and it will work better than with ODE. Kraft is fully integrated into xtreme3d.dll and doesn't need any additional libraries. ODE is still available, but in future it can be deprecated
  • Real-time terrain editing. The following functions have been added: BmpHDSCreateEmpty, BmpHDSSetHeight, BmpHDSGetHeight, BmpHDSSave, TerrainGetHDSPosition
  • Basic FBX model format support (only for Freeforms for now, and without materials). Only binary FBX is supported. The loader is based on OpenFBX library, so OpenFBX.dll is required to use it (as always with third-party DLLs, this dependency is optional). You can find its sources at
  • New ActorProxyObject functions: ActorProxyObjectSetAnimationRange, ActorProxyObjectSetInterval
  • Functions for reading and extracting PAK files: PakGetFileCount, PakGetFileName, PakExtract, PakExtractFile. SetPakArchive now returns PAK file id that is used to access it. LZRW1-compressed PAK files are now supported.
  • HUDSpriteGetMouseOver function
  • ObjectGetScale function
  • ObjectDestroy now can be used on any Xtreme3D object
  • New Window functions (WindowSetIcon, WindowIsShowing)
  • New function ViewerResetPerformanceMonitor that fixes the issue with increasing FPS counter
  • Error message is now shown if a resource (model or texture) can't be loaded. This behaviour can be switched with EngineShowLoadingErrors function
  • Thanks to Bill Collins, English translation of a help file have been created. Currently it's a mere machine translation from Russian, so we need volunteers to improve it manually - pull requests are welcome. You can also send your translations to Gecko:
  • PakEdit utility now supports LZRW1-compressed PAK files.

Thanks to gadmaker for WindowSetIcon function implementation, van88268, FireRun and JunkerKun for useful ideas and suggestions.

Assets 4