Minimally optimize light rendering #675
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.
This fixes #672
Currently, when there are enough amount of light sources, the mass amount of "lighting circles" can slow down rendering as each circle is rendered by gradients, handled by Java2D. This turn the light sources neighbouring other light sources in all 8 directions into a square of a tile (16-by-16 pixels) instead of a circle. This is done because when there are "circles" eventually overlapping the central circle, there is no difference when it is rendered only on itself. 16-by-16 square is chosen because it is intended to handle tile light sources. This cannot completely resolve the problem, but should be enough (from around 10 FPS raised up to over 50 on my end) to resolve the critical performance issue by light rendering. The resultant lighting behavior should have kept the same by this change. Different lighting mechanism may be used in the future.