Commit graph

2023 commits

Author SHA1 Message Date
Lubos Lenco d88d2320ed
Merge pull request #2135 from N8n5h/physics-2
Expose the exported rigid body type to the UI to make rb less confusing
2021-03-21 13:03:34 +01:00
Lubos Lenco 54fcd49c27
Merge pull request #2134 from QuantumCoderQC/patch-1
Make description of logic node more precise
2021-03-20 09:58:36 +01:00
N8n5h a778460d28 Expose the exported rigid body type to the UI to make rb less confusing 2021-03-18 22:52:08 -03:00
QuantumCoderQC 255921b9ee
Make description of logic node more precise
The OnVolumeTrigger node does not required a RigidBody.
2021-03-18 21:34:59 +01:00
N8n5h ca2c3e151a Modified UI for collision filter props_collision_filter_mask
* Moved to collision filter mask panel under armory props to keep UI
more tidy.
* Moved the `arm_rb_collision_filter_mask` property out of the
props_collision_filter_mask to be with the rest of the properties.
* Changed name and description of collision filter mask to be more
consistent with the existing rigid body UI.
2021-03-17 20:28:26 -03:00
Lubos Lenco 7d78e01bb4
Merge pull request #2128 from N8n5h/light-fix-2
Fix shadows not working when there are lights present with cast_shadow=false
2021-03-16 08:28:19 +01:00
Lubos Lenco 71a5ac6f6e
Merge pull request #2126 from MoritzBrueckner/trait-props
Make `@prop` recognition more robust
2021-03-15 13:45:02 +01:00
N8n5h 7463de6140 Add cast_shadow to lightArray data
This was done to undo the hardcoded nature of "receiveShadows", which
doesn't play nice when you have multiple lights of the same type and
one or several have cast_shadow set to false.

By simply "passing" the cast_shadow parameter within the lightArray it
was possible to detect lights that don't cast shadows before actually
wasting gpu cycles to render shadows with garbage data.

Support for deferred desktop and mobile, and forward was added.
2021-03-14 23:20:57 -03:00
Moritz Brückner b7fef30b70 Further improve handling of final trait props 2021-03-14 15:50:27 +01:00
Moritz Brückner 4ad68304e5 Improve @prop warning messages 2021-03-13 21:22:42 +01:00
Moritz Brückner 7d9c6ce7c7 Make @prop recognition much more robust 2021-03-13 21:12:12 +01:00
N8n5h 404a1248a1 Make clusterNear be the same as in LightObject 2021-03-13 13:30:25 -03:00
Alexander Kleemann e5d6c47e3e Fix Blender exit error (Keymap winman hangs) 2021-03-10 20:49:51 +01:00
Alexander Kleemann 4009d9d3fe Fix for an error with NoneType materials
Solves an error where an unallocated material slot caused a bug
2021-03-10 20:48:46 +01:00
Lubos Lenco 7c56ee9304
Merge pull request #2122 from N8n5h/light-fix
Fix forward+single atlas failing to compile with just 1 light
2021-03-03 08:26:38 +01:00
N8n5h 72dde10fb0 Fix forward+single atlas failing to compile with just 1 light
This should fix an issue where the uniform for shadowMapAtlas used with the single atlas option was not added when having just 1 light.
2021-03-02 20:20:31 -03:00
N8n5h cf99e5a382 Fixed point lights breaking for Krom Windows with shadow map atlas
https://github.com/armory3d/armory/issues/2110#issuecomment-787913813
2021-03-01 18:39:32 -03:00
N8n5h 5f8b92f9c3 Applied flip workaround for point light too for html5 and atlas
The same concept for spot lights was applied for point lights;
the difference is that because point lights require to do the projection in the shader, the first inversion was applied in sampleCube() when returning the uv coordinates.
"_FlipY" was added to replace "_InvY" in "PCFFakeCube()" because the inversion is only necessary for shaders and not anything else, otherwise it would break rendering of other parts.
2021-03-01 18:39:32 -03:00
luboslenco 4dbf8a3b2a Bump version 2021-03-01 09:07:33 +01:00
tong 3e15ed9b5c Write debug param by default 2021-02-25 14:06:31 +01:00
Lubos Lenco 91a10bea5c
Merge pull request #2115 from tong/update-custom-icons
Update custom trait icons
2021-02-25 08:11:45 +01:00
Lubos Lenco 31f1b58c07
Merge pull request #2114 from Naxela/master
Blending fix + ignore irradiance per material
2021-02-23 11:14:11 +01:00
tong dbee605e3f Downscale icons to 32px 2021-02-22 18:05:28 +01:00
tong d20656339b Update custom icons 2021-02-22 15:50:19 +01:00
Lubos Lenco e7ca541b51
Merge pull request #2113 from MoritzBrueckner/fix-1689
Fix drawing of bool properties in UI (#1689)
2021-02-22 09:47:51 +01:00
Lubos Lenco f99ff0576d
Merge pull request #2111 from tong/console-improvements
Console improvements
2021-02-21 10:24:41 +01:00
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
tong 352f37db0c More f string 2021-02-20 09:53:48 +01:00
tong a1fce84f59 Use f string to format console messages 2021-02-20 09:36:42 +01:00
Moritz Brückner 98481929df Fix drawing of bool properties in UI (#1689) 2021-02-19 20:59:54 +01:00
SunDaw c5855ad96f Add mask option to pick RB node and physicsworld 2021-02-19 19:42:18 +01:00
tong 0abb43f249 Revert terminal color change 2021-02-19 17:25:42 +01:00
tong d93de12252 Print human readable time 2021-02-19 17:04:18 +01:00
tong 325f7471c0 Fix printing build flags 2021-02-19 17:01:09 +01:00
tong b7c4a8bb3f Improve console build messages 2021-02-19 16:57:12 +01:00
tong d4ee144577 Improve console warning 2021-02-19 16:53:01 +01:00
tong 8bc831d7e2 Show scene name in missing camera warning 2021-02-19 16:50:29 +01:00
N8n5h 3ef380978e Make sure compiled.inc is always first when parsing shaders for clusters 2021-02-14 20:21:51 -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
Lubos Lenco 726e2fec6d
Merge pull request #2105 from MoritzBrueckner/custom-mat-operator
Add button to create a new custom material
2021-02-13 17:30:54 +01:00
Moritz Brückner 52e4aaa21c Add button to create a new custom material 2021-02-12 20:12:55 +01:00
Moritz Brückner 3260e627ce Fix custom material export when scene is exported in arm format
See af247f1876 for reference
2021-02-12 00:31:19 +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
Moritz Brückner afe133381c Fix normals export of skinned materials 2021-02-03 18:23:22 +01:00
luboslenco 6ffa58fb6b Bump version 2021-02-01 10:00:43 +01:00
tong 725520081a Normalize sdk path 2021-01-26 16:38:49 +01:00
tong 8619006757 Print rounded build time to console 2021-01-24 18:36:58 +01:00
Moritz Brückner 41657adb64 Cleanup 2021-01-17 00:23:19 +01:00
Moritz Brückner fb8a056394 Fix reroute socket indices 2021-01-17 00:23:02 +01:00