Commit Graph

539 Commits

Author SHA1 Message Date
Lasse Öörni
8077ee4a53 Added option to OgreImporter to save material list file next to the model. 2013-10-28 21:35:53 +02:00
Yao Wei Tjong 姚伟忠
e34e26d068 Merge branch 'library-build'. 2013-10-23 15:15:03 +08:00
Lasse Öörni
f39702a07e Terminology edits in the documentation. Do not refer to Graphics, Scene etc. as separate libraries anymore. 2013-10-22 00:58:58 +03:00
Lasse Öörni
fe14af594f Added documentation section on Lua garbage collection. 2013-10-20 12:12:18 +03:00
Lasse Öörni
c6a6f71aa3 Finalize LZ4 support. Do not repeatedly allocate compressed data buffer. Do not store global blocksize into the package file header. Increased Android read buffer to 32KB. 2013-10-12 15:03:17 +03:00
Lasse Öörni
1463b67a70 Added documentation on the package file format. 2013-10-12 15:03:17 +03:00
Lasse Öörni
bd9f229045 Documented the optimization underlying node transform dirty notifications; you must use eg. GetWorldPosition() to undirty the node to get further notifications. 2013-09-28 18:12:29 +00:00
Lasse Öörni
c7f098de3e Updated documentation on changed Lua function call mechanism. 2013-09-27 21:36:19 +00:00
Lasse Öörni
c3870201b9 Added TransformChanged() script method to ScriptInstance & LuaScriptInstance. Called when node transform changes (hooks to OnMarkedDirty() on C++ side)
Ensure that LuaScriptInstance listens only to its own scene's & physics world's update events.
Changed LuaScriptInstance to use IsEnabledEffective() to make sure it gets disabled if the node is disabled.
2013-09-27 20:56:35 +00:00
Lasse Öörni
eb6ba62ab9 Added the LuaScript library to Doxygen documentation.
Added LuaScript doxygen page.
2013-09-22 23:41:27 +00:00
Wei Tjong Yao
0c02a88add Supplement documentation regarding UI default style file. 2013-09-16 16:40:19 +00:00
Lasse Öörni
22d579eea7 Documented the need to either specify a UI style file when loading a layout, or having it set to the root element beforehand. 2013-09-16 14:46:26 +00:00
Wei Tjong Yao
27a68828ce Corrected typo in documentation for renderpath's quad command. 2013-09-15 21:10:31 +00:00
Lasse Öörni
dda39f2b7d Initial work for serializing Node / Component handles from a script object automatically. 2013-09-15 19:08:05 +00:00
Lasse Öörni
0f5456d35e Avoid unnecessary rendertarget blitting in OpenGL light prepass mode.
Fixed too dark ambient lighting and environment cube mapping in OpenGL deferred mode.
Added new shader function GetQuadTexCoordNoFlip() which can be used to sample regular texture resources in postprocessing quad passes and documented it.
Removed Camera::SetFlipVertical() from the Lua script API as it should only be called internally to handle OpenGL / Direct3D9 differences.
2013-09-14 22:20:39 +00:00
Lasse Öörni
0d478d91ff Updated documentation regarding Engine::Exit(). 2013-09-10 21:37:55 +00:00
Lasse Öörni
c089229104 Added documentation on HTTP requests. 2013-09-10 21:33:43 +00:00
Lasse Öörni
05ba4bf719 Favor the non-parented case for SetWorld...() and for updating the world transform.
Explain in documentation that the Scene transform is ignored.
2013-09-04 08:26:47 +00:00
Lasse Öörni
c9865078ad List tools in alphabetical order in the documentation; fixed outdated information. 2013-09-02 21:11:28 +00:00
Lasse Öörni
4cc1858329 Removed the old large script example applications and batch files to start them.
Updated documentation for the new sample applications.
Changed the Lua sprite example to use the common sample initialization.
2013-09-02 18:50:15 +00:00
Lasse Öörni
3c6a0f57d7 In the SoundEffects sample, start/stop music when buttons released. 2013-08-31 12:41:37 +00:00
Lasse Öörni
e7558a3be9 Demonstrate rolling friction in the Ragdolls sample. 2013-08-24 20:21:16 +00:00
Lasse Öörni
560ffd03c2 Moved the Urho3D application code to Tools directory.
Updated documentation.
2013-08-06 15:09:47 +00:00
Lasse Öörni
ae5871d912 Documented Application class.
Added deprecation note to the C++ Quickstart documentation page.
Fixed ScriptCompiler.
2013-07-26 14:04:27 +00:00
Lasse Öörni
e908a9076a Support defining different action buttons for different resource types in the editor.
Added functionality to test animations in the editor.
Expose RefCounted class properly to script so that WeakHandle can point to all RefCounted types instead of just Object.
2013-07-20 13:53:42 +00:00
Lasse Öörni
3cd4625ad1 Store shader parameters as Variants to preserve the coordinate count & distinguish between eg. floats and Vector4's.
Fixed Lua API (bindings of RenderSurface object) in OpenGL mode.
2013-07-19 19:58:58 +00:00
Lasse Öörni
6d852735b2 Removed the hacks to detect emulated mouse in NinjaSnowWar.
Modify SDL to remove Android & iOS emulated mouse events, and to detect Windows emulated mouse events and disregard them.
Fixed touch handling in UI.
Added Button::IsPressed() function.
2013-07-14 14:33:51 +00:00
Lasse Öörni
c37695b16a For consistency, emulate touch as mouse on all platforms (on Windows it is unavoidable.)
Fix erroneous controls in NinjaSnowWar when touch control is used on Windows.
2013-07-13 16:44:43 +00:00
Lasse Öörni
09463e6963 Documentation edit. 2013-07-08 21:34:48 +00:00
Lasse Öörni
ad7b7451b4 As latest SDL was found to be non-threadsafe in practice, removed the StaticMutex and the OBJECTTYPESTATIC constructs which were added to support multi-context use within a single process.
Fixed single SDL memory leak on exit.
2013-07-06 12:30:40 +00:00
Lasse Öörni
1114a3fc28 Option to disable the InternalEdgeUtility.
Mention indent spacing in coding conventions.
2013-06-26 08:54:56 +00:00
Lasse Öörni
1fdf228359 Move the AngelScript API registration to the Script library and inverted the Script <-> Engine library dependency.
Move object factory registration into the subsystems where possible.
2013-06-26 00:09:02 +00:00
Lasse Öörni
da953b8aa7 Write morph tangents as Vector3's in OgreImporter.
Fixed example particle system description files using wrong attribute name for sorting.
Clarified vertex weight threshold for bone hitbox calculation.
2013-06-16 18:24:31 +00:00
Lasse Öörni
5be5222cb8 Added ParticleEmitter attributes.
Added public API to ParticleEmitter.
Fixed crashes from setting negative element count in editor (number of animation states, billboards etc.)
Limit maximum billboard count due to index data being 16 bit.
2013-06-01 14:26:03 +00:00
Lasse Öörni
3c244f9755 Allow live-reload of particle emitter parameters file.
Allow also specifying emission rate instead of emission interval.
Allow emitting multiple particles per frame if necessary.
Restored the "effect" component category in the editor. ParticleEmitter & DecalSet belong to it now.
2013-05-30 23:20:40 +00:00
Lasse Öörni
b8270df90b Added error logging for cases of components in detached nodes trying to find Octree or PhysicsWorld, or subscribing to update events.
Added error logging if a node is moved from one scene to another (unsupported.)
2013-05-24 10:19:46 +00:00
Lasse Öörni
483e07c2e8 Print warning if node is not found for node animation.
Update documentation on playing back node animations.
2013-05-12 16:34:42 +00:00
Lasse Öörni
f14cb1aafc Possibly fixed BlenderLoader heap corruption.
Removed incompatible Assimp processing flag.
2013-05-02 21:25:57 +00:00
Lasse Öörni
be9cef51a4 AssetImporter Optimize Graph process not done by default, but needs to be manually activated with the -o switch. 2013-05-02 17:18:59 +00:00
Lasse Öörni
8b28c12ae6 Added instancing to the OpenGL renderer, requires the ARB_instanced_arrays extension. 2013-05-01 15:14:31 +00:00
Lasse Öörni
7ba580852d Allow custom forward base, lighting and alpha pass names by defining metadata in the render path, and allowing the forwardlights command to specify the pass name to use. 2013-04-28 11:45:10 +00:00
Lasse Öörni
4027f650cd Fixed exposing of UIElement::GetDefaultStyle() to script.
Documentation update.
2013-04-27 11:08:36 +00:00
Lasse Öörni
8f5623d9bb Renamed RenderPath::LoadParameters() to Load() and ParticleEmitter::LoadParameters() to SetParameters() as LoadParameters() is used in other classes to denote loading of optional parameters, not the main asset itself.
Fixed incorrect exposing of BillboardSet::GetMaterial() & ParticleEmitter::GetMaterial() to script.
2013-04-24 21:38:09 +00:00
Lasse Öörni
f4a3014d75 Corrected ShaderCompiler documentation.
ShaderCompiler output dir is no longer mandatory, if not specified, will use input dir.
2013-04-24 17:05:06 +00:00
Lasse Öörni
1f8b84c4dc Text3D minor code cleanup.
Mention Text3D in the rendering documentation.
2013-04-15 21:48:54 +00:00
Lasse Öörni
bc4b428295 Allow UI to operate without a defined cursor element, if the operating system cursor is visible. 2013-04-14 11:13:15 +00:00
Lasse Öörni
c1e1c20ea2 Added documentation page on navigation. 2013-04-09 21:26:10 +00:00
Lasse Öörni
b45fac020f Applied AssetImporter & MathAPI patch from primitivewaste. 2013-04-05 06:44:47 +00:00
Lasse Öörni
0705a15c11 Further small fixes to the main loop documentation. 2013-04-01 15:22:55 +00:00
Lasse Öörni
9532e7fdd1 Renamed documentation page. 2013-04-01 15:14:59 +00:00
Lasse Öörni
a963ce7d37 Documented missing LogName parameter. 2013-04-01 14:54:03 +00:00
Lasse Öörni
b28621a3a4 Documented engine initialization parameters. 2013-04-01 14:33:38 +00:00
Lasse Öörni
5830f0e5d1 Convention change: prefer Enabled instead of Active where possible.
Do not transmit hover to input-disabled UI elements.
Documented the node/component enable/disable mechanism.
2013-03-26 00:37:02 +00:00
Lasse Öörni
6fe17dd966 Documentation and wiki update. 2013-03-24 23:07:58 +00:00
Lasse Öörni
b4599e046d Hardware sRGB texture support. OpenGL sRGB framebuffer writing implementation still missing. 2013-03-24 20:05:08 +00:00
Lasse Öörni
5160610e25 Refactored freely rotating / scaling UIElements into a separate Sprite class; removed rotation from the base class as it would not work correctly with element hierarchies in most cases. 2013-03-23 17:50:11 +00:00
Lasse Öörni
852047545e Added section on bytecode precompilation to the scripting documentation page.
ScriptInstance sends an event when the script object is created, so that the attribute inspector can be refreshed in case attributes change.
2013-03-18 22:55:41 +00:00
Lasse Öörni
7c1ed151fa Merged the functionality of ScriptCompiler & ScriptAPIDumper. 2013-03-18 14:13:01 +00:00
Lasse Öörni
74c01e7da5 Added compiled AngelScript bytecode support.
Removed unnecessary nullcheck from View.
TODO: merge ScriptCompiler & ScriptAPIDumper.
2013-03-18 08:09:27 +00:00
Lasse Öörni
55f249e548 Automatically show compatible script object variables as ScriptInstance attributes and file-serialize them.
Separate script object functions for file and network serialization.
Fixed crashes in some factory instantiated classes when running without all subsystems.
Fixed crash if calling BringToFront() for a detached UI element.
Always create UI root element, even in headless mode.
Do not abort binary format scene loading if loading a component fails, as it is being read from a nested buffer and we can skip to the next.
2013-03-16 12:53:40 +00:00
Wei Tjong Yao
4d72b5a609 ScriptAPIDumper dumps to console when output file is not provided. Removed caveat from have to compile with ENABLE_LOGGING. Exposed variants to print to stderr to script. Added shell script for calling ConvertDocsToWiki executable. Fixed Editor application to handle exit on error gracefully. Updated documentation and wiki accordingly. 2013-03-10 06:16:12 +00:00
Lasse Öörni
53d87516b5 Documentation update.
Code formatting consistency.
Handle underscore escaping in DocConverter.
2013-03-08 21:43:14 +00:00
Lasse Öörni
5064b43c1a Fix multithreading page. 2013-03-08 14:50:41 +00:00
Lasse Öörni
783ad6e147 Documentation fixes. 2013-03-08 14:46:55 +00:00
Lasse Öörni
091fe0b15f In scene mode, output material lists for all imported models.
Do not apply empty material if a material from a material list can not be found. Instead retain the old.
Fixed outdated documentation.
2013-03-06 13:26:23 +00:00
Lasse Öörni
12bddee240 Whether to use derived opacity can be configured per UI element. By default true, except for Text.
Added note of d3dcompiler_46.dll when compiling with the Windows 8 SDK.
2013-03-05 21:07:59 +00:00
Lasse Öörni
b2645460ef Refactored view queuing in Renderer.
RenderSurface can define multiple viewports.
RenderSurface viewports can be set to update when visible in the scene (default, same as previous functionality), update always, or to update only when manually queued. The last two modes are useful when rendering a scene view eg. for use in a UI widget.
2013-03-05 16:30:53 +00:00
Lasse Öörni
da243eb31b Applied UI & editor related patch from weitjong.
Changelog:
- Urho3D engine returns proper exit code, supports window resizing and quite mode, supports setting of any log level regardless of built type.
- Change the default graphic resolution in windowed mode from 800x600 to 1024x768 which I believe should be more common now.
- Log subsystem distinguishes between standard output and standard error streams. Error log entries are sent to stderr, so even in quite mode which stops sending to stdout, the error entries would still be shown on console. This is handy to weed out mundane entries from error entries during debugging/development.
- For UI elements, only save attribute values that are different than default attribute values during save serialization.
- Misc. UI enhancement: slider supports paging on 'empty' area along the slider; scrollbar responds to the slider hover and click on 'paging' area; menu supports passing the popup state to its sibling when mouse hovering pass the sibling; (bug fix) prevent button to generate release event erroneously (click outside, drag, hover inside, then release), plus now it should behave correctly on other situation (e.g. click inside, drag outside, then drag inside again); file-selector, list view, and line edit accept keypad 'Enter' as well; cursor supports defining shape for OS mouse too when it is set to visible, new busy cursor shape; (bug fix) fix the text default attribute values for selection and hover color to match the color assigned by constructor; line edit supports double-click to select all; scrollview hides the horizontal and vertical scrollbars automatically if not needed (still does not hide correctly on a few cases though :-).
- Refactoring the scripts in Editor application to take advantage of the Urho3D UI potential and other small improvements, like: fade out the UI when moving or rotating the scene; relayout the UI element when main window resize in windowed mode; demo the usage of busy cursor when loading scene from file; modified node/component attribute values are shown with different text label color; store the configuration file in hidden folder under user home folder as per normal practice for applications runs on MacOSX and Linux platforms; use the OS mouse so the it can move freely between Editor in windowed mode and other graphical apps.
The UI attributes in *.xml files are adjusted accordingly. The most important change is, the cursor shape now uses Image resourceref instead of Texture2D.
- Refactoring to replace code constructing the empty instance with reference to static const 'empty' instance whenever it is available; refactoring to remove redefinition of VariantMap and VariantVector in Serializer.h.
- Bug fixes: prevent double posting of error messages in the log on MacOSX and Linux platforms when Urho3D exits on error; fix DumpAPI() from erroneously substituting 'doubleClickInterval' to 'floatClickInterval'.
- Added a new tool to make dumping of the Script API even easier. I have managed to initialize a minimalist engine's subsystems to start the DumpAPI() function.
2013-03-05 08:01:29 +00:00
Lasse Öörni
54991f9f04 Added documentation page on shaders. 2013-03-04 13:49:01 +00:00
Lasse Öörni
d867b3da2e Fixed error in documentation. 2013-02-03 13:22:43 +00:00
Lasse Öörni
ed272d2aa7 Fixed sphere particle emitter always having zero radius. 2013-01-16 14:26:01 +00:00
Lasse Öörni
f5e2be65c1 Added note about the ElapsedTime built-in shader parameter to documentation. 2013-01-13 20:06:21 +00:00
Lasse Öörni
b51fd39bcc Applied CustomGeometry script API patch from weitjong. 2013-01-13 12:16:41 +00:00
Lasse Öörni
570c48c5cf Allow to use RGB normal maps. Different material techniques are used for xGxR normal maps. 2013-01-09 11:00:43 +00:00
Lasse Öörni
1d745f9951 Moved script application reload inside Urho3D.cpp to avoid issues with unwanted application script startup. 2013-01-05 11:26:02 +00:00
Lasse Öörni
2c96dff225 Execute procedural Start() & Stop() functions automatically when a ScriptFile is loaded and unloaded. This allows live-reload of a whole script application.
Do not recreate Console & DebugHud if they already exist.
2013-01-04 19:24:43 +00:00
Lasse Öörni
9d759300fe Added possibility to disable the litbase pass optimization in RenderPath, if an ambient-only pass is needed. 2013-01-02 23:38:39 +00:00
Lasse Öörni
d733091eb2 Fixed viewport calculation for rendertargets defined in the render path. If a target uses the RT divisor mode, scale the viewport, otherwise use full texture size (eg. for the bloom intermediate textures)
Undefined (zero) rendertarget size no longer uses the destination size automatically, instead the divisor needs to be specified.
2013-01-02 21:24:25 +00:00
Lasse Öörni
44ca4d92b6 Cleaned up documentation. 2013-01-02 17:24:11 +00:00
Lasse Öörni
f7f820b3eb Added RenderPath documentation. 2013-01-02 17:22:08 +00:00
Lasse Öörni
2a4fbcdf54 Removed the old postprocess system. Instead renderpath fragments can be appended.
Implemented missing quad rendering command in renderpath.
2013-01-01 23:05:44 +00:00
Lasse Öörni
a40fead7dc Updated license for the new year. 2013-01-01 11:46:18 +00:00
Lasse Öörni
ffe65cf885 Transition to xml-defined rendering path. Pass names changed. Likely caused a large number of regressions to postprocessing, texture rendering & multisampling, which need to be sorted out. The renderpath feature also needs to be documented. 2012-12-31 15:40:07 +00:00
Lasse Öörni
7d8558a51f Applied massive patch from weitjong.
Changes:

