Full support for arbitrary spotlight scales #2442
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #2145 and requires armory3d/iron#155.
Previously the code expected spotlights to be scaled to 1,1,1 and if this wasn't the case, it could happen that spot lights weren't rendered (because each fragment was treated as being outside of the light cone).
Now Armory supports arbitrary spotlight scales, so it is now possible for example to create an elliptic spotlight by scaling it on one axis. The output shape is exactly the same as in Eevee. Unfortunately we need slightly more data on the GPU now (up to 4 more floats per spotlight depending on the shader), but I think that's acceptable.
I put the spotlight glsl code in a new module because it is also used in mobile deferred where including light.glsl would lead to a redefinition of uniforms.