Commit graph

1049 commits

Author SHA1 Message Date
Alexander Kleemann aec10274f4 Add option to ignore irradiance for baked environments 2021-02-20 15:30:18 +01:00
Alexander Kleemann f1858550d0 Blending fix
Fix for https://github.com/armory3d/armory/issues/1615
2021-02-20 13:51:25 +01:00
SunDaw c5855ad96f Add mask option to pick RB node and physicsworld 2021-02-19 19:42:18 +01:00
Lubos Lenco 84663bc981
Merge pull request #2106 from SunDaw/optimize-sendevent-nodes
Remove array allocation from SendEventNode
2021-02-16 15:48:57 +01:00
knowledgenude 0ee35adc81 Improved FSM 2021-02-14 19:21:26 -03:00
Lubos Lenco 49a599dc66
Merge pull request #2102 from N8n5h/light-fix-2
Add support for shadow map atlasing
2021-02-14 16:32:59 +01:00
SunDaw 6cbe539098 Reuse contacts array instead of creating new
Remove unused import from PhysicsWorld
2021-02-13 17:23:16 +01:00
SunDaw a2e4850b12 Remove array allocation from SendEventNode
Remove entires member variable from SendEvent nodes
2021-02-13 16:56:21 +01:00
N8n5h 1c3e24a8fd Add support for shadow map atlasing
With this it is now possible to enable atlasing of shadow maps, which solves the existing limitation of 4 lights in a scene. This is done by
grouping the rendering of shadow maps, that currently are drawn into their own images for each light, into one or several big textures. This was
done because the openGL and webGL version Armory targets do not support dynamic indexing of shadowMapSamplers, meaning that the index that
access an array of shadow maps has to be know by the compiler before hand so it can be unrolled into if/else branching. By instead simply
using a big shadow map texture and moving the dynamic part to other types of array that are allowed dynamic indexing like vec4 and mat4, this
limitation was solved.

The premise was simple enough for the shader part, but for the Haxe part, managing and solving where lights shadow maps should go in a shadow map
can be tricky. So to keep track and solve this, ShadowMapAtlas and ShadowMapTile were created. These classes have the minimally required logic
to solve the basic features needed for this problem: defining some kind of abstraction to prevent overlapping of shadowmaps, finding available
space, assigning such space efficiently, locking and freeing this space, etc. This functionality it is used by drawShadowMapAtlas(), which is a
modified version of drawShadowMap().

Shadow map atlases are represented with perfectly balanced 4-ary trees, where each tree of the previous definition represents a "tile" or slice
that results from dividing a square that represents the image into 4 slices or sub-images. The root of this "tile" it's a reference to the
tile-slice, and this tile is divided in 4 slices, and the process is repeated depth-times. If depth is 1, slices are kept at just the initial
4 tiles of max size, which is the default size of the shadow map. #arm_shadowmap_atlas_lod allows controlling if code to support more depth
levels is added or not when compiling.