I. Build environment
1. Added new cmake definition to disable/enable Log subsystem in main's CMakeLists.txt.
2. Added setting in main's CMakeLists.txt to pass the "-D_DEBUG" compiler flags for Debug configuration build on non-MSVC compiler. At least it is needed on XCode to get verbose debug log. I assume MSVC does not have this problem.
3. Added '../Engine. to include directories in Input's CMakeLists.txt to allow Input to reference Engine class for handling of SDL_QUIT event (see V.5 and VII.1).
4. Changed cmake_gcc.sh to sed Doxyfile to exclude Direct3D9 and include OpenGL variants of the classes, assuming gcc is only for Mac OS X and Linux.
5. Changed cmake_ios.sh to sed Doxyfile to exclude Direct3D9 and include OpenGL variants of the classes.
6. Added new cmake_macosx.sh shell script to prepare cmake for Xcode in Mac OS X environment.
7. Updated Docs/Reference.dox to correct the URL to AMD's Compressonator.
8. Updated Docs/ScriptAPI.dox to reflect API changes in UI.
9. Added *.sh scripts in the Bin folder to invoke the respective demos.

II. Audio
1. Minor refactoring on Audio class: removed redundant header include, removed redundant call.
2. Corrected minor documentation typo error in Sound.h.

III. Container
1. HashMap minor optimisation: operator [] implementation would not traverse the container twice before node insertion, refactored Clear() and Sort() implementation, changed to static_cast instead of reinterpret_cast, etc.
2. HashSet minor optimisation: refactored Clear() and Sort() implementation, changed to static_cast instead of reinterpret_cast, etc.
3. List minor optimisation: refactored Clear() implementation and changed to static_cast instead of reinterpret_cast.
4. Corrected documentation error for operator > in Pair class.
5. Added new Contains() methods and renamed Print()/PrintArgs() to AppendWithFormat()/AppendWithFormatArgs (while they are still new :-) in String class. Added ToString() global function in StringUtils class to take advantage of new append methods (useful in constructing a formatted string for logging in one liner; becomes no-ops when logging not enabled).
6. Added new Remove() method in Vector and PODVector classes.

