diff options
author | Juan Linietsky <reduzio@gmail.com> | 2020-04-08 13:59:10 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-08 13:59:10 -0300 |
commit | 26ecd924cc15c69362cc921235a0e81b5d0c88fd (patch) | |
tree | bb5e59a8705b42c18af1d1d52780839624eab46a /servers/rendering/rasterizer_rd/light_cluster_builder.h | |
parent | b80631a3940cf5112a720a7ac2fcf0dfcb548ba9 (diff) | |
parent | 4ffc0d6b3f15bc1235c94932bf8e462dbaae9426 (diff) |
Merge pull request #37678 from reduz/refactor-shadowmapping
Refactored shadowmapping.
Diffstat (limited to 'servers/rendering/rasterizer_rd/light_cluster_builder.h')
-rw-r--r-- | servers/rendering/rasterizer_rd/light_cluster_builder.h | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/servers/rendering/rasterizer_rd/light_cluster_builder.h b/servers/rendering/rasterizer_rd/light_cluster_builder.h index 3411ed07a0..50a68e03cb 100644 --- a/servers/rendering/rasterizer_rd/light_cluster_builder.h +++ b/servers/rendering/rasterizer_rd/light_cluster_builder.h @@ -170,17 +170,15 @@ public: _add_item(aabb, ITEM_TYPE_OMNI_LIGHT, light_count); } break; case LIGHT_TYPE_SPOT: { - Vector3 v(0, 0, -1); - v.rotated(Vector3(0, 1, 0), Math::deg2rad(ld.spot_aperture)); //rotate in x-z - v.normalize(); - v *= ld.radius; - v.y = v.x; + + float r = ld.radius; + real_t len = Math::tan(Math::deg2rad(ld.spot_aperture)) * r; aabb.position = xform.origin; - aabb.expand_to(xform.xform(v)); - aabb.expand_to(xform.xform(Vector3(-v.x, v.y, v.z))); - aabb.expand_to(xform.xform(Vector3(-v.x, -v.y, v.z))); - aabb.expand_to(xform.xform(Vector3(v.x, -v.y, v.z))); + aabb.expand_to(xform.xform(Vector3(len, len, -r))); + aabb.expand_to(xform.xform(Vector3(-len, len, -r))); + aabb.expand_to(xform.xform(Vector3(-len, -len, -r))); + aabb.expand_to(xform.xform(Vector3(len, -len, -r))); _add_item(aabb, ITEM_TYPE_SPOT_LIGHT, light_count); } break; } |