Readme.txt 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553
  1. Urho3D - cross-platform rendering and game engine
  2. -------------------------------------------------
  3. http://urho3d.github.io/
  4. Licensed under the MIT license, see License.txt for details.
  5. Credits
  6. -------
  7. Urho3D development, contributions and bugfixes by:
  8. - Lasse Öörni ([email protected], AgentC at GameDev.net)
  9. - Wei Tjong Yao
  10. - Aster Jian
  11. - Colin Barrett
  12. - Erik Beran
  13. - Carlo Carollo
  14. - Pete Chown
  15. - Sebastian Delatorre (primitivewaste)
  16. - Josh Engebretson
  17. - Chris Friesen
  18. - Alex Fuller
  19. - Mika Heinonen
  20. - Graham King
  21. - Jason Kinzer
  22. - Gunnar Kriik
  23. - Ali Kämäräinen
  24. - Pete Leigh
  25. - Paul Noome
  26. - Alex Parlett
  27. - Jordan Patterson
  28. - Vladimir Pobedinsky
  29. - Nick Royer
  30. - Miika Santala
  31. - Joshua Tippetts
  32. - Steven Zhang
  33. - Firegorilla
  34. - Magic.Lixin
  35. - Mike3D
  36. - amadeus_osa
  37. - reattiva
  38. - skaiware
  39. Urho3D is greatly inspired by OGRE (http://www.ogre3d.org) and Horde3D
  40. (http://www.horde3d.org). Additional inspiration & research used:
  41. - Rectangle packing by Jukka Jylänki (clb)
  42. http://clb.demon.fi/projects/rectangle-bin-packing
  43. - Tangent generation from Terathon
  44. http://www.terathon.com/code/tangent.html
  45. - Fast, Minimum Storage Ray/Triangle Intersection by Möller & Trumbore
  46. http://www.graphics.cornell.edu/pubs/1997/MT97.pdf
  47. - Linear-Speed Vertex Cache Optimisation by Tom Forsyth
  48. http://home.comcast.net/~tom_forsyth/papers/fast_vert_cache_opt.html
  49. - Software rasterization of triangles based on Chris Hecker's
  50. Perspective Texture Mapping series in the Game Developer magazine
  51. http://chrishecker.com/Miscellaneous_Technical_Articles
  52. - Networked Physics by Glenn Fiedler
  53. http://gafferongames.com/game-physics/networked-physics/
  54. - Euler Angle Formulas by David Eberly
  55. http://www.geometrictools.com/Documentation/EulerAngles.pdf
  56. - Red Black Trees by Julienne Walker
  57. http://eternallyconfuzzled.com/tuts/datastructures/jsw_tut_rbtree.aspx
  58. - Comparison of several sorting algorithms by Juha Nieminen
  59. http://warp.povusers.org/SortComparison/
  60. - NVIDIA FXAA II for Consoles by Timothy Lottes
  61. http://timothylottes.blogspot.com/2011/04/nvidia-fxaa-ii-for-console.html
  62. Urho3D uses the following third-party libraries:
  63. - AngelScript 2.28.0 (http://www.angelcode.com/angelscript/)
  64. - Bullet 2.81 (http://www.bulletphysics.org/)
  65. - Civetweb (http://sourceforge.net/projects/civetweb/)
  66. - FreeType 2.5.0 (http://www.freetype.org/)
  67. - GLEW 1.9.0 (http://glew.sourceforge.net/)
  68. - jo_jpeg 1.52 (http://www.jonolick.com/uploads/7/9/2/1/7921194/jo_jpeg.cpp)
  69. - kNet (https://github.com/juj/kNet)
  70. - libcpuid 0.2.0 (http://libcpuid.sourceforge.net/)
  71. - Lua 5.1 (http://www.lua.org)
  72. - LuaJIT 2.0.2 (http://www.luajit.org)
  73. - LZ4 (http://code.google.com/p/lz4/)
  74. - MojoShader (http://icculus.org/mojoshader/)
  75. - Open Asset Import Library (http://assimp.sourceforge.net/)
  76. - pugixml 1.0 (http://pugixml.org/)
  77. - Recast/Detour (http://code.google.com/p/recastnavigation/)
  78. - SDL 2.0.1 (http://www.libsdl.org/)
  79. - StanHull (http://codesuppository.blogspot.com/2006/03/
  80. john-ratcliffs-code-suppository-blog.html)
  81. - stb_image 1.29 (http://nothings.org/)
  82. - stb_vorbis 0.99996 (http://nothings.org/)
  83. - tolua++ 1.0.93 (http://www.codenix.com/~tolua)
  84. DXT / ETC1 / PVRTC decompression code based on the Squish library and the Oolong
  85. Engine.
  86. Jack and mushroom models from the realXtend project. (http://www.realxtend.org)
  87. Ninja model and terrain, water, smoke, flare and status bar textures from OGRE.
  88. BlueHighway font from Larabie Fonts.
  89. Anonymous Pro font by Mark Simonson.
  90. NinjaSnowWar sounds by Veli-Pekka Tätilä.
  91. Documentation
  92. -------------
  93. Urho3D classes have been sparsely documented using Doxygen notation. To
  94. generate documentation into the "Docs" subdirectory, open the Doxyfile in the
  95. "Docs" subdirectory with doxywizard and click "Run doxygen" from the "Run" tab.
  96. Get Doxygen from http://www.doxygen.org & Graphviz from http://www.graphviz.org.
  97. See section "Documentation build" below on how to automate documentation
  98. generation as part of the build process.
  99. The documentation is also available online at http://urho3d.github.io/documentation/
  100. Building prerequisites
  101. ----------------------
  102. Although all required third-party libraries are included as source code, there
  103. are system-level dependencies that must be satisfied before Urho3D can be built
  104. successfully:
  105. - For Windows, the June 2010 DirectX SDK needs to be installed.
  106. - For Linux, the following development packages need to be installed:
  107. libx11-dev, libxrandr-dev, libasound2-dev on Debian-based distros;
  108. libX11-devel, libXrandr-devel, alsa-lib-devel on RedHat-based distros.
  109. Also install the package libgl1-mesa-dev (Debian) or mesa-libGL-devel (RH)
  110. if your GPU driver does not include OpenGL headers & libs. Building as 32-bit
  111. on a 64-bit system requires installing also the 32-bit versions of the
  112. development libraries.
  113. - For Raspberry Pi, the following development packages need to be installed:
  114. libraspberrypi0, libraspberrypi-dev, libasound2-dev, libudev-dev on Raspbian;
  115. raspberrypi-vc-libs, raspberrypi-vc-libs-devel, alsa-lib-devel, systemd-devel
  116. on Pidora. The first two packages which contain the Broadcom VideoCore IV
  117. libraries and development headers should normally come preinstalled.
  118. - For Mac OS X, the Xcode developer tools package should include everything
  119. necessary.
  120. - For Android, the Android SDK and Android NDK (minimum API level 9) need to be
  121. installed. Optionally, also install Eclipse ADT plugin for building and
  122. deployment via Eclipse.
  123. To run Urho3D, the minimum system requirements are:
  124. - Windows: CPU with SSE instructions support, Windows XP or newer, DirectX 9.0c,
  125. GPU with Shader Model 2 support (Shader Model 3 recommended.)
  126. - Linux & Mac OS X: CPU with SSE instructions support, GPU with OpenGL 2.0
  127. support, EXT_framebuffer_object and EXT_packed_depth_stencil extensions.
  128. - Raspberry Pi: Model B revision 2.0 with at least 128 MB of 512 MB SDRAM
  129. allocated for GPU. OpenGL ES 2.0 capable GPU.
  130. - Android: OS version 2.3 or newer, OpenGL ES 2.0 capable GPU.
  131. - iOS: OpenGL ES 2.0 capable GPU.
  132. SSE requirement can be eliminated by disabling the use of SSE instruction set,
  133. see "Build options" below.
  134. Desktop build process
  135. ---------------------
  136. On desktop systems Urho3D uses CMake (http://www.cmake.org) to build. The
  137. process has two steps:
  138. 1) Run CMake in the root directory with your preferred toolchain specified to
  139. generate the build files. You can use the provided batch files or shell
  140. scripts on the respective platform.
  141. Windows: cmake_vs2008.bat, cmake_vs2010.bat, cmake_vs2012.bat, or
  142. cmake_mingw.bat,
  143. Linux: cmake_gcc.sh or cmake_eclipse.sh,
  144. Mac OS X: cmake_gcc.sh or cmake_macosx.sh.
  145. 2) For Visual Studio, open Urho3D.sln from the Build directory and build the
  146. configuration(s) you like.
  147. For Eclipse, import the Eclipse's project generated by CMake into
  148. the workspace as a general project. Note that Eclipse requires CDT plugin to
  149. build C/C++ project.
  150. For GCC, execute make in the Build directory (by default, cmake_gcc.sh
  151. specifies to make a Release build).
  152. For Xcode, open Urho3D.xcodeproj and build.
  153. If using MinGW to compile, DirectX headers may need to be acquired separately.
  154. They can be copied to the MinGW installation eg. from the following package:
  155. http://www.libsdl.org/extras/win32/common/directx-devel.tar.gz
  156. After the build is complete, the programs can be run from the Bin directory.
  157. These include the Urho3D player application, which can run application scripts,
  158. the tools, and C++ sample applications if they have been enabled.
  159. To run the Urho3D player application from the Visual Studio debugger, set the
  160. Urho3DPlayer project as the startup project and enter its relative path and
  161. filename into Properties -> Debugging -> Command: ..\..\..\Bin\Urho3DPlayer.exe.
  162. Additionally, entering -w into Debugging -> Command Arguments is highly
  163. recommended. This enables startup in windowed mode: without it running into an
  164. exception or breakpoint will be obnoxious as the mouse cursor will likely be
  165. hidden. To actually make the Urho3DPlayer application do something useful, it
  166. must be supplied with the name of the script file it should load and run. You
  167. can try for example the following arguments: Scripts/NinjaSnowWar.as -w
  168. To run from Eclipse on Linux, locate and select the Urho3DPlayer executable in
  169. the Project Explorer. From the menu, choose "Run Configurations" to create a new
  170. launch configuration for "C/C++ Application". Switch to "Arguments" tab, specify
  171. the argument required by Urho3DPlayer executable.
  172. To run from Xcode on Mac OS X, edit the Product Scheme to set "Run" setting
  173. to execute "Urho3DPlayer" in the "Info" tab. In the "Arguments" tab, specify the
  174. arguments required by Urho3DPlayer executable. Ensure the check boxes are ticked
  175. on the argument entries that you want to be active.
  176. CMake caches some internal variables to speed up the subsequent invocation of
  177. the CMake build script. This is normally a good thing. However, there are cases
  178. when this is not desirable, for instance when switching CMake generators or
  179. after upgrading development software components. In such cases, it is recomended
  180. to first clean the CMake cache by invoking cmake_clean.bat or cmake_clean.sh.
  181. Android build process
  182. ---------------------
  183. First, if you are building under Windows platform without MKLINK support then
  184. copy Bin/Data and Bin/CoreData directories to the Source/Android/assets
  185. directory (you can use the provided batch file CopyData.bat). This step is not
  186. necessary for Windows with MKLINK support and non-Windows platforms because the
  187. build script uses symbolic links for platforms that support it.
  188. Set the ANDROID_NDK environment variable to point to your Android NDK. On
  189. Windows, ensure that make.exe from the Android NDK is included in the path and
  190. is executable from the command line.
  191. On Windows, execute cmake_android.bat. If MKLINK support is available, provide
  192. build option "-DUSE_MKLINK=1" to generate out-of-source build. Then go to the
  193. build directory Source/Android (or android-Build if out-of-source build) and
  194. execute the following commands. On OS X or Linux, execute cmake_gcc.sh (the
  195. ANDROID_NDK environment variable distinguishes from a normal desktop build) then
  196. go to the android-Build directory (always an out-of-source build) and execute
  197. the following commands.
  198. - android update project -p . -t 1 (only needed on the first time,
  199. replace '-t 1' with desired target-id)
  200. - make -j8 (replace '-j8' with the number of logical CPU cores of the
  201. host/build system)
  202. - ant debug
  203. After the commands finish successfully, the APK should have been generated to
  204. the build's "bin" subdirectory, from where it can be installed on a device or an
  205. emulator. The command "ant installd" can be used for this.
  206. For a release build, use the "ant release" command instead of "ant debug" and
  207. follow the Android SDK instructions on how to sign your APK properly.
  208. By default the Android package for Urho3D is com.googlecode.urho3d. For a real
  209. application you must replace this with your own package name. The Urho3D
  210. activity subclasses the SDLActivity from org.libsdl.app package, whose name
  211. (or the JNI code from SDL library) does not have to be changed.
  212. Note that the native code is built by default for armeabi-v7a ABI. To make your
  213. program compatible also with old Android devices, build also an armeabi version
  214. by executing the CMake batch file again with the parameter -DANDROID_ABI=armeabi
  215. added, then execute make again in the build directory.
  216. You can also build and deploy using Eclipse IDE with ADT plugin. To do that,
  217. after setting the ANDROID_NDK environment variable then run cmake_eclipse.sh.
  218. Import "Existing Android Code into Workspace" from the CMake generated Eclipse's
  219. project found in the android-Build directory. Switch Eclipse IDE to use Java
  220. Perspective. Update project properties to choose the desired Android API target
  221. and that's it. Just choose "Run" to let ADT automatically build and deploy the
  222. application to Android (virtual) device.
  223. iOS build process
  224. -----------------
  225. Run cmake_ios.sh. This generates an Xcode project named Urho3D.xcodeproj.
  226. Open the Xcode project and check the properties for the Urho3D project (topmost
  227. in the Project Navigator.) In Architectures -> Base SDK, choose your iOS SDK
  228. (CMake would automatically select latest iOS when generating the Xcode project).
  229. In Code Signing, enter your developer identity as necessary.
  230. The Urho3DPlayer target will actually build the application bundle and copy
  231. resources from Bin/Data and Bin/CoreData directories. Edit its build scheme to
  232. choose debug or release mode.
  233. To run from Xcode on iPhone/iPad Simulator, edit the Product Scheme to set "Run"
  234. destination setting to "iPhone Simulator" or "iPad Simulator", and executable
  235. to "Urho3DPlayer.app".
  236. Raspberry Pi build process
  237. --------------------------
  238. For native build on Raspberry Pi itself, use the similar process for Linux
  239. Desktop build described above.
  240. For cross-compiling build on another build/host machine, firstly set the
  241. RASPI_TOOL environment variable to point to your Raspberry Pi Cross-Compiling
  242. tool where all the arm-linux-gnueabihf-* executables are located. You can setup
  243. the tool using crosstool-NG (http://crosstool-ng.org/) or just download one
  244. from https://github.com/raspberrypi/tools. Secondly, set the RASPI_ROOT
  245. environment variable to point to your Raspbian or Pidora system root. You must
  246. install the Urho3D prerequisites software development packages for Raspberry Pi
  247. (see "Building_Prerequisites") in the system root before attempting to do the
  248. Urho3D cross-compiling build.
  249. When running cmake_gcc.sh with RASPI_TOOL environment variable set, it tells
  250. build script to generate additional raspi-Build directory for cross-compiling.
  251. Go to this raspi-Build directory and proceed to execute make. After the build
  252. is complete, the ARM executables can be found in Bin-CC output directory.
  253. You can also build, deploy, run/debug (as C/C++ Remote Application) using
  254. Eclipse IDE, if you run cmake_eclipse.sh to generate the project file. Import
  255. the CMake generated Eclipse project in the raspi-Build directory into Eclipse's
  256. workspace. Build the project as usual. Use the SCP_TO_TARGET build option to
  257. automatically deploy the ARM executables to target Raspberry Pi as part of every
  258. project build or configure Eclipse to perform a "download to target path" in the
  259. Run/Debug configuration for C/C++ Remote Application. Either way, you have to
  260. configure the Run/Debug configuration how to reach your target Raspberry Pi.
  261. Desktop 64bit build
  262. -------------------
  263. Currently CMake build configuration has been set to compile Urho3D as 32bit by
  264. default. To enable 64bit build, run the provided cmake_xxxx.bat or cmake_xxxx.sh
  265. by passing the option "-DENABLE_64BIT=1" explicitly. For Visual Studio on
  266. Windows platform, this option also overrides CMake to use a 64bit solution
  267. generator.
  268. Library build
  269. -------------
  270. As of v1.31 (to be released), the build process first builds the Urho3D library
  271. target (either static or shared). The library is then linked against by other
  272. targets like tools and samples that reference Urho3D as one of the external
  273. libraries. The Urho3D library type is defaulted to static, so the build process
  274. would generate standalone executables as previous releases. The Urho3D library
  275. type can be changed using "URHO3D_LIB_TYPE" build option.
  276. To install the Urho3D library (or should we call it SDK), use the usual
  277. 'make install' command when using Makefile. There is an equivalent command in
  278. Visual Studio and Xcode IDE to build 'install' target instead of the default
  279. 'all' target. This could be useful when you want your application to always link
  280. against a 'stable' installed version of the Urho3D library, while keeping your
  281. Urho3D project root tree in sync with origin/master. That is, install the newly
  282. built library after you have tested the changes do not break your application
  283. during development.
  284. Refer to "Using Urho3D as external library" on how to setup your own project to
  285. use Urho3D as external library.
  286. Compiling Direct3D shaders
  287. --------------------------
  288. When building with the Windows 8 SDK, copy d3dcompiler_46.dll from
  289. C:/Program Files (x86)/Windows Kits/8.0/bin/x86 to Urho3D Bin directory so that
  290. the ShaderCompiler program will run correctly.
  291. To make the Urho3D examples start faster on Windows & Direct3D9 mode, run
  292. CompileAllShaders.bat from the Bin directory first.
  293. Note that you can also force an OpenGL mode build on Windows by using the CMake
  294. option in the table below; OpenGL does not need a separate shader compilation
  295. step or utility.
  296. Documentation build
  297. -------------------
  298. If ENABLE_DOCS build option is set then a normal (ALL) build would not only
  299. build Urho3D software but also Urho3D documentation automatically. If it is not
  300. then the documentation can be generated by manually invoking 'make doc' command
  301. or its equivalent command in IDE.
  302. The prerequisites are Doxygen and Graphviz. Tools to dump the AngelScript API
  303. for the default scripting subsystem and the LuaScript API (when the LuaScript
  304. subsystem is also enabled) will be built internally when all the tools are being
  305. built.
  306. Build options
  307. -------------
  308. A number of build options can be defined explicitly when invoking the above
  309. cmake_xxxx batch files or shell scripts.
  310. |----------------------|-------------------------------------------------------|
  311. |Defines |Build Options |
  312. |----------------------|-------------------------------------------------------|
  313. |-DENABLE_64BIT=1 |to enable 64bit build |
  314. |-DENABLE_LUA=1 |to enable additional Lua scripting support |
  315. |-DENABLE_LUAJIT=1 |to enable Lua Just-in-time compilation, implied |
  316. | | ENABLE_LUA (check its CMakeLists.txt for more options)|
  317. |-DENABLE_SAFE_LUA=1 |to enable Lua C++ wrapper safety checks |
  318. |-DENABLE_SAMPLES=1 |to build the C++ sample applications |
  319. |-DENABLE_TOOLS=1 |to build the tools (only useful for Raspberry Pi build |
  320. | | because this option is already enabled by default for |
  321. | | other Desktop platforms) |
  322. |-DENABLE_DOCS=1 |to build the docs when building all the targets |
  323. |-DENABLE_ANGELSCRIPT=0|to disable AngelScript scripting support |
  324. |-DENABLE_SSE=0 |to disable SSE instruction set |
  325. |-DENABLE_MINIDUMPS=0 |to disable minidumps on crash (VS only) |
  326. |-DUSE_OPENGL=1 |to use OpenGL instead of Direct3D (only useful for VS |
  327. | | on Windows platform because this option is enabled by |
  328. | | default for other platforms) |
  329. |-DUSE_MKLINK=1 |to use mklink command to create symbolic links (Windows|
  330. | | Vista and above only) |
  331. |-DUSE_STATIC_RUNTIME=1|to use static C/C++ runtime libraries and eliminate the|
  332. | | need for runtime DLLs installation (VS only) |
  333. |-DSCP_TO_TARGET=<v> |to automatically scp executables to target system |
  334. | | (Raspberry Pi cross-compiling build only), SSH digital|
  335. | | key must be setup first for this to work, typical |
  336. | | value has a pattern of usr@tgt:remote-loc |
  337. |-DCMAKE_BUILD_TYPE=<v>|to tell CMake which build configuration to be |
  338. | | generated (Makefile generator only), possible values |
  339. | | are Release (default), Debug, and RelWithDebInfo |
  340. |-DURHO3D_LIB_TYPE=<v> |to specify Urho3D library type, possible values are |
  341. | | STATIC (default) and SHARED |
  342. |-DANDROID_ABI=<v> |to specify ABI for native code (Android build only), |
  343. | | possible values are armeabi-v7a (default) and armeabi |
  344. |----------------------|-------------------------------------------------------|
  345. Note that build option values specified via command line are cached by CMake.
  346. The cached values will be used by CMake in the subsequent invocation. That is,
  347. the same build options are not required to be specified again and again. Once a
  348. non-default build option value is being cached, it can only be reverted back to
  349. its default value by explicitly setting it via command line. That is, simply by
  350. NOT passing the corresponding build option would not work. One way to revert all
  351. the build options to their default values is by clearing the CMake cache by
  352. calling cmake_clean.bat or cmake_clean.sh.
  353. History
  354. -------
  355. V1.3 - Lua scripting support.
  356. - Optional build as a single external library, static or dynamic.
  357. - Raspberry Pi support.
  358. - 64-bit build support.
  359. - HTTP client using the Civetweb library.
  360. - Enhanced CMake build scripts. Android build also uses CMake.
  361. Use out-of-source build on platform that supports it.
  362. - Rendering performance optimizations, optional StaticModelGroup
  363. component for culling and lighting several objects as one unit.
  364. - A set of sample applications implemented in C++, AngelScript and Lua.
  365. - Automatic Node/component handle member variable serialization for
  366. AngelScript script objects.
  367. - New UI theme.
  368. - Shadow & stroke effects in Text & Text3D.
  369. - Boolean shader uniforms.
  370. - Quick menu in the editor.
  371. - Material editor and preview in the editor.
  372. - Editable attributes for particle emitters.
  373. - Components are grouped into categories in the editor.
  374. - Update SDL to stable 2.0.0 release.
  375. - Several other improvements and bugfixes.
  376. V1.23 - UI editing support in the editor.
  377. - Undo/redo in the editor.
  378. - Recast/Detour library integration for navigation mesh generation and
  379. pathfinding.
  380. - Open Asset Import Library update, enables FBX file support.
  381. - "Is Enabled" attribute in scene nodes and components for an uniform
  382. mechanism to temporarily disable unneeded audiovisual, physics or
  383. logic objects.
  384. - Script object public variables editing and serialization.
  385. - New components: Text3D and Sprite.
  386. - UI library functionality improvements.
  387. - sRGB texture and framebuffer support.
  388. - Switched to GLEW library for OpenGL extension handling.
  389. - Vegetation and lightmapping example shaders.
  390. - Engine configuration through a parameter map.
  391. - Lots of refactoring, code cleanup and bugfixes.
  392. V1.22 - Configurable render path replaces hardcoded forward/prepass/deferred
  393. modes. Render path system also used for postprocessing now.
  394. - Threaded task priorities; long-running tasks (more than one frame) can
  395. coexist with the time-critical tasks.
  396. - Possibility to use also RGB normal maps.
  397. - CustomGeometry component, which allows geometry to be defined
  398. similarly to OpenGL immediate mode.
  399. - Elapsed time shader parameter for material animation.
  400. - Cubic environment mapping example shaders.
  401. - Separate physics collision start & end events.
  402. - Visual Studio 2012, Eclipse & Xcode build support.
  403. - Many bugfixes, including iOS 6 orientation & shadow mapping bugfixes,
  404. skinning on some Android devices.
  405. V1.21 - Bugfixes and code cleanup.
  406. - External window support (experimental.)
  407. - UI elements refactored to use attributes for serialization.
  408. - Animation state editing and animation trigger events.
  409. - Scene update time scale can be modified.
  410. - Improved the delayed method call system.
  411. V1.2 - Android and iOS support.
  412. - Decal rendering.
  413. - Terrain rendering.
  414. - Joystick input support.
  415. - Use SDL library for windowing and input on all platforms.
  416. - KTX and PVR image loading (for ETC1 & PVRTC compressed textures.)
  417. - Removed need for shader preprocessing; reorganized shaders to be more
  418. friendly to base custom shaders on.
  419. - Inbuilt geometry shapes in the editor.
  420. V1.16 - Switched to Bullet physics library.
  421. - More physics constraint types.
  422. - Rendering and networking performance optimizations.
  423. - Use Squish library to implement software DXT decompression when not
  424. supported in hardware.
  425. V1.15 - New deferred rendering pipeline.
  426. - Unicode support.
  427. - Live resource reloading in the editor (Windows only so far.)
  428. - More accurate frame timing.
  429. - Bugfixes to physics jittering and FBO performance issue on Linux.
  430. V1.14 - Object (partial scene) load/save.
  431. - Post-processing.
  432. - Switched to pugixml library, scene load/save optimizations.
  433. - Bugfixes to rendertexture views and component attributes.
  434. V1.13 - Task-based multithreading.
  435. - Vertex lighting option.
  436. - Forward and light pre-pass rendering pipelines.
  437. V1.12 - Manipulator gizmo and multi-editing in the editor.
  438. - Switched to forward rendering exclusively, which is optimized to do
  439. more work in the vertex shader.
  440. - Zone system refactoring. Objects check the zone they belong to for
  441. per-zone light masking, ambient light and fog settings.
  442. - Scripting API fixes and improvements.
  443. V1.11 - Bugfixes and performance optimizations.
  444. - Added GraphicsTest example from V1.0 (now called TestSceneOld.)
  445. - Added fallback mode, which is used if multiple render targets or
  446. hardware shadow maps are not available.
  447. V1.1 - Object and scene model refactoring.
  448. - Automatic serialization of scene objects via attributes.
  449. - Added OpenGL and cross-platform support.
  450. - Switched to kNet library for networking.
  451. V1.0 - Original release.