IV. Core
1. Enhanced ProcessUtils class to add native approach to detect number of Physical and Logical CPUs for iOS platform.
   BUG FIX: Previous ParseArguments(int, char**) implementation assumed there were no space in the pathname which causes parsing error when it does. Fixed by enclosed the argument in quotes before appending into command line. With this fix, Ninja War demo is runable in iPhoneSimulator.
2. In StringUtils added new convenient global function to construct a formatted string, see III.6.
3. In Variant added MAX_VAR_TYPES enum for guarding a while loop.

V. Engine
1. Added pragma to suppress LLVM/Clang erroneous warnings on unused functions in APITemplates.h.
2. Minor refactoring on Console class: removed redundant call, renamed current_Row to currentRow_.
3. In CoreAPI refactored code to replace map's Find() method call with the newly added Contains() method, added call to reserve container capacity.
4. Refactored DebugHUD class to use the String's new append method instead of a series of strings concatenation.
5. Enhanced Engine class to make Logging an optional feature that can be turned on/off like Profiler subsystem (see I.1), only unpause the audio when it was pause by the Engine previously, no need to check for uninitialized graphics due to window was closed (see VII.1) as engine's exiting_ flag should be set when SDL quits (even by quitting the process externally).
6. GraphicsAPI minor optimisation: Add call to reserve vector to the required known size.
7. Enhanced IOAPI to add preprocessor directive to no-ops the logging functions when Logging not enabled, see I.1.
8. Enhanced UIAPI to reflect changes in UI: mainly, exposed nonFocusedMouseWheel property (see XV.12).

VI. Graphics
1. AnimatedModel optimisation: refactored ProcessRayQuery() implementation, added call to reserve container capacity, removed copy-pasta comment.
   BUG FIX: Infinite while loop in SetMorphsAttr() as the index was never incremented.
2. Changed Animation constructor to also initialize length_.
3. Refactored AnimationController class: only mark for network update when necessary, corrected minor documentation error, added call to reserve container capacity, prevent out-of-bound index access in SetAnimationAttr() implementation, use the StringHash instead of plain name to find the animation state.
4. Refactored AnimationState to avoid redundant call.
5. Refactored BillboardSet class: removed redundant class forward, changed to use the revised Drawable's constructor (see VI.9), added call to reserve container capacity.
6. Refactored Camera class to remove redundant construct. 
7. Refactored DebugRenderer to reuse code. 
8. Refactored DecalSet class: changed to use the revised Drawable's constructor (see VI.9), added call to reserve container capacity, added new flag to track the event subscription.
9. Refactored Drawable to change its constructor to take additional drawableFlags parameter.
10. Enhanced Light class: changed to use the revised Drawable's constructor (see VI.9), refactored ProcessRayQuery() implementation, added implementation to debug draw the directional light.
    BUG FIX: On mobile devices, the CSM only has two splits. Use preprocessor directive to define the attribute as VAR_VECTOR2 instead of VAR_VECTOR4, accordingly.
    BUG FIX: Previous implementation used local ray against world bounding box for RAY_OBB. Fixed by first transformed the world bounding box to local coordinate.
