Readme.txt 46 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906
  1. Urho3D - cross-platform 2D and 3D 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. - Danny Boisvert
  14. - Carlo Carollo
  15. - Pete Chown
  16. - Sebastian Delatorre (primitivewaste)
  17. - Josh Engebretson
  18. - Chris Friesen
  19. - Alex Fuller
  20. - Mika Heinonen
  21. - Graham King
  22. - Jason Kinzer
  23. - Gunnar Kriik
  24. - Ali Kämäräinen
  25. - Pete Leigh
  26. - Jonne Nauha
  27. - Paul Noome
  28. - David Palacios
  29. - Alex Parlett
  30. - Jordan Patterson
  31. - Vladimir Pobedinsky
  32. - Nick Royer
  33. - Miika Santala
  34. - Joshua Tippetts
  35. - Daniel Wiberg
  36. - Steven Zhang
  37. - AGreatFish
  38. - Firegorilla
  39. - Magic.Lixin
  40. - Mike3D
  41. - OvermindDL1
  42. - andmar1x
  43. - amadeus_osa
  44. - atship
  45. - att
  46. - celeron55
  47. - hdunderscore
  48. - mightyCelu
  49. - nemerle
  50. - ninjastone
  51. - rasteron
  52. - reattiva
  53. - rifai
  54. - skaiware
  55. - szamq
  56. - thebluefish
  57. Urho3D is greatly inspired by OGRE (http://www.ogre3d.org) and Horde3D
  58. (http://www.horde3d.org). Additional inspiration & research used:
  59. - Rectangle packing by Jukka Jylänki (clb)
  60. http://clb.demon.fi/projects/rectangle-bin-packing
  61. - Tangent generation from Terathon
  62. http://www.terathon.com/code/tangent.html
  63. - Fast, Minimum Storage Ray/Triangle Intersection by Möller & Trumbore
  64. http://www.graphics.cornell.edu/pubs/1997/MT97.pdf
  65. - Linear-Speed Vertex Cache Optimisation by Tom Forsyth
  66. http://home.comcast.net/~tom_forsyth/papers/fast_vert_cache_opt.html
  67. - Software rasterization of triangles based on Chris Hecker's
  68. Perspective Texture Mapping series in the Game Developer magazine
  69. http://chrishecker.com/Miscellaneous_Technical_Articles
  70. - Networked Physics by Glenn Fiedler
  71. http://gafferongames.com/game-physics/networked-physics/
  72. - Euler Angle Formulas by David Eberly
  73. http://www.geometrictools.com/Documentation/EulerAngles.pdf
  74. - Red Black Trees by Julienne Walker
  75. http://eternallyconfuzzled.com/tuts/datastructures/jsw_tut_rbtree.aspx
  76. - Comparison of several sorting algorithms by Juha Nieminen
  77. http://warp.povusers.org/SortComparison/
  78. Urho3D uses the following third-party libraries:
  79. - AngelScript 2.29.1 (http://www.angelcode.com/angelscript/)
  80. - Box2D 2.3.0 (http://box2d.org/)
  81. - Bullet 2.82 (http://www.bulletphysics.org/)
  82. - Civetweb (http://sourceforge.net/projects/civetweb/)
  83. - FreeType 2.5.0 (http://www.freetype.org/)
  84. - GLEW 1.9.0 (http://glew.sourceforge.net/)
  85. - jo_jpeg 1.52 (http://www.jonolick.com/uploads/7/9/2/1/7921194/jo_jpeg.cpp)
  86. - kNet (https://github.com/juj/kNet)
  87. - libcpuid 0.2.0 (http://libcpuid.sourceforge.net/)
  88. - Lua 5.1 (http://www.lua.org)
  89. - LuaJIT 2.0.3 (http://www.luajit.org)
  90. - LZ4 (http://code.google.com/p/lz4/)
  91. - MojoShader (http://icculus.org/mojoshader/)
  92. - Open Asset Import Library (http://assimp.sourceforge.net/)
  93. - pugixml 1.0 (http://pugixml.org/)
  94. - rapidjson 0.11 (https://code.google.com/p/rapidjson/)
  95. - Recast/Detour (https://github.com/memononen/recastnavigation/)
  96. - SDL 2.0.3 (http://www.libsdl.org/)
  97. - StanHull (http://codesuppository.blogspot.com/2006/03/
  98. john-ratcliffs-code-suppository-blog.html)
  99. - stb_image 1.29 (http://nothings.org/)
  100. - stb_vorbis 0.99996 (http://nothings.org/)
  101. - tolua++ 1.0.93 (http://www.codenix.com/~tolua)
  102. DXT / ETC1 / PVRTC decompression code based on the Squish library and the Oolong
  103. Engine.
  104. Jack and mushroom models from the realXtend project. (http://www.realxtend.org)
  105. Ninja model and terrain, water, smoke, flare and status bar textures from OGRE.
  106. BlueHighway font from Larabie Fonts.
  107. Anonymous Pro font by Mark Simonson.
  108. NinjaSnowWar sounds by Veli-Pekka Tätilä.
  109. Documentation
  110. -------------
  111. Urho3D classes have been sparsely documented using Doxygen notation. To
  112. generate documentation into the "Docs" subdirectory, open the Doxyfile in the
  113. "Docs" subdirectory with doxywizard and click "Run doxygen" from the "Run" tab.
  114. Get Doxygen from http://www.doxygen.org & Graphviz from http://www.graphviz.org.
  115. See section "Documentation build" below on how to automate documentation
  116. generation as part of the build process.
  117. The documentation is also available online at
  118. http://urho3d.github.io/documentation/HEAD/index.html
  119. Building prerequisites
  120. ----------------------
  121. Although all required third-party libraries are included as source code, there
  122. are system-level dependencies that must be satisfied before Urho3D can be built
  123. successfully:
  124. - For Windows, the June 2010 DirectX SDK needs to be installed.
  125. - For Linux, the following development packages need to be installed:
  126. libx11-dev, libxrandr-dev, libasound2-dev on Debian-based distros;
  127. libX11-devel, libXrandr-devel, alsa-lib-devel on RedHat-based distros.
  128. Also install the package libgl1-mesa-dev (Debian) or mesa-libGL-devel (RH)
  129. if your GPU driver does not include OpenGL headers & libs. Building as 32-bit
  130. on a 64-bit system requires installing also the 32-bit versions of the
  131. development libraries.
  132. - For Raspberry Pi, the following development packages need to be installed:
  133. libraspberrypi0, libraspberrypi-dev, libasound2-dev, libudev-dev on Raspbian;
  134. raspberrypi-vc-libs, raspberrypi-vc-libs-devel, alsa-lib-devel, systemd-devel
  135. on Pidora. The first two packages which contain the Broadcom VideoCore IV
  136. libraries and development headers should normally come preinstalled.
  137. - For Mac OS X, the Xcode developer tools package should include everything
  138. necessary.
  139. - For Android, the Android SDK and Android NDK (minimum API level 12) need to be
  140. installed. Optionally, also install Eclipse ADT plugin for building and
  141. deployment via Eclipse.
  142. To run Urho3D, the minimum system requirements are:
  143. - Windows: CPU with SSE instructions support, Windows XP or newer, DirectX 9.0c,
  144. GPU with Shader Model 2 support (Shader Model 3 recommended.)
  145. - Linux & Mac OS X: CPU with SSE instructions support, GPU with OpenGL 2.0
  146. support, EXT_framebuffer_object and EXT_packed_depth_stencil extensions.
  147. - Raspberry Pi: Model B revision 2.0 with at least 128 MB of 512 MB SDRAM
  148. allocated for GPU. OpenGL ES 2.0 capable GPU.
  149. - Android: OS version 2.3 or newer, OpenGL ES 2.0 capable GPU.
  150. - iOS: OpenGL ES 2.0 capable GPU.
  151. SSE requirement can be eliminated by disabling the use of SSE instruction set,
  152. see "Build options" below.
  153. Desktop build process
  154. ---------------------
  155. On desktop systems Urho3D uses CMake (http://www.cmake.org) to build. The
  156. process has two steps:
  157. 1) Run CMake in the root directory with your preferred toolchain specified to
  158. generate the build files. You can use the provided batch files or shell
  159. scripts on the respective platform.
  160. Windows: cmake_vs2008.bat, cmake_vs2010.bat, cmake_vs2012.bat, or
  161. cmake_mingw.bat,
  162. Linux: cmake_gcc.sh, cmake_eclipse.sh, or cmake_codeblocks.sh,
  163. Mac OS X: cmake_gcc.sh or cmake_macosx.sh.
  164. 2) Open the CMake's generated project file in the IDE of your choice. Change the
  165. build configuration (Debug/Release) and then build all the targets.
  166. Visual Studio: open Urho3D.sln from the Build directory.
  167. Xcode: open Urho3D.xcodeproj.
  168. CodeBlocks: open Urho3D.cbp.
  169. Eclipse: import project using File|Import "Existing Projects into Workspace".
  170. GCC: execute make from the Build directory in a terminal/console.
  171. Note that Eclipse requires CDT plugin to build C/C++ project.
  172. If using MinGW to compile, DirectX headers may need to be acquired separately.
  173. They can be copied to the MinGW installation eg. from the following package:
  174. http://www.libsdl.org/extras/win32/common/directx-devel.tar.gz. These will
  175. be missing some of the headers related to shader compilation, so a MinGW build
  176. will use OpenGL by default. To build in Direct3D9 mode, the MinGW-w64 port is
  177. necessary: http://mingw-w64.sourceforge.net/. Using it, Direct3D9 can be
  178. enabled with the CMake option -DURHO3D_OPENGL=0.
  179. After the build is complete, the programs can be run from the Bin directory.
  180. These include the Urho3D player application, which can run application scripts,
  181. the tools, and C++ sample applications if they have been enabled.
  182. To run the Urho3D player application from the Visual Studio debugger, set the
  183. Urho3DPlayer project as the startup project and enter its relative path and
  184. filename into Properties -> Debugging -> Command: ..\..\..\Bin\Urho3DPlayer.exe.
  185. Additionally, entering -w into Debugging -> Command Arguments is highly
  186. recommended. This enables startup in windowed mode: without it running into an
  187. exception or breakpoint will be obnoxious as the mouse cursor will likely be
  188. hidden. To actually make the Urho3DPlayer application do something useful, it
  189. must be supplied with the name of the script file it should load and run. You
  190. can try for example the following arguments: Scripts/NinjaSnowWar.as -w
  191. To run from Eclipse on Linux, locate and select the Urho3DPlayer executable in
  192. the Project Explorer. From the menu, choose "Run Configurations" to create a new
  193. launch configuration for "C/C++ Application". Switch to "Arguments" tab, specify
  194. the argument required by Urho3DPlayer executable.
  195. To run from Xcode on Mac OS X, edit the Product Scheme to set "Run" setting
  196. to execute "Urho3DPlayer" in the "Info" tab. In the "Arguments" tab, specify the
  197. arguments required by Urho3DPlayer executable. Ensure the check boxes are ticked
  198. on the argument entries that you want to be active.
  199. CMake caches some internal variables to speed up the subsequent invocation of
  200. the CMake build script. This is normally a good thing. However, there are cases
  201. when this is not desirable, for instance when switching CMake generators or
  202. after upgrading development software components. In such cases, it is recomended
  203. to first clean the CMake cache by invoking cmake_clean.bat or cmake_clean.sh.
  204. Android build process
  205. ---------------------
  206. First, if you are building under Windows platform without MKLINK support then
  207. copy Bin/Data and Bin/CoreData directories to the Source/Android/assets
  208. directory (you can use the provided batch file CopyData.bat). This step is not
  209. necessary for Windows with MKLINK support and non-Windows platforms because the
  210. build script uses symbolic links for platforms that support it.
  211. Set the ANDROID_NDK environment variable to point to your Android NDK. On
  212. Windows, ensure that make.exe from the Android NDK is included in the path and
  213. is executable from the command line.
  214. On Windows, execute cmake_android.bat. If MKLINK support is available, provide
  215. build option "-DURHO3D_MKLINK=1" to generate out-of-source build. Then go to the
  216. build directory Source/Android (or android-Build if out-of-source build) and
  217. execute the following commands. On OS X or Linux, execute cmake_gcc.sh (the
  218. ANDROID_NDK environment variable distinguishes from a normal desktop build) then
  219. go to the android-Build directory (always an out-of-source build) and execute
  220. the following commands.
  221. - android update project -p . -t 1 (only needed on the first time,
  222. replace '-t 1' with desired target-id)
  223. - make -j8 (replace '-j8' with the number of logical CPU cores of the
  224. host/build system)
  225. - ant debug
  226. After the commands finish successfully, the APK should have been generated to
  227. the build's "bin" subdirectory, from where it can be installed on a device or an
  228. emulator. The command "ant installd" can be used for this.
  229. For a release build, use the "ant release" command instead of "ant debug" and
  230. follow the Android SDK instructions on how to sign your APK properly.
  231. By default the Android package for Urho3D is com.googlecode.urho3d. For a real
  232. application you must replace this with your own package name. The Urho3D
  233. activity subclasses the SDLActivity from org.libsdl.app package, whose name
  234. (or the JNI code from SDL library) does not have to be changed.
  235. Note that the native code is built by default for armeabi-v7a ABI. To make your
  236. program compatible also with old Android devices, build also an armeabi version
  237. by executing the CMake batch file again with the parameter -DANDROID_ABI=armeabi
  238. added, then execute make again in the build directory. See "Build options" for
  239. all the possible values.
  240. You can also build and deploy using Eclipse IDE with ADT plugin. To do that,
  241. after setting the ANDROID_NDK environment variable then run cmake_eclipse.sh.
  242. Import "Existing Android Code into Workspace" from the CMake generated Eclipse's
  243. project found in the android-Build directory. Switch Eclipse IDE to use Java
  244. Perspective. Update project properties to choose the desired Android API target
  245. and that's it. Just choose "Run" to let ADT automatically build and deploy the
  246. application to Android (virtual) device.
  247. iOS build process
  248. -----------------
  249. Run cmake_ios.sh. This generates an Xcode project named Urho3D.xcodeproj.
  250. Open the Xcode project and check the properties for the Urho3D project (topmost
  251. in the Project Navigator.) In Architectures -> Base SDK, choose your iOS SDK
  252. (CMake would automatically select latest iOS when generating the Xcode project).
  253. In Code Signing, enter your developer identity as necessary.
  254. The Urho3DPlayer target will actually build the application bundle and copy
  255. resources from Bin/Data and Bin/CoreData directories. Edit its build scheme to
  256. choose debug or release mode.
  257. To run from Xcode on iPhone/iPad Simulator, edit the Product Scheme to set "Run"
  258. destination setting to "iPhone Simulator" or "iPad Simulator", and executable
  259. to "Urho3DPlayer.app".
  260. Raspberry Pi build process
  261. --------------------------
  262. For native build on Raspberry Pi itself, use the similar process for Linux
  263. Desktop build described above.
  264. For cross-compiling build on another build/host machine, firstly set the
  265. RASPI_TOOL environment variable to point to your Raspberry Pi Cross-Compiling
  266. tool where all the arm-linux-gnueabihf-* executables are located. You can setup
  267. the tool using crosstool-NG (http://crosstool-ng.org/) or just download one
  268. from https://github.com/raspberrypi/tools. Secondly, set the RASPI_ROOT
  269. environment variable to point to your Raspbian or Pidora system root. You must
  270. install the Urho3D prerequisites software development packages for Raspberry Pi
  271. (see "Building_Prerequisites") in the system root before attempting to do the
  272. Urho3D cross-compiling build. You can download a Raspbian system root from
  273. https://github.com/urho3d/rpi-sysroot.
  274. When running cmake_gcc.sh with RASPI_TOOL environment variable set, it tells
  275. build script to generate additional raspi-Build directory for cross-compiling.
  276. Go to this raspi-Build directory and proceed to execute make. After the build
  277. is complete, the ARM executables can be found in Bin-CC output directory.
  278. You can also build, deploy, run/debug (as C/C++ Remote Application) using
  279. Eclipse IDE, if you run cmake_eclipse.sh to generate the project file. Import
  280. the CMake generated Eclipse project in the raspi-Build directory into Eclipse's
  281. workspace. Build the project as usual. Use the URHO3D_SCP_TO_TARGET build option
  282. to automatically deploy the ARM executables to target Raspberry Pi as part of
  283. every project build or configure Eclipse to perform a "download to target path"
  284. in the Run/Debug configuration for C/C++ Remote Application. Either way, you
  285. have to configure the Run/Debug configuration how to reach your target Raspberry
  286. Pi.
  287. MinGW cross-compile build process
  288. ---------------------------------
  289. It is possible to cross-compile Urho3D for Windows using a Linux system. The
  290. process is largely the same as for the Linux Desktop build process described
  291. above.
  292. To cross-compile, the MinGW tool-chain (compiler, linker and w32api) needs to be
  293. installed on the system. You will also need the DirectX header files, those can
  294. be downloaded and installed from the following packet:
  295. http://www.libsdl.org/extras/win32/common/directx-devel.tar.gz.
  296. For activating the MinGW tool-chain, and to allow it to find the correct
  297. compiler, the MINGW_PREFIX environment variable needs to be set when running
  298. cmake_gcc.sh. This variable should be set to the prefix of the compiler name.
  299. So, if for example your MinGW compiler is named i686-pc-mingw32-gcc, the
  300. MINGW_PREFIX should read i686-pc. Most likely you also need to set MINGW_ROOT
  301. environment variable to point to your mingw32 system root.
  302. Running cmake_gcc.sh with the MINGW_PREFIX environment variable set, produces
  303. an additional mingw-Build directory. Go to this directory and execute make to
  304. start the build process. When the build is complete, the Windows executables can
  305. be found in the mingw-Bin output directory.
  306. Desktop 64bit build
  307. -------------------
  308. When using MSVC compiler, the Urho3D CMake build script will configure the
  309. Urho3D project to be built in 32-bit by default. When using other non-MSVC
  310. compilers (like GCC or clang), the CMake build script will set the default to
  311. 32-bit or 64-bit based on the installed toolchain in the host system. You can
  312. use the build option "URHO3D_64BIT" to override the default, by setting the
  313. option to '0' (for 32-bit) and '1' (for 64-bit) explicitly. For MSVC on Windows
  314. platform, setting the option to '1' also instructs the build script to use a
  315. 64-bit solution generator.
  316. Library build
  317. -------------
  318. As of v1.31, the build process first builds the Urho3D library target (either
  319. static or shared). The library is then linked against by other targets like
  320. tools and samples that reference Urho3D as one of the external libraries. The
  321. Urho3D library type is defaulted to static, so the build process would generate
  322. standalone executables as previous releases. The Urho3D library type can be
  323. changed using "URHO3D_LIB_TYPE" build option.
  324. To install the Urho3D library (or should we call it SDK), use the usual
  325. 'make install' command when using Makefile. There is an equivalent command in
  326. Visual Studio and Xcode IDE to build 'install' target instead of the default
  327. 'all' target. This could be useful when you want your application to always link
  328. against a 'stable' installed version of the Urho3D library, while keeping your
  329. Urho3D project root tree in sync with origin/master. That is, install the newly
  330. built library after you have tested the changes do not break your application
  331. during development.
  332. Refer to "Using Urho3D as external library" on how to setup your own project to
  333. use Urho3D as external library.
  334. Documentation build
  335. -------------------
  336. If URHO3D_DOCS build option is set then a normal (ALL) build would not only
  337. build Urho3D software but also Urho3D documentation automatically. If it is not
  338. then the documentation can be generated by manually invoking 'make doc' command
  339. or its equivalent command in IDE.
  340. The prerequisites are Doxygen and Graphviz. Tools to dump the AngelScript API
  341. for the default scripting subsystem and the LuaScript API (when the LuaScript
  342. subsystem is also enabled) will be built internally when all the tools are being
  343. built.
  344. Compiling Direct3D shaders
  345. --------------------------
  346. When building with the Windows 8 SDK, copy d3dcompiler_46.dll from
  347. C:/Program Files (x86)/Windows Kits/8.0/bin/x86 to Urho3D Bin directory so that
  348. Urho3D executables will run correctly.
  349. Note that you can also force an OpenGL mode build on Windows by using the CMake
  350. option in the table below; OpenGL does not depend on a separate shader compiler
  351. DLL.
  352. Build options
  353. -------------
  354. A number of build options can be defined explicitly when invoking the above
  355. cmake_xxxx batch files or shell scripts.
  356. |---------------------|-|------------------------------------------------------|
  357. |Build Option |V|Description |
  358. |---------------------|-|------------------------------------------------------|
  359. |URHO3D_64BIT |-|Enable 64bit build, on MSVC default to 0, on other |
  360. | | | compilers the default is set based on the installed |
  361. | | | toolchain on host system |
  362. |URHO3D_ANGELSCRIPT |1|Enable AngelScript scripting support |
  363. |URHO3D_LUA |0|Enable Lua scripting support |
  364. |URHO3D_LUAJIT |0|Enable Lua scripting support using LuaJIT (check |
  365. | | | LuaJIT's CMakeLists.txt for more options) |
  366. |URHO3D_LUAJIT_AMALG |0|Enable LuaJIT amalgamated build (LuaJIT only) |
  367. |URHO3D_SAFE_LUA |0|Enable Lua C++ wrapper safety checks (when Lua |
  368. | | | scripting support is enabled only) |
  369. |URHO3D_NETWORK |1|Enable Networking support |
  370. |URHO3D_PHYSICS |1|Enable Physics support |
  371. |URHO3D_NAVIGATION |1|Enable Navigation support |
  372. |URHO3D_URHO2D |1|Enable 2D rendering & physics support |
  373. |URHO3D_SAMPLES |0|Build sample applications |
  374. |URHO3D_TOOLS |1|Build standalone tools (Desktop and RPI only; |
  375. | | | on Android only build Lua standalone tools) |
  376. |URHO3D_EXTRAS |0|Build extras (Desktop and RPI only) |
  377. |URHO3D_DOCS |0|Generate documentation as part of normal build (the |
  378. | | | 'doc' builtin target can be used to generate |
  379. | | | documentation regardless of this option's value) |
  380. |URHO3D_DOCS_QUIET |0|Generate documentation as part of normal build, |
  381. | | | suppress generation process from sending anything to |
  382. | | | stdout |
  383. |URHO3D_SSE |1|Enable SSE instruction set |
  384. |URHO3D_MINIDUMPS |1|Enable minidumps on crash (VS only) |
  385. |URHO3D_FILEWATCHER |1|Enable filewatcher support |
  386. |URHO3D_PROFILING |1|Enable profiling support |
  387. |URHO3D_LOGGING |1|Enable logging support |
  388. |URHO3D_TESTING |0|Enable testing support |
  389. |URHO3D_TEST_TIME_OUT |5|Number of seconds to test run the executables (when |
  390. | | | testing support is enabled only) |
  391. |URHO3D_OPENGL |0|Use OpenGL instead of Direct3D (Windows platform only)|
  392. |URHO3D_MKLINK |0|Use mklink command to create symbolic links (Windows |
  393. | | | Vista and above only) |
  394. |URHO3D_STATIC_RUNTIME|0|Use static C/C++ runtime libraries and eliminate the |
  395. | | | need for runtime DLLs installation (VS only) |
  396. |URHO3D_LIB_TYPE |*|Specify Urho3D library type, possible values are |
  397. | | | STATIC (*default) and SHARED |
  398. |URHO3D_SCP_TO_TARGET |-|Use scp to transfer executables to target system (non-|
  399. | | | Android cross-compiling build only), SSH digital key |
  400. | | | must be setup first for this to work, typical value |
  401. | | | has a pattern of usr@tgt:remote-loc |
  402. |URHO3D_NDK_GDB |0|Enable ndk-gdb for debugging (Android build only) |
  403. |CMAKE_BUILD_TYPE |*|Specify CMake build configuration to be generated |
  404. | | | (Makefile generator only), possible values are |
  405. | | | Release (*default), Debug, and RelWithDebInfo |
  406. |CMAKE_OSX_ |-|Specify Mac OS X deployment target (OSX build only); |
  407. | DEPLOYMENT_TARGET | | default to current running OS X if not specified |
  408. |IPHONEOS_ |-|Specify iPhone OS deployment target (iOS build only); |
  409. | DEPLOYMENT_TARGET | | default to latest installed iOS SDK if not specified |
  410. |ANDROID_ABI |*|Specify target ABI (Android build only), possible |
  411. | | | values are armeabi, armeabi-v7a (*default), |
  412. | | | armeabi-v7a with NEON, armeabi-v7a with VFPV3, |
  413. | | | armeabi-v6 with VFP, arm64-v8a, x86, and x86_64 |
  414. |---------------------|-|------------------------------------------------------|
  415. Note that build option values specified via command line are cached by CMake.
  416. The cached values will be used by CMake in the subsequent invocation. That is,
  417. the same build options are not required to be specified again and again. Once a
  418. non-default build option value is being cached, it can only be reverted back to
  419. its default value by explicitly setting it via command line. That is, simply by
  420. NOT passing the corresponding build option would not work. One way to revert all
  421. the build options to their default values is by clearing the CMake cache by
  422. calling cmake_clean.bat or cmake_clean.sh.
  423. Using cmake-gui to configure and generate Urho3D project file
  424. -------------------------------------------------------------
  425. Instead of using one of the provided batch files or shell scripts, you can use
  426. cmake-gui to configure and generate Urho3D project file. However, you have to
  427. adhere to the current limitations:
  428. - The build directory must be located inside the Urho3D project root directory
  429. and sibling of the "Source" directory.
  430. - The build directory must be named accordingly based on the target platform.
  431. - On desktop/native platform: Build
  432. - On Windows platform using MinGW: mingw-Build
  433. - On iOS platform: ios-Build
  434. - On Android platform: android-Build
  435. - On Raspberry Pi platform: raspi-Build
  436. - The runtime and archive output directories are automatically set based on the
  437. target platform regardless of the build directory name (should you choose not
  438. to adhere with the above). For example on Android platform, they will be
  439. android-Bin and android-Lib, respectively.
  440. If you choose not to adhere with this build directory naming convention then
  441. you will have to install the Urho3D library into your local filesystem in
  442. order to use the Urho3D library in your external project.
  443. See http://urho3d.github.io/documentation/HEAD/_building.html#Building_Library
  444. and http://urho3d.github.io/documentation/HEAD/_using_library.html#FromSDK.
  445. - All the post-CMake workaround and/or bug fixes that are scripted in the batch
  446. files or shell scripts are not applied to the generated project file.
  447. Steps to configure:
  448. 1. In the Urho3D project root directory, invoke "cmake-gui Source".
  449. 2. Set the build directory name.
  450. 3. Configure and update the build options as many times as necessary until there
  451. are no more new options in red. For the first configuration, choose the
  452. generator you like to use. Click the Group check box to group the build
  453. options.
  454. - In the Ungrouped Entries: check IOS option when targeting it on Xcode.
  455. - In the URHO3D group: check any of the options you desire. Some of the
  456. options when checked may cause new options to be made available in the
  457. subsequent configuration loop.
  458. 4. Generate when all the configurations are done.
  459. History
  460. -------
  461. V1.32 - Finalized Urho2D functionality, including 2D physics using Box2D,
  462. sprite animation and tile maps
  463. - Threaded background resource loading. Must be manually triggered via
  464. ResourceCache or by loading a scene asynchronously
  465. - Attribute and material shader parameter animation system
  466. - Customizable onscreen joystick for mobile platforms. Used in examples
  467. - Touch camera control in examples on mobile platforms
  468. - Touch emulation by mouse
  469. - Multi-touch UI drag support
  470. - Consistent touch ID's across platforms
  471. - Absolute, relative and wrap modes for the operating system mouse cursor
  472. - Support for connecting & removing joysticks during runtime
  473. - Negative light & light brightness multiplier support
  474. - Transform spaces for Node's translate, rotate & lookat functions
  475. - Scrollable console
  476. - Selectable console command interpreter (AngelScript, Lua, FileSystem)
  477. - Touch scroll in ScrollView & ListView
  478. - UI layout flex scale mode
  479. - Custom sound streams from C++
  480. - LogicComponent C++ base class with virtual update functions similar to
  481. ScriptObject
  482. - Signed distance field font support
  483. - JSON data support
  484. - Matrix types in Variant & XML data
  485. - Intermediate rendertarget refactoring: use viewport size to allow
  486. consistent UV addressing
  487. - ParticleEmitter refactoring: use ParticleEffect resource for
  488. consistency with ParticleEmitter2D and more optimal net replication
  489. - Expose LZ4 compression functions
  490. - Support various cube map layouts contained in a single image file
  491. - Configurable Bullet physics stepping behavior. Can use elapsed time
  492. limiting, or a variable timestep to use less CPU
  493. - Default construct math objects to zero / identity
  494. - Mandatory registration for remote events. Check allowed event only
  495. when receiving
  496. - Teapot & torus builtin objects
  497. - FXAA 3.11 shader
  498. - Triangle rendering in DebugRenderer (more efficient than 3 lines)
  499. - Material/texture quality and anisotropy as command line options and
  500. engine startup parameters
  501. - Spline math class, which the SplinePath component uses
  502. - Console auto-show on error
  503. - DrawableProxy2D system for optimizing 2D sprite drawing
  504. - Possibility to decouple BorderImage border UV's from element size
  505. - Editor & NinjaSnowWar resources split into subdirectories
  506. - UI hover start & end events
  507. - UI drag cancel by pressing ESC
  508. - Allowed screen orientations can be controlled. Effective only on iOS
  509. - Rendering sceneless renderpaths
  510. - Define individual material passes as SM3-only
  511. - Support for copying ListView text to system clipboard
  512. - Async system command execution
  513. - Generic attribute access for Lua script objects
  514. - Use Lua functions directly as event subscribers
  515. - Touch gesture recording and load/save
  516. - AssetImporter option to allow multiple import of identical meshes
  517. - Automatically create a physics world component to scene when necessary
  518. - GetSubimage function in the Image class
  519. - Possibility to clone existing components from another scene node
  520. - Improve terrain rendering on mobile devices
  521. - Refactoring of camera facing modes in BillboardSet & Text3D
  522. - Additive alpha techniques for particle rendering
  523. - Possibility to use CustomGeometry component for physics triangle mesh
  524. collision
  525. - Access to 2D node coordinates for convenience when using 2D graphics
  526. features
  527. - Save embedded textures in AssetImporter
  528. - Use best matching fullscreen resolution if no exact match
  529. - Use SDL_iPhoneSetAnimationCallback instead of blocking main loop
  530. - Allow fast partial terrain updates by modifying the heightmap image
  531. - API for setting image pixels by integer colors
  532. - Refactor to remove the separate ShortStringHash class
  533. - Deep clone functionality in Model resource
  534. - Zone can define a texture which is available to shaders. Not used by
  535. default
  536. - Allow logging from outside the main thread
  537. - Log warnings for improper attempts to use events from outside main
  538. thread
  539. - Improved CustomGeometry dynamic updates
  540. - ConvexCast function in PhysicsWorld
  541. - Screen to world space conversion functions in Viewport class
  542. - Allow sending client rotation to server in addition to position
  543. - Allow accessing and modifying the engine's next timestep
  544. - DeepEnabled mechanism for disabling node or UI element hierarchies and
  545. then restoring their own enabled state
  546. - Allow to prevent closing a modal window with ESC
  547. - Per-viewport control of whether debug geometry should render
  548. - Optional interception of resource requests
  549. - Readded optional slow & robust mode to AreaAllocator
  550. - Optionally disable RigidBody mass update to allow fast adding of
  551. - several CollisionShape components to the same node
  552. - Runtime synchronization of resource packages from server to client
  553. - Disable multisample antialiasing momentarily during rendering. Used by
  554. default for UI & quad rendering
  555. - Glyph offset support in Font class
  556. - Font class internal refactoring
  557. - Allow to create AngelScript script objects by specifying the interface
  558. it implements
  559. - Window position startup parameters
  560. - Functions to get time since epoch & modify file's last modified time
  561. - Optionally auto-disable child elements of a scroll view when touch
  562. scrolling
  563. - Allocate views permanently per viewport to allow querying for
  564. drawables, lights etc. reliably
  565. - Allow to specify material techniques/passes that should not be used
  566. on mobile devices
  567. - Reduced default shadow mapping issues on mobile devices
  568. - Minor rendering optimizations
  569. - Build system: possibility to build Urho3D without networking or 2D
  570. graphics functionality
  571. - Build system: improved generated scripting documentation
  572. - Build system: improved support for IDE's in CMake scripts
  573. - Build system: support up to Android NDK r10c and 64-bit ABIs
  574. - Build system: numerous other improvements
  575. - Editor: resource browser
  576. - Editor: spawn window for random-generating objects
  577. - Editor: allow either zoom or move from mouse wheel
  578. - Editor: locate object by doubleclicking node in hierarchy
  579. - Editor: take screenshots with F11, camera panning
  580. - Editor: button in value edit fields that allows editing by mouse drag
  581. - Updated SDL to 2.0.3.
  582. - Updated AngelScript to 2.29.1
  583. - Updated assimp
  584. - Updated Recast/Detour
  585. - Fix MinGW build issues
  586. - Fix techniques referring to wrong shaders
  587. - Fix Node::LookAt() misbehaving in certain situations
  588. - Fix resize event not reporting correct window size if window is
  589. maximized at start
  590. - Fix PhysicsWorld::GetRigidBodies() not using collision mask
  591. - Fix zone misassignment issues
  592. - Fix Lua not returning correctly typed object for UIElement::GetChild()
  593. & UIElement::GetParent()
  594. - Fix uninitialized variables in 2D physics components
  595. - Fix quad rendering not updating elapsed time uniform
  596. - Fix forward rendering normal mapping issues by switching calculations
  597. back to world space
  598. - Fix wrong logging level on Android
  599. - Fix multiple subscribes to same event on Lua
  600. - Fix missing Octree update in headless mode
  601. - Fix crash when using FreeType to access font kerning tables
  602. - Fix ReadString() endless loop if the string does not end
  603. - Fix shadow mapping on OS X systems with Intel GPU
  604. - Fix manually positioned bones being serialized properly
  605. - Fix file checksum calculation on Android
  606. - Fix accelerometer input on Android when device is flipped 180 degrees
  607. - Fix missing or misbehaving Lua bindings
  608. - Fix crashes in physics collision handling when objects are removed
  609. during it
  610. - Fix shader live reload if previous compile resulted in error
  611. - Fix named manual textures not recreating their GPU resource after
  612. device loss
  613. - Fix skeleton-only model not importing in AssetImporter
  614. - Fix terrain raycast returning incorrect position/normal
  615. - Fix animation keyframe timing in AssetImporter if start time is not 0
  616. - Fix storing Image resources to memory unnecessarily during cube/3D
  617. texture loading
  618. - Fix to node transform dirtying mechanism and the TransformChanged()
  619. script function
  620. - Fix returned documents directory not being writable on iOS
  621. - Fix click to emptiness not closing a menu
  622. - Fix FileWatcher notifying when file was still being saved. By default
  623. delay notification 1 second
  624. - Fix .txml import in the editor
  625. - Fix erroneous raycast to triangles behind the ray
  626. - Fix crash when multiple AnimatedModels exist in a node and the master
  627. model is destroyed
  628. - Fix missing Matrix4 * Matrix3x4 operator in script
  629. - Fix various compile warnings that leak to applications using Urho3D
  630. - Fix DebugHud update possibly being late one frame
  631. - Fix various macros not being usable outside Urho3D namespace
  632. - Fix erroneous layout with wordwrap text elements
  633. - Fix debug geometry rendering on flipped OpenGL viewports
  634. - Fix kNet debug mode assert with zero sized messages
  635. - Fix not being able to stop and restart kNet server
  636. - Fix AreaAllocator operation
  637. - Fix possible crash with parented rigidbodies
  638. - Fix missing network delta update if only user variables in a Node have
  639. been modified
  640. - Fix to only search for June 2010 DirectX SDK, as earlier SDK's will
  641. fail
  642. - Fix wrong search order of added resource paths
  643. - Fix global anisotropic filtering on OpenGL
  644. - Fix animation triggers not working if trigger is at animation end
  645. - Fix CopyFramebuffer shader name not being used correctly on case-
  646. sensitive systems
  647. - Fix UI elements not receiving input when the window containing them is
  648. partially outside the screen to the left
  649. - Fix occlusion rendering not working with counterclockwise triangles
  650. - Fix material shader parameter animations going out of sync with other
  651. animations when the object using the material is not in view
  652. - Fix CPU count functions on Android
  653. V1.31 - Extensive build system improvements, especially for using Urho3D as
  654. a library in an external project.
  655. - LuaJIT support.
  656. - Improved Lua bindings, Lua coroutine support, automatic loading of
  657. compiled Lua scripts (.luc) if they exist.
  658. - HDR rendering, 3D textures, height fog and several new post process
  659. shaders.
  660. - Shader refactoring. Need for XML shader descriptions & ShaderCompiler
  661. tool removed.
  662. - Reflection / refraction rendering support.
  663. - 2D drawable components: StaticSprite2D, AnimatedSprite2D,
  664. ParticleEmitter2D.
  665. - ToolTip & MessageBox UI elements. UI logic improvements.
  666. - Optimized text rendering + dynamic population of font textures for
  667. improved batching.
  668. - AngelScript DelayedExecute for free functions, and event handling for
  669. any script object, not just ScriptInstances
  670. - Editor: added grid, toolbar, camera view presets, camera orbit,
  671. mouse wheel zoom, multiple viewports and orthographic camera.
  672. - Borderless window mode, possibility to change application icon.
  673. - SDL GameController support, raw key codes support.
  674. - Optimized shadow rendering on mobile devices. Low quality mode
  675. avoids dependent texture reads.
  676. - HttpRequest class runs in a background thread to avoid blocking.
  677. - Compressed package file support using the LZ4 library.
  678. - Cone parameters in SoundSource3D for directional attenuation.
  679. - Variant GetPtr() safety refactoring. Uses WeakPtr to store RefCounted
  680. subclasses. Use GetVoidPtr() to store unsafe arbitrary pointers.
  681. - Improved work queue completion events. Work items are now RefCounted
  682. to allow persisting them as necessary.
  683. - Allow to disable automatic execution of AngelScript & Lua from the
  684. engine console.
  685. - Added shader variations, for example ambient occlusion texture and
  686. better emissive color support.
  687. - Added examples.
  688. - Update SDL to 2.0.1
  689. - Update AngelScript to 2.28.1.
  690. - Update FreeType to 2.5.0.
  691. - Fix partial texture updates, both Direct3D9 & OpenGL.
  692. - Fix long-standing audio click bug.
  693. - Fix kinematic rigidbodies to apply impulses correctly to dynamic
  694. bodies.
  695. - Plus many more improvements and bugfixes.
  696. V1.3 - Lua scripting support.
  697. - Optional build as a single external library, static or dynamic.
  698. - Raspberry Pi support.
  699. - 64-bit build support.
  700. - HTTP client using the Civetweb library.
  701. - Enhanced CMake build scripts. Android build also uses CMake.
  702. Use out-of-source build on platform that supports it.
  703. - Rendering performance optimizations, optional StaticModelGroup
  704. component for culling and lighting several objects as one unit.
  705. - A set of sample applications implemented in C++, AngelScript and Lua.
  706. - Automatic Node/component handle member variable serialization for
  707. AngelScript script objects.
  708. - New UI theme.
  709. - Shadow & stroke effects in Text & Text3D.
  710. - Boolean shader uniforms.
  711. - Quick menu in the editor.
  712. - Material editor and preview in the editor.
  713. - Editable attributes for particle emitters.
  714. - Components are grouped into categories in the editor.
  715. - Update SDL to stable 2.0.0 release.
  716. - Several other improvements and bugfixes.
  717. V1.23 - UI editing support in the editor.
  718. - Undo/redo in the editor.
  719. - Recast/Detour library integration for navigation mesh generation and
  720. pathfinding.
  721. - Open Asset Import Library update, enables FBX file support.
  722. - "Is Enabled" attribute in scene nodes and components for an uniform
  723. mechanism to temporarily disable unneeded audiovisual, physics or
  724. logic objects.
  725. - Script object public variables editing and serialization.
  726. - New components: Text3D and Sprite.
  727. - UI library functionality improvements.
  728. - sRGB texture and framebuffer support.
  729. - Switched to GLEW library for OpenGL extension handling.
  730. - Vegetation and lightmapping example shaders.
  731. - Engine configuration through a parameter map.
  732. - Lots of refactoring, code cleanup and bugfixes.
  733. V1.22 - Configurable render path replaces hardcoded forward/prepass/deferred
  734. modes. Render path system also used for postprocessing now.
  735. - Threaded task priorities; long-running tasks (more than one frame) can
  736. coexist with the time-critical tasks.
  737. - Possibility to use also RGB normal maps.
  738. - CustomGeometry component, which allows geometry to be defined
  739. similarly to OpenGL immediate mode.
  740. - Elapsed time shader parameter for material animation.
  741. - Cubic environment mapping example shaders.
  742. - Separate physics collision start & end events.
  743. - Visual Studio 2012, Eclipse & Xcode build support.
  744. - Many bugfixes, including iOS 6 orientation & shadow mapping bugfixes,
  745. skinning on some Android devices.
  746. V1.21 - Bugfixes and code cleanup.
  747. - External window support (experimental.)
  748. - UI elements refactored to use attributes for serialization.
  749. - Animation state editing and animation trigger events.
  750. - Scene update time scale can be modified.
  751. - Improved the delayed method call system.
  752. V1.2 - Android and iOS support.
  753. - Decal rendering.
  754. - Terrain rendering.
  755. - Joystick input support.
  756. - Use SDL library for windowing and input on all platforms.
  757. - KTX and PVR image loading (for ETC1 & PVRTC compressed textures.)
  758. - Removed need for shader preprocessing; reorganized shaders to be more
  759. friendly to base custom shaders on.
  760. - Inbuilt geometry shapes in the editor.
  761. V1.16 - Switched to Bullet physics library.
  762. - More physics constraint types.
  763. - Rendering and networking performance optimizations.
  764. - Use Squish library to implement software DXT decompression when not
  765. supported in hardware.
  766. V1.15 - New deferred rendering pipeline.
  767. - Unicode support.
  768. - Live resource reloading in the editor (Windows only so far.)
  769. - More accurate frame timing.
  770. - Bugfixes to physics jittering and FBO performance issue on Linux.
  771. V1.14 - Object (partial scene) load/save.
  772. - Post-processing.
  773. - Switched to pugixml library, scene load/save optimizations.
  774. - Bugfixes to rendertexture views and component attributes.
  775. V1.13 - Task-based multithreading.
  776. - Vertex lighting option.
  777. - Forward and light pre-pass rendering pipelines.
  778. V1.12 - Manipulator gizmo and multi-editing in the editor.
  779. - Switched to forward rendering exclusively, which is optimized to do
  780. more work in the vertex shader.
  781. - Zone system refactoring. Objects check the zone they belong to for
  782. per-zone light masking, ambient light and fog settings.
  783. - Scripting API fixes and improvements.
  784. V1.11 - Bugfixes and performance optimizations.
  785. - Added GraphicsTest example from V1.0 (now called TestSceneOld.)
  786. - Added fallback mode, which is used if multiple render targets or
  787. hardware shadow maps are not available.
  788. V1.1 - Object and scene model refactoring.
  789. - Automatic serialization of scene objects via attributes.
  790. - Added OpenGL and cross-platform support.
  791. - Switched to kNet library for networking.
  792. V1.0 - Original release.