the tiles that populate atlases tile trees are simply a data structure that contains a reference to the light they are linked to, inner
subtiles in case LOD is enabled, coordinates to where this tile starts in the atlas that go from 0 to Shadow Map Size, and a reference to a
linked tile for LOD. This simple definition allows tiles having a theoretically small memory footprint, but in turn this simplicity might make
some functionality that might be responsibility of tiles (for example knowing if they are overlapping) a responsibility of the ones that
utilizes tiles instead. This decision may complicate maintenance so it is to be revised in future iterations of this feature.
2021-02-04 17:53:59 -03:00
Kevin Leung 4ee1131f6e
[PickLocation] Actually return null when input invalid 2021-01-29 20:54:34 +08:00
knowledgenude 6ef1195816 Update inputmap and add FSM 2021-01-25 20:19:24 -03:00
knowledgenude 081fcb2870 update-inputmap 2021-01-11 18:14:21 -03:00
knowledgenude ae057508ca
Fix mouse wheel key verification 2021-01-04 12:09:30 -03:00
knowledgenude 24f62623ad add-inputmapper 2021-01-04 11:28:59 -03:00
QuantumCoderQC 174ce72349 Correct Spacing 2020-12-27 00:35:24 +01:00
QuantumCoderQC 4ee36afc0c Add Speed and Loop options for Play Action From Node 2020-12-27 00:29:03 +01:00
Lubos Lenco 2dcd1a951b
Merge pull request #2066 from knowledgenude/master
Fix inverted margin for Kinematic Character
2020-12-26 10:22:31 +01:00
QuantumCoderQC a0422d49f2 Improve physics constraint handling 2020-12-23 16:03:45 +01:00
knowledgenude f836e597d1 fix-inverted-margin 2020-12-22 20:49:03 -03:00
Lubos Lenco 6ee5af2518
Merge pull request #2062 from QuantumCoderQC/conFix
Fix adding physics constraint at game start
2020-12-19 11:20:39 +01:00
QuantumCoderQC 2f911c756e Remove physics constraint helper trait 2020-12-17 15:05:46 +01:00
QuantumCoderQC bf22d7add6 Fix physics constraints at start-up 2020-12-17 15:01:21 +01:00
knowledgenude 8c1baa2e9a add-world-vector-to-local-space-node 2020-12-16 17:24:43 -03:00
Lubos Lenco e2231c7f16
Merge pull request #2055 from MoritzBrueckner/shader-uniform-node
Add SetShaderUniform node
2020-12-16 10:48:10 +01:00
Moritz Brückner b03e15edba Add 'stream' option to Play Sound nodes 2020-12-13 22:53:36 +01:00
Moritz Brückner 62dbc5f34a Add SetShaderUniform node 2020-12-13 22:41:05 +01:00
Lubos Lenco 9f35d55bd3
Merge pull request #2047 from QuantumCoderQC/bcon_nodes
New Physics Constraint nodes. Improve Bullet Physics constraint trait
2020-12-06 09:19:14 +01:00
Lubos Lenco bcfbdae925
Merge pull request #2045 from knowledgenude/master
Fix volume trigger
2020-12-06 09:16:12 +01:00
QuantumCoderQC 71763f9e47 Custom constraint node implemetation 2020-12-05 01:12:59 +01:00
QuantumCoderQC 8a1b59ef8b Haxe implementation of AddPhysicsTrait. 2020-12-05 01:12:59 +01:00
QuantumCoderQC 300f5e37ea Add documentation. Cleanup. 2020-12-05 01:12:59 +01:00
QuantumCoderQC aab7a027c6 Add support functions to set limits. Add documentation. 2020-12-05 01:12:59 +01:00
QuantumCoderQC d87be744b2 Change SetDecativationParams in node to setUpDeactivation to prevent runtime errors. 2020-12-05 01:12:59 +01:00
QuantumCoderQC ca9be33152 Added addPhysicsConstraint and removePhysicsConstraint methods. Added internal Map to keep track of PhysicsConstraints 2020-12-05 01:12:59 +01:00
QuantumCoderQC 951f8298b8 Modify to use iron.object.Object instead of String for objects to be linked by PhysicsConstraint 2020-12-05 01:12:59 +01:00
QuantumCoderQC 49e06b4b63 New helper class to add physics constraints via Blender Armory exporter 2020-12-05 01:12:59 +01:00
knowledgenude d726e8fc83 fix-volume-trigger 2020-12-04 07:20:42 -03:00
E1e5en 1867975099 Fix OnSwipe
Correction of determining the direction of UP-LEFT.
Wrong 9 degrees =)
2020-12-01 21:18:12 +03:00
Lubos Lenco 468da22b5b
Merge pull request #2029 from knowledgenude/master
Added functions to disable/enable collision
2020-11-30 10:41:42 +01:00
Lubos Lenco 5ff3ec9055
Merge pull request #2028 from QuantumCoderQC/rb_nodes
New Add rigid body node
2020-11-30 10:38:20 +01:00
knowledgenude 8a30a94523
Added functions to disable/enable collision 2020-11-29 10:15:47 -03:00
QuantumCoderQC d71284560e Implemented a new node to add rigid bodies to objects at run-time 2020-11-29 01:16:59 +01:00
QuantumCoderQC 1aa60e9315 Add params and flags description. Modify force deactivation to use deactivation in rigid bodies 2020-11-29 01:08:28 +01:00
Moritz Brückner 068a539f60 Forward renderpath: add support for chromatic aberration 2020-11-28 23:09:07 +01:00
Lubos Lenco 607c5e57cf
Merge pull request #2024 from MoritzBrueckner/mouse-movement
Improve `Get Mouse Movement` node
2020-11-28 12:30:52 +01:00
Moritz Brückner 0acadd2e74 Improve Get Mouse Movement node 2020-11-26 10:00:35 +01:00
Lubos Lenco 73cae5406e
Merge pull request #2023 from E1e5en/ln-math-expression
LN Math Expression
2020-11-26 08:49:04 +01:00
knowledgenude ce629455ad
Update VectorFromBooleanNode.hx 2020-11-19 13:57:39 -03:00
knowledgenude cc481ea15c fix-nodes 2020-11-19 10:38:46 -03:00
E1e5en 9ab9d5c5db LN Math Expression
First version:
- Dynamically checking the correctness of an expression in the IDE (Blender).
- The task is divided into 2 parts: checking the correctness through python in the Blender interface and when performing calculations when the application is running in haxe.
The following decisions are taken as a basis:

python - http://repl.it/3xv/1
haxe - https://github.com/maitag/formula (added all the necessary classes to the node code)
2020-11-19 11:41:24 +03:00