11. Refactored Material class to set or unset the specular_ flag without traversing the shader parameters each time.
12. Refactored Model class: added call to reserve container capacity, removed redundant call to set the number of vertex buffer to 1 (which is Geometry's default).
13. Modified OcclusionBuffer Clear() method to use post decrement.
14. Refactored Octant and Octree classes: changed to use the new PODVector Remove() method, added index_ instance variable to facilitate child octant deletion, simplified the conditional check in the Release() but still achieving the same result.
15. Refactored OctreeQuery class to reorder the condition and to use post increment.
16. Refactored ParticleEmitter class: removed redundant class forward, changed to use the other ColorFade constructor that inits both color and time, added call to reserve container capacity.
17. Refactored Renderer class: removed unused static constants, amended the documentation text for HandleGraphicsFeatures(), delayed event subscription until object is initialized, moved logic to validate the shadow cascades from getter to setter, changed to use String's Contains() method instead of Find(), and a few more code changes (that make no difference :-).
18. Refactored ShaderParser class to change the method signature of GetCombination() method, removed redundant include.
19. Refactored Skeleton class to add call to reserver container capacity.
20. Refactored StaticModel class: changed to use the revised Drawable's constructor (see VI.9), changed the ProcessRayQuery() implementation.
21. Enhanced Tangent class to use pointer arithmetic instead of array indexing.
22. Refactored Terrain class: reordered instance variable initialization in constructor to keep compiler happy, added call to reserve the container capacity.
23. Refactored TerrainPatch class: changed to use the revised Drawable's constructor (see VI.9), changed ProcessRayQuery() implementation.
24. Refactored View class: removed unused method declarations (did not have implementation), changed to reuse existing Vector3 constants, changed octree query base class to FrustumOctreeQuery instead (no additional penalty as the methods are already virtualized anyway), moved constant to outside the loop in CheckVisibilityWork() implementation, reordered logical statement to take advantage of short circuit evaluation, and more.
25. Refactored Viewport class to use the more common way to insert into container.
26. Refactored Zone class: changed to use the revised Drawable's constructor (see VI.9), reordered logical statement to take advantage of short circuit evaluation.
27. Enhanced OGLGraphics class: added code to prevent unnecessary call to get OGL extensions, changed to use new String's Contains() method, added flag to speed up the Release() method, removed redundant code.
28. Changed OGLGraphicsImpl to remove unused include.
29. Changed OGLIndexBuffer to remove unnecessary override. Probably it was copy pasta from Direct3D9 version.
30. Refactored OGLShader class to use the modified ShaderParser's GetCombination() method, see VI.18.
31. Refactored OGLShaderProgram class to use reuse the index for the second string Find() call.
32. Refactored OGLShaderVariation class to the string Insert() method instead to insert all the defines.
33. Refactored OGLTexture class to use the enum instead of hardcoded value.
34. Refactored OGLTexture2D class to simplify the boolean assignment.
35. Refactored OGLTextureCube class to simplify the boolean assignment.
36. Refactored OGLVertexBuffer class to remove unnecessary override and to simplify the for loop condition check in GetElementOffset() method.
37. Refactored CustomGeometry class: changed to use the revised Drawable's constructor (see VI.9), changed ProcessRayQuery() implementation.

VII. Input
1. Enhanced Input class: added call to Engine::Exit() to properly setting the exiting flag instead of just closing the graphics (see V.5), refactored constructor to initialize the mouse related instance variables, delayed event subscription until object is initialized, and other minor refactoring.

VIII. IO
1. Enhanced FileSystem class: added Mac OS X implementation for SystemOpen() method, changed to use new String's Contains() method instead of Find().
   BUG FIX: On non-Win32 platform, files (including dirs) having name starts with '.' were being returned in the result although SCAN_HIDDEN flag is not set. The fix now excludes them.
2. Enhanced Log class: added preprocessor directive to no-ops the logging macros when Logging not enabled (see I.1), removed "XCODE_DEBUG_CONFIGURATION" as it is not effective (at least on my Xcode). Also replaced "XCODE_DEBUG_CONFIGURATION" with "_DEBUG" in SDL_uikitappdelegate.m.
3. Minor changed in Serializer.cpp to suppress compiler warning.

IX. Math
1. Refactored BoundingBox class to reuse code.
2. Enhanced MathDefs.h: better PI, added new constant M_DEGTORAD_2 which is M_DEGTORAD / 2.f (same as M_PI_2, M_PI_4 convention used in math.h).
3. Refactored Frustum class to use the new M_DEGTORAD_2 constant.
4. Refactored Plane.h to reuse code.
   BUG FIX: Copy constructor did not initialize the absNormal_ properly.
5. Enhanced Quaternion class: added multiply-assign operator with a scalar, added Conjugate() method, refactored to reuse code as much as possible, returned conjugate as inverse for unit quaternion, refactored code to use the new M_DEGTORAD_2 constant.
6. Refactored Rect class to reuse code.
7. Refactored Sphere to use post increment.

X. Network
1. Refactored Connection class: changed to hide the detail of the message processing from the caller, added preprocessor directive to exclude statistics when logging is disabled, changed the code to reflect the change done in Node::CreateComponent() method signature (see XIII.2).
2. Refactored Controls class: removed redundant class forward, changed the way default constructor initialize the instance variables.
3. Refactored Network class: removed redundant class forward, changed to reflect changes done in X.1 to process messages, changed the GetConnection() implementation to avoid traversing of the clientConnections_ unnecessarily.

XI. Physics
1. Enhanced CollisionShape class to add preprocessor directive to no-ops the logging calls when Logging not enabled, see I.1. Refactored the HeightfieldData() method to eliminate if statement in the loop.
2. Minor changed in Constraint.cpp to suppress compiler warning.
3. Refactored PhysicsWorld class: removed redundant call in destructor, changed to use the new PODVector Remove() method.
4. Refactored RigidBody class to use the new PODVector Remove() method.

XII. Resource
1. Minor changed in Image.cpp to suppress compiler warning.
2. Enhanced ResourceCache class: changed code to subscribe to event only when auto reload is enabled, refactored to use HashMap's Find() instead of traversing through container manually, changed to use new String's Contains() method.
3. Minor changed in XMLElement class to define an EMPTY element constant.

XIII. Scene
1. Refactored Component class: removed redundant include, reordered logical evaluation.
2. Refactored Node class: changed the CreateComponent() to accept optional ID parameter (combined previously two methods into one), refactored to reuse code as much as possible, added new method to reset scene called by Scene class, moved protected section to correct place adhering to code convention, added new private convenient method to remove component. 
3. Refactored Scene class: changed destructor and in NodeAdded() method to use the new Node::ResetScene() method (see XIII.2), changed the GetVarNamesAttr() implementation to avoid if in the loop, instead of using XMLElement and String default constructor, changed to reference new EMPTY XMLElement constant (see XII.3) and String's Clear() method, respectively.
4. Enhanced SceneResolver class to add preprocessor directive to no-ops the logging calls when Logging not enabled, see I.1.
   BUG FIX: The missing 'else' statement in Resolve() method might cause component ID not resolved correctly. Fixed by adding the else statement.
5. Enhanced Serializable class: refactored code to suppress compiler warning, added new feature to read/write new optional "enum" XML element.

XIV. Script
1. Enhanced Addons class: removed redundant include, changed code to suppress compiler warning, exposed new String's Contains() methods to script enginei (see III.6).
   BUG FIX: The Find() and FindLast() were erroneously exposed as returning integer value. Changed it to returning unsigned instead.
2. Enhanced Script class: added preprocessor directive to no-ops the logging calls when Logging not enabled (see I.1), changed to use new String's Contains() method instead of Find(), removed redundant call in destructor.
   BUG FIX: The logMode_ instance variable was not initialized properly in the constructor (although documentation says it should be defaulted to immediate mode). Initialized it according to documentation.
3. Refactored ScriptFile class to remove redundant call.
   BUG FIX: Previous implementation in Load() assumed script log mode. The fix saves the old mode and use it to revert back the mode.
4. Enhanced ScriptInstance class: refactored ClearDelayedExecute() method to avoid unnecessary vector traversal, simplified code that tracks the execution of METHOD_DELAYEDSTART, refactored to code reuse.

XV. UI
1. Refactored UIQuad and UIBatch: Added new constructor that initialize instance variables, moved GetInterpolatedColor() method between the two, modified the UIBatch methods to take in const UIElement reference, changed the implementation to code reuse as much as possible.
2. Refactored BorderImage class to use the new UIBatch constructor, see XV.1.
3. Very minor changed in Button.cpp to simplify the logical statement.
4. Refactored DropDownList class: Changed to call Menu::GetBatches() instead of Button::GetBatches(), changed for code reuse.
5. Refactored FileSelector class: added call to reserve container capacity, changed for code reuse.
6. Refacotred Font class: added call to reserve container capacity, removed redundant call. 
   BUG FIX: Corrected a typo in GetKerning() implementation causing the kerning information not being applied correctly between adjacent characters.
7. Refactored LineEdit class: Changed to call BorderImage::ApplyAttributes() instead of UIElement::Attributes(), removed redundant construct, changed to reuse code as much as possible, initialized variable in the setter method instead of during update.
8. Enhanced ListView class: added optional index parameter for RemoveItem() method, subscribed to the defocused event only when it is needed, changed to reuse code as much as possible (page up/down and home/end now support additive multi-select as the positive side effect), removed redundant construct.
9. Very minor change in Menu.cpp to use Variant::EMPTY instead of constructing an empty Variant instance.
10. Refactored ScrollView class to reuse code.
11. Refactored Text class to use the new UIBatch constructor, see XV.1.
12. Enhanced UI class: Added support to enable non-focused mouse wheel behaviour similar to Mac OS X and Linux, delayed post-update and render-update event subscription until object is initialized, removed redundant construct.
13. Enhanced UIElement class: added optional index parameter for RemoveChild() method, refactor the code to use the right constness, renamed method from GetUintColor() to GetDerivedColor(), added new private Detach() method, added mutable keyword as necessary to support const getter, refactored destructor method, added call to reserve container capacity, and more.
14. Minor change in Window.cpp to suppress compiler warning.

XVI. Third Party
1. FreeType: Included zutil.c as source in the CMakeLists.txt and fixed the problem when compiling with _DEBUG set.
2. kNet: Removed std::cout statement in the UDPMessageConnection.cpp.
3. SDL: Changed XCODE_DEBUG_CONFIGURATION to _DEBUG in SDL_uikitappdelegate.m, see VIII.2.
   BUG FIX: The touch focus was always zero causing the touch event from touchpad in Mac OS X platform was not handled correctly by Input class because the GetInputInstance() method returns 0 when windowID is 0. Assign the touch's focus with current focus window ID. NOT SURE THIS IS THE CORRECT FIX THOUGH.

XVII. Demos
1. BUG FIX: TestScene.as and TestSceneOld.as assert in the btAlignedObjectArray.h. It was caused by the script trying to remove the RigidBody and/or CollisionShape while in the middle of physics collision event handling. The Bullet's assert could be observed when build using _DEBUG. Fixed by postponinig the removal to post step.
2. Enhanced the NinjaSnowWar to support no-background-music (nobgm) option.
   BUG FIX: BGM was purposely not played on multiplayer mode assuming testing is done on a same test machine, however, this has caused the BGM not to be played on the genuinue multiplayer mode using different machines. Re-enable BGM on multiplayer mode. Instead, added comments in the demo shell/batch script on how to avoid multiple BGM played on a same test machine.
2012-12-25 20:56:05 +00:00
Lasse Öörni
7c61b098bf Fixed forward lit spotlight shadows on OpenGL.
Removed the NVIDIA-specific INTZ depth path so that shaders don't need special cases for reading depth.
2012-12-25 17:55:10 +00:00
Lasse Öörni
14b78585fc Added CustomGeometry component, which is similar to OGRE ManualObject.
Support also non-indexed geometry for raycasts, occlusion and decals.
2012-12-24 11:56:30 +00:00
Lasse Öörni
dde21f587e Added WeakHandle to script, which is a WeakPtr<Object>.
Exposed strong & weak refcount of all classes derived from RefCounted to script.
2012-10-23 17:29:41 +00:00
Lasse Öörni
7d930b62f8 Added missing specular mapped material techniques.
Added generate tangents option to editor.
Default light specular intensity to 1.0.
Fixed generation of specular mapped materials in AssetImporter.
Fixed documentation regarding specular maps (deferred does not support colored specular, forward & light pre-pass do.)
2012-10-21 13:52:24 +00:00
Lasse Öörni
f4f538fcd0 Additions to documentation. 2012-10-20 16:54:09 +00:00
Lasse Öörni
fbef191c6b Removed the NewCollision parameter of collision events. Instead separate CollisionStart & CollisionEnd events are sent when a collision begins or ends.
Added a buoyancy volume into the Terrain script as an example of a trigger area, use L key to toggle.
2012-10-18 20:30:05 +00:00
Lasse Öörni
88896fe805 Added GetCollidingBodies() function to RigidBody which returns collisions from last physics step.
The iterator versions of HashMap & HashSet Erase() return an iterator to next element.
2012-10-17 18:54:48 +00:00
Lasse Öörni
f8aa92cbcd Improved skeletal animation documentation. 2012-10-04 14:31:31 +00:00
Lasse Öörni
c7fe3c37bd Added sound listener component whose position is automatically taken into account by Audio subsystem.
Removed setting listener position/rotation manually.
Removed unnecessary includes.
2012-10-02 14:46:09 +00:00
Lasse Öörni
bfb76725b6 Additions to documentation. 2012-09-04 21:45:19 +00:00
Lasse Öörni
bb2b57552e Added note of texture format "downconversion" on OpenGL ES. 2012-09-03 07:38:12 +00:00
Lasse Öörni
0cd53cdee3 Added 16 & 32-bit texture formats. 2012-09-02 23:05:40 +00:00
Lasse Öörni
fa69f2e174 Fixed texture unit enumeration and the environment texture sampler. Removed references to the nonexistent detail texture sampler in the documentation. 2012-08-31 22:24:59 +00:00
Lasse Öörni
9401ad8063 Removed UI serialization hacks related to the Menu & DropDownList popup element. To avoid layout problems, now it is never added as a child temporarily.
Do not abort UI layout deserialization on encountering an unknown element.
2012-08-30 20:34:17 +00:00
Lasse Öörni
4cef5395f5 Completed the UI element refactoring. Removed hardcoded SetStyle() functions which would read UI element attributes from XML.
Added SaveLayout() function to UI.
Fixed serialization & deserialization of IntRect & IntVector2 variants.
Fixed crash when querying a BorderImage's texture in script.
2012-08-28 20:22:51 +00:00
Lasse Öörni
26fa24ed01 Re-added support for varying shadow intensity on OpenGL ES, as the calculation is not very complex. 2012-08-21 12:41:41 +00:00
Lasse Öörni
f0b6d55b28 Enclosed Urho3D classes inside Urho3D namespace to avoid clashes with external libraries. 2012-08-15 22:57:52 +00:00
Lasse Öörni
c64dfb114e Added back polygon fill mode. 2012-08-08 17:15:13 +00:00
Lasse Öörni
312ddc0242 Added repeat flag to delayed method calls.
Added possibility to remove delayed method calls selectively.
Documented delayed method calls.
2012-08-06 10:51:43 +00:00
Lasse Öörni
ea2f6e967a Added DelayedStart() script object method to work around missing child scene nodes during Start(). 2012-08-03 21:06:40 +00:00
Lasse Öörni
3d4eb6bdc8 Event refactoring. Removed the concept of targeted events and a Node forwarding a targeted event to all components, which was used only for physics node collision events. Now the node will instead send the collision event, and it can be explicitly subscribed to.
Remote node events specify a sender node instead of a receiver node. The sender connection is always available as an event parameter.
2012-08-03 09:03:02 +00:00
Lasse Öörni
3b67320a49 Added animation trigger event system.
Added ReplaceExtension() utility function to simplify filename manipulation code.
Cleaned up NinjaSnowWar script code. Added particle effect on ninja's footsteps and landing from jump.
2012-08-02 21:19:57 +00:00
Lasse Öörni
e7935ffaf6 Documented the new attribute flags. 2012-07-30 13:37:51 +00:00
Lasse Öörni
9557eb64b4 Added note about moving triangle mesh collision shapes. 2012-07-30 12:59:21 +00:00
Lasse Öörni
481fbfa220 Added visible OS mouse cursor mode. When used with an external window, this is the only supported mode, as SDL does not control the cursor visibility of an external window. 2012-07-28 10:38:04 +00:00
Lasse Öörni
170ee77019 To avoid confusion when to use what, and as the performance is usually better, use only HashMap & HashSet instead of Map & Set.
Optimized memory use of HashMap/Set to 16 bytes so that it can be stored inside Variant.
2012-07-26 22:22:59 +00:00
Lasse Öörni
073347c950 AABB-test physics geometry before adding it to the debug renderer.
Never debug draw heightfields, as it hugely slows down execution.
2012-07-22 11:23:00 +00:00
Lasse Öörni
478a5af9d1 Allow defining depth bias for materials.
Center decal frustum on the decal world position.
Use material depth bias for decals instead of applying the bias to decal geometry.
2012-07-19 09:34:11 +00:00
Lasse Öörni
42b9cbc158 Cleaned up terrain code.
Updated script API documentation.
2012-07-18 23:19:52 +00:00
Lasse Öörni
83487ac88f Further ShaderParser optimization. 2012-07-14 11:58:25 +00:00
Lasse Öörni
d18baaff87 Reverted back to 4 sample shadow mapping on OpenGL ES, but limited directional light cascades to 2. 2012-07-07 13:43:40 +00:00
Lasse Öörni
bb821f2a3c Reverted the split fade optimization. 2012-07-07 10:58:13 +00:00
Lasse Öörni
e8d549ef7e Shader refactoring. Renamed the lit object ubershader as LitSolid; it now handles also deferred rendering.
Reduced max. vertex light count to 4 to prevent excessive shader permutations.
2012-07-06 18:35:13 +00:00
Lasse Öörni
38fd976aa9 Fixed potential infinite loop when setting morphs.
Added script API function to query morph names.
Unified AssetImporter & OgreImporter command line options regarding animations.
2012-07-05 10:57:51 +00:00
Lasse Öörni
c9bdf9eb35 Added function to redetect joysticks. 2012-07-02 10:26:01 +00:00
Lasse Öörni
613e3e94f9 Allocate nested script execution contexts on demand. 2012-06-25 18:01:11 +00:00
Lasse Öörni
5507b006be Shader load/compile refactoring. Removed shader source code from the SourceAssets directory and moved to Bin/CoreData/Shaders.
Changed ShaderCompiler command line options.
Changed FileSystem::SystemRun() to use CreateProcess() and to hide the window of the spawned program.
Removed GLShaderProcessor.
2012-06-24 00:11:43 +00:00
Lasse Öörni
2b5e656d79 Documentation update. 2012-06-19 20:30:11 +00:00
Lasse Öörni
d7d599be7b Added loading of ETC1 compressed textures on mobile devices. These need to be stored inside .ktx files.
Removed unneeded texture.
2012-06-16 23:59:54 +00:00
Lasse Öörni
178b6e351e Added documentation on the application activation state and mobile devices. 2012-06-16 11:02:27 +00:00
Lasse Öörni
e1a1c974e5 Initial iOS support.
Do not use glPolygonOffset() constant bias due to its inconsistency. Instead offset the projection matrix as necessary.
Do not use multiple glUniform calls to set an array of transposed matrices, as it is not guaranteed to work. Instead transpose all matrices first, then set them in one call.
2012-06-09 22:05:14 +00:00
Lasse Öörni
5d55c0959d Re-added the alpha masking hint to give priority to fully opaque materials. 2012-06-03 23:30:58 +00:00
Lasse Öörni
5ed1f86b27 Added note about the stencil buffer on OpenGL ES 2. 2012-06-03 11:38:34 +00:00
Lasse Öörni
02738d055e Renamed Android package and added instructions on how to replace it with application-specific package name.
Updated documentation.
2012-06-03 11:35:26 +00:00
Lasse Öörni
3e7882093a Disabled all stencil operations on OpenGL ES for now, as the OES packed depth stencil isn't tested for or used yet.
Use fixed vertex attribute locations on OpenGL.
Always transpose OpenGL matrix uniforms manually.
Workaround failed draw call after drawing billboards on OpenGL ES by transforming billboards with an identity model matrix.
Ensure finger touch ID's are positive.
Improved touch controls in NinjaSnowWar.
2012-05-27 16:39:21 +00:00
Lasse Öörni
f3f724920c Removed unnecessary include from WorkQueue.
Documentation fixes.
2012-05-16 19:26:07 +00:00
Lasse Öörni
5001c19663 Documentation fixes & additions. 2012-05-09 22:29:25 +00:00
Lasse Öörni
d9f9505ae4 Fixed possibility of mistaken procedural event handling if attempted from a script object that does not belong to a ScriptInstance. 2012-05-09 07:21:04 +00:00
Lasse Öörni
0ca75a4d2d Updated documentation. 2012-05-07 19:46:00 +00:00
Lasse Öörni
4666520d0b Improved ragdoll stability in TestScene.
Create ragdolls when hit by the boxes (both TestScene & TestSceneOld.)
Fixed component ID clash when creating ragdolls in networked TestScene.
Constraints can specify rotation frame directly. Specifying the axis is still provided for convenience, but does not give exact control over the orientation.
Constraint adjusts static world position automatically when the own body position is edited.
Optimized away redundant Constraint recreation when deserializing attributes.
Added RemoveComponent by component type to Node.
Show also write-only properties in the generated scripting API documentation.
2012-05-07 19:44:43 +00:00
Lasse Öörni
9f331e56db Changed Constraint API to specify the other body position / axis explicitly, and to specify limits as Vector2.
Fixed bugs in assigning parented RigidBody transforms after simulation step.
Optimized Constraint SetPosition() / SetAxis() to not recreate the constraint.
2012-05-07 00:15:20 +00:00
Lasse Öörni
8cdc6f69d2 Properly clean up event handlers referring to a deleted object.
Added cone twist constraint.
Added angular motion limits to the slider constraint.
Improved batch group hashing.
2012-05-06 11:59:47 +00:00
Lasse Öörni
4335295b87 Added slider constraint. 2012-05-05 23:10:45 +00:00
Lasse Öörni
ef421ef32d Initial Bullet constraint implementation.
Changed DrawDebugGeometry() to be a virtual function in Component.
2012-05-01 19:26:29 +00:00
Lasse Öörni
91f6f87472 Explicitly mark changed nodes to avoid going through the whole scene in PrepareNetworkUpdate(). 2012-04-22 18:48:09 +00:00
Lasse Öörni
08ac95dbf7 Fixed continuous collision detection to work with the compound shape.
Added CCD radius & motion threshold attributes to RigidBody. 
Use CCD for NinjaSnowWar snowballs to prevent their tunneling through the ground.
2012-04-16 21:45:40 +00:00
Lasse Öörni
51c9160eae Removed CCD Radius parameter for now as continuous collision detection is not supported for all collision shapes.
Changed the way RigidBody attributes are applied to reduce unnecessary re-adding of the body to the simulation world during deserialization.
2012-04-15 16:47:33 +00:00
Lasse Öörni
9ead094d5a Removed the physics world maximum timestep, as it is already governed by the Engine's minimum FPS. 2012-04-15 13:19:42 +00:00
Lasse Öörni
32fa940130 Handle world transform update of parented RigidBodies correctly.
Updated physics documentation.
2012-04-15 11:42:02 +00:00
Lasse Öörni
8edf0240a1 Migration to Bullet physics underway. Most of physics functionality & examples broken for now. 2012-04-09 18:10:17 +00:00
Lasse Öörni
26e2ebca26 Fixed enemy motion bugs in networked NinjaSnowWar.
Added possibility to disable physics interpolation. This is useful on a network server to ensure clients do not receive interpolated (and possibly non-physical) node transforms.
Changed default network update FPS to 30 (half of the default physics FPS.)
2012-02-28 21:03:42 +00:00
Lasse Öörni
cd00810139 Updated docs for upcoming release. 2012-02-28 18:51:31 +00:00
Lasse Öörni
f83b968576 To reduce Linux / NVIDIA performance issues, use another FBO for shadow rendering. Commit FBO changes only at SetDepthStencil(). 2012-02-28 00:24:35 +00:00
Lasse Öörni
3afbeb83ea Added a documentation page on Unicode.
Restructured the quickstart-examples, and fixed the C++ quickstart code.
2012-02-26 11:35:03 +00:00
Lasse Öörni
a5681746e1 Added brief documentation on skeletal animation.
Added missing morphs attribute to AnimatedModel.
2012-01-01 17:09:14 +00:00
Lasse Öörni
5dbf2b81f9 Added error logging for resource hash collision.
Clear both color & depth at the same time for light prepass rendering.
2012-01-01 15:22:43 +00:00
Lasse Öörni
9e871c1987 Removed automatic viewport reset on setting rendertarget to eliminate redundant API calls. However Graphics::ResetRenderTargets() resets the viewport. 2011-12-31 15:05:08 +00:00
Lasse Öörni
d34a73bfb9 Added full deferred rendering in addition to light pre-pass.
Added missing vertex colored light pre-pass material shader permutation.
2011-12-31 14:20:29 +00:00
Lasse Öörni
ccbfe5babc Further documentation fixes. 2011-12-28 15:10:46 +00:00
Lasse Öörni
700b9c6a02 Post-process documentation fix. 2011-12-28 14:38:23 +00:00
Lasse Öörni
408d063cf5 Documentation edits. 2011-12-28 14:36:55 +00:00
Lasse Öörni
7075513957 Cleaned up bloom shader code.
Split SampleOffsets shader parameter to GBufferInvSize and ShadowMapInvSize parameters.
Set Offsets & InvSize parameters for user-defined rendertargets during postprocessing.
Fixed bug on some NVIDIA drivers caused by using tex2Dlod on the hardware depth buffer.
2011-12-28 13:17:21 +00:00
Lasse Öörni
a1c70a3476 Added bloom post-process effect.
Added global shader parameters to PostProcess.
Added possibility to specify texture units by number instead of name in materials and postprocesses.
2011-12-28 01:43:48 +00:00
Lasse Öörni
5aa1a38a98 Added documentation for post-processing. 2011-12-26 23:48:56 +00:00
Lasse Öörni
3a319a2231 Optimized parsing of numbers from strings. 2011-12-24 03:04:35 +00:00
Lasse Öörni
97f1fbd7e1 Added relative scale flag to ParticleEmitter XML description file format.
Fixed ParticleEmitter documentation.
2011-12-20 23:42:47 +00:00
Lasse Öörni
75096fe6f9 Refactored screen-size rendertarget allocation in preparation for postprocessing.
Removed the "size 0,0 follows window size" mechanism from Texture2D.
2011-12-20 22:24:09 +00:00
Lasse Öörni
35c21f06d7 Removed the fallback shadow code, as GPUs that actually need it are also too low-performance to render shadows acceptably. 2011-12-13 22:22:46 +00:00
Lasse Öörni
d892a120e7 Reverted the OpenGL viewport reset logic. 2011-12-10 15:57:48 +00:00
Lasse Öörni
8c14956ebe Documentation update. 2011-12-10 15:35:45 +00:00
Lasse Öörni
f564e2bc83 Documentation update. 2011-12-09 21:19:39 +00:00
Lasse Öörni
b9ffb1fc2d Documentation tweaks. 2011-12-06 22:07:32 +00:00
Lasse Öörni
c4e569879d Restored the optional lit base pass optimization, but with the limitation of no ambient gradient.
Removed unneeded GLSL shader permutations.
2011-12-06 21:36:03 +00:00
Lasse Öörni
31b2a692d5 Fixed multithreading documentation. 2011-12-06 14:57:07 +00:00
Lasse Öörni
8f882f8225 Rewrote the zone ambient color gradient system. Now zones only define one ambient color, but look for neighbor zones' ambient colors when gradient mode is enabled.
Fixed missing script bindings to the zone ambient gradient & camera override flags.
Added a default bounding box size for newly created zones.
Added documentation on zones.
2011-12-06 14:48:53 +00:00
Lasse Öörni
738a159c59 Small documentation tweaks. 2011-12-05 22:41:26 +00:00
Lasse Öörni
23f4ba9710 Added more detailed documentation on light pre-pass rendering. 2011-12-05 22:10:05 +00:00
Lasse Öörni
644c37a099 Mark light masks to G-buffer stencil for light culling.
Fixed OpenGL forward rendering.
Documentation fixes.
2011-12-03 17:51:18 +00:00
Lasse Öörni
f9bfd4948f Shader refactoring.
Removed ambient + lit pass combining for less shader permutations, and to prime the Z-buffer with a lightweight pass in case there is a large amount of overdraw.
Moved ambient light calculation to the ambient pass vertex shader.
Added render mode toggle to the editor settings.
Note: OpenGL rendering is currently broken.
2011-12-03 14:06:35 +00:00
Lasse Öörni
abf00cafa9 Merged pixel shader uniforms.
Script code cleanup.
Added LightTest script.
2011-11-29 23:15:34 +00:00
Lasse Öörni
b1ba025970 Fixed hyperthreading detection again.
Send frame update events in Engine::Update(), not in Timer::BeginFrame().
2011-11-27 13:40:40 +00:00
Lasse Öörni
1fbbf5f2cd Limit the amount of worker threads to half the available CPU cores. 2011-11-26 20:00:29 +00:00
Lasse Öörni
2f0d3caecd Migrated to AngelScript 2.22.0. 2011-11-10 00:05:05 +00:00
Lasse Öörni
8a52455faa Added shadow mask feature, which allows selective shadow casting by different lights.
Documented multithreading.
2011-11-07 20:11:20 +00:00
Lasse Öörni
6e51dffdeb Updated readme.
Allow to switch force SM2 / force fallback modes at runtime.
2011-10-23 18:18:47 +00:00
Lasse Öörni
bdc29caebd Reverted to AngelScript 2.21.1 because of crash with VariantMap.
Find the zone at far clip plane and use it for the background color.
Added zone mask for drawables, allowing to select which zones they can belong to.
When zone moves or changes its bounding box, clear the cached zone from all drawables that were inside.
2011-10-22 18:49:15 +00:00
Lasse Öörni
63f23313d6 Sort also the postalpha pass back to front. 2011-10-18 06:36:07 +00:00
Lasse Öörni
7f7e8b970d Added subgeometry centers to the model format for proper sorting of transparent geometries. 2011-10-17 21:59:47 +00:00
Lasse Öörni
7be9585861 Fixed erroneous use of local axis movement when more than one node selected.
Split the extra (custom) rendering pass into prealpha and postalpha.
2011-10-17 20:59:13 +00:00
Lasse Öörni
a436badf8f More documentation updates. 2011-10-14 18:43:17 +00:00
Lasse Öörni
2e32aace3c Documentation update. 2011-10-14 18:20:32 +00:00
Lasse Öörni
a9c5641371 Return to xGxR encoded normal maps and separate specular maps.
Instead of double buffered VBOs, avoid glMapBuffer & glUnmapBuffer in "discard" mode and use a CPU-side buffer instead.
Reduce UI & DebugRenderer vertex buffer size if grossly too large.
Updated documentation. Suggest AMD's Compressonator utility for normal map processing.
2011-10-07 21:30:02 +00:00
Lasse Öörni
2f74622427 Converted DebugGeometry to use a vertex buffer instead of using immediate rendering.
Removed immediate rendering.
2011-10-05 07:05:33 +00:00
Lasse Öörni
71d2e019e6 Use a vertex buffer for UI rendering instead of several immediate mode draw operations. The vertex buffer is locked and updated once per frame, instead of several smaller locks. 2011-10-04 21:49:22 +00:00
Lasse Öörni
653327dd15 Added E_NETWORKUPDATESENT event.
Added direct script access to the Controls object of Connection, instead of going through setter & getter.
Improved NinjaSnowWar controls responsiveness during low FPS, by checking for action button presses separately, and accumulating button presses for networking.
2011-10-04 16:26:19 +00:00
Lasse Öörni
4e18121be0 Updated documentation. 2011-10-04 06:50:01 +00:00
Lasse Öörni
7f09ddcb14 Simplified shader register mapping code. 2011-10-02 14:12:30 +00:00
Lasse Öörni
7d96303e39 Finalized support for overlapping Direct3D9 shader parameters, or the same shader parameters using different registers in different shaders. 2011-10-02 11:17:45 +00:00
Lasse Öörni
0e84c54306 Added shader parameter register count information in the D3D shader file format.
Added tracking of last assigned shader parameter per hardware register to D3D9Graphics. This allows reusing shader registers for different parameters in different shaders.
Removed the ElapsedTime shader parameter, as wrapping it is problematic depending on the calculations it would be used for.
Removed support for bool & int shader parameters from Graphics, as bool constants are not supported in OpenGL 2.0, and int parameters are not (at least currently) needed, and can lead to worse performance.
2011-10-01 09:28:27 +00:00
Lasse Öörni
589c0ee141 Expanded the lit base pass optimization to cover also the first spot or point light affecting a drawable.
Do not render light to stencil if camera is inside the light volume.
Added optimization for directional light shadow casters that are fully occluded by another shadow caster: do not render the lit pass for them.
Removed the alpha masking hint. Alpha test no longer gives the batch a lower priority.
2011-09-29 22:53:16 +00:00
Lasse Öörni
80a6948b22 Large rendering architecture refactoring.
Optimized shaders to do more work in the vertex shader.
Deferred rendering removed, at least for now.
Switched to RGB normal maps, with specular intensity in the alpha channel. Removed NormalMapTool.
Optimization of light influence on objects by stencil masking.
Split shadowed lights are now rendered in one pass. A virtual shadow depth cube texture is used for point lights.
Refactored shadow map allocation. Allow to use lower resolution shadow maps than quarter size.
Added the Polyhedron math object, used for improved shadow map focusing.
Reversed the convention for the plane intercept parameter.
Math-related code cleanup.
2011-09-26 21:56:31 +00:00
Lasse Öörni
f67165bcf3 Documentation fixes. 2011-09-10 20:06:37 +00:00
Lasse Öörni
fe495f6bcc Added deferred fallback mode, which renders the G-buffer in 2 passes.
Made the OpenGL extensions mandatory to unify expected functionality with Direct3D9 mode.
2011-09-10 19:28:59 +00:00
Lasse Öörni
d6a3f89393 Added low-quality (1-sample) shadow filtering option.
Refactored fallback shaders so that they are compiled as variations into the SM2 directory.
2011-09-09 20:41:56 +00:00
Lasse Öörni
292ebed51f Added initial fallback mode (no MRT, no hardware shadows.) 2011-09-08 23:12:48 +00:00
Lasse Öörni
a89cb22161 Replaced edge filtering with temporal antialiasing with ghosting prevention. 2011-09-01 07:19:32 +00:00
Lasse Öörni
3c0298dcf8 Updated documentation on G-buffer setup. 2011-08-29 20:00:26 +00:00
Lasse Öörni
b6e09d2655 Renamed FinishUpdate() to ApplyAttributes() to be more descriptive, and to not confuse with frame updates. 2011-08-23 06:43:18 +00:00
Lasse Öörni
3f7fffbf49 Some renames. CollisionGroup -> CollisionLayer, Scene::GetNodeByID() -> GetNode(), Ray::Distance() -> HitDistance().
Moved all hit distance tests to Ray.
Tundra scene physics import.
2011-08-22 20:06:27 +00:00
Lasse Öörni
84fb81684b Documentation update. 2011-08-19 10:53:36 +00:00
Lasse Öörni
f1bb8bd2ba Updated to latest kNet.
Editor script fixes.
Fixed loading resources from script.
Fixed crashes when handling events from objects that subsequently get destroyed.
Fixed not being able to load elements of type UIElement from xml layouts.
2011-08-15 20:56:53 +00:00
Lasse Öörni
de67af8825 CoreData / Data reorganization.
Comments cleanup.
Removed the fallback-data mechanism from IndexBuffer and VertexBuffer as unnecessary.
2011-08-13 15:43:52 +00:00
Lasse Öörni
dca6687166 In absence of packet loss, use dynamic send rate increase/decrease based on utilization.
Removed unused UDPMessageConnection code.
2011-08-01 00:03:06 +00:00
Lasse Öörni
b694ad047e Refactored interest management into the NetworkPriority component.
Fixed setter functions referring to the Set class in Doxygen comments.
2011-07-31 17:19:00 +00:00
Lasse Öörni
bd76a14249 Fixed Unix build. Fixed counting of enemies in multiplayer NinjaSnowWar. Disabled snowball CollisionShape replication due to divergent simulation on the client. Removed previousControls from Connection as it is potentially unreliable if multiple controls packets arrive between updates. 2011-07-29 22:57:14 +00:00
Lasse Öörni
abe05c6a53 MinGW is no longer officially supported.
Documentation update.
2011-07-29 15:46:47 +00:00
Lasse Öörni
7f88b9977e Documentation update. 2011-07-29 12:44:45 +00:00
Lasse Öörni
7b254df85d Added simple distance-based interest management for networking. 2011-07-29 12:24:22 +00:00
Lasse Öörni
38fe1554ba Initial multiplayer NinjaSnowWar.
Various networking and script API bugfixes.
Fixed kNet profiling compile errors due to STL -> Container library conversion.
Fixed loading of textures failing in headless mode (just return success without doing anything.)
The E_CLIENTCONNECTED and E_CLIENTDISCONNECTED events now also come from the Connection in question, to allow using GetSender() for convenience, instead of looking up the connection from event data.
Added simple network traffic statistics logging to Connection.
2011-07-29 00:04:52 +00:00
Lasse Öörni
1d3f797643 Removed unnecessary code from Connection. 2011-07-27 23:06:12 +00:00
Lasse Öörni
f70cc35815 Added package file download support to the network protocol.
Added commented out package download test code to TestScene.as.
Increased kNet's UDP send rate upper limit and aggressiveness in increasing the send rate.
Fixed being unable to do sparse seeks in files when writing.
Container library bugfixes.
2011-07-27 22:41:12 +00:00
Lasse Öörni
bad8e776de Added networking documentation. 2011-07-27 08:41:16 +00:00
Lasse Öörni
ee9b6cc0f8 Renamed the script PostLoad() to FinishUpdate().
Optimized the finalization of CollisionShape & Joint attributes: the ODE object is not needlessly recreated.
2011-07-21 23:16:28 +00:00
Lasse Öörni
71603ae52e Initial kNet-based networking implementation.
Renamed SharedPtr::Ptr() to RawPtr() to avoid conflicts with kNet's Ptr macro.
Added chat test program.
2011-07-13 23:32:57 +00:00
Lasse Öörni
5a6c8f6d27 Removed global properties related to the script object's ScriptInstance. The ScriptInstance is available as the global property "self" instead.
Documentation update.
2011-07-05 08:46:45 +00:00
Lasse Öörni
a7a94a7af2 Unified the texture get/set data API between Direct3D9 & OpenGL.
Refactored OpenGL texture data restore on context recreation: now data is explicitly stored then restored, instead of relying on resource reload.
2011-07-04 18:55:46 +00:00
Lasse Öörni
0d29d818ad Moved from SDL to GLFW & PortAudio. 2011-06-24 23:20:09 +00:00
Lasse Öörni
af01853960 Fixed erroneous char input suppression in the example scripts.
If only vsync changes on OpenGL, do not recreate the context.
Documentation update.
2011-06-20 22:17:29 +00:00
Lasse Öörni
d55d29612c Documentation update. 2011-06-19 23:13:11 +00:00
Lasse Öörni
432f57b4b0 Use SDL 1.3 in OpenGL mode.
Removed system fonts directory feature because of being platform-specific.
Added the Anonymous Pro fixed width font.
2011-06-18 18:33:29 +00:00
Lasse Öörni
83bf3d1464 Switched to NVIDIA FXAA II based edge filter. 2011-06-15 13:33:16 +00:00
Lasse Öörni
87f9bbd846 Switched back to a edge filter for deferred antialiasing, as temporal antialiasing causes problems when both the camera and objects move.
Fixed infinite loop in HashMap copy.
2011-06-14 21:10:27 +00:00
Lasse Öörni
9c9643508c Use GL_DEPTH_COMPONENT24 instead of the packed depth stencil for OpenGL deferred rendering depth buffer, because the packed format seems to be slower.
Removed light prepass rendering support, as it has implementation difficulties under OpenGL and is often unsatisfactory in performance and specular lighting quality.
Removed the shader subdirectories.
Added option to specify whether single-channel images are to be interpreted as luminance or alpha, when loading into a texture.
2011-06-12 23:38:54 +00:00
Lasse Öörni
2669231c19 Added OpenGL related documentation. 2011-06-12 15:47:21 +00:00
Lasse Öörni
3ca3f84df9 Refactored shader loading. A binary format is now used instead of XML data.
PixelShader and VertexShader classes replaced with Shader and ShaderProgram.
2011-05-22 21:34:35 +00:00
Lasse Öörni
5f4b56103f Refactored ShaderCompiler to use D3DXCompileShader() instead of invoking fxc.exe. 2011-05-21 21:04:24 +00:00
Lasse Öörni
f60321b20f Use PODVector more extensively.
Moved Color class to Core library.
2011-05-21 12:15:04 +00:00
Lasse Öörni
f3859c1ed7 Added documentation about containers.
Removed unnecessary StringUtils.h includes.
Changed GetStringListIndex() to use an empty string as a terminator, similarly to enum attributes.
2011-05-21 10:01:31 +00:00
Lasse Öörni
62c9aa3d9c Added local node & component ID's in preparation to networking.
Split rendering documentation on several pages.
2011-05-10 21:09:03 +00:00
Lasse Öörni
a71d4d7b0e Added mention of AnimationController to the documentation. 2011-05-08 18:24:16 +00:00
Lasse Öörni
37f696be12 Added rest of the reference documentation. 2011-05-08 17:24:13 +00:00
Lasse Öörni
020232744a Even more documentation. 2011-05-08 12:20:22 +00:00
Lasse Öörni
9a5cbb6016 More documentation.
Tweaked NinjaSnowWar difficulty.
Moved CreateObject from Object to Context.
Made EventHandler & AnimationState RefCounted to simplify memory management.
2011-05-07 22:44:40 +00:00
Lasse Öörni
a7a458b3a9 Script API registration cleanup: asMETHODPR changed to asMETHOD where possible.
Added Remove() to Component & Node & UIElement; before it was script-only.
Renamed FrameUpdate back to FrameInfo.
Documentation update.
2011-05-04 07:05:26 +00:00
Lasse Öörni
2a6c10874c Documentation structure and Getting Started-documentation.
Fixed deletion of object, if no shared pointer to it existed previously, and it sent an event.
Fixed threading issue with objects' static type names. Now they are defined inside OBJECTTYPESTATIC macro as well.
Fixed Engine crash when running without the script system.
2011-05-03 23:17:15 +00:00