summaryrefslogtreecommitdiff
path: root/servers/rendering/rasterizer_rd/light_cluster_builder.h
diff options
context:
space:
mode:
authorJuan Linietsky <reduzio@gmail.com>2020-04-08 13:59:10 -0300
committerGitHub <noreply@github.com>2020-04-08 13:59:10 -0300
commit26ecd924cc15c69362cc921235a0e81b5d0c88fd (patch)
treebb5e59a8705b42c18af1d1d52780839624eab46a /servers/rendering/rasterizer_rd/light_cluster_builder.h
parentb80631a3940cf5112a720a7ac2fcf0dfcb548ba9 (diff)
parent4ffc0d6b3f15bc1235c94932bf8e462dbaae9426 (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.h16
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;
}