armory3d / armory3d/armory

Armory Should Use Spherical Area Lights

Open
#618 0 comments 4 reactions 0 assignees View on GitHub
feature request
Dominant language
C++
Stars
3.3k
Forks
353
Avg merge
3d 16h
Merged PRs (30d)
1

Description

Currently Armory's lighting uses infinity small point lighting. In some cases that may be fine, but once you turn down roughness to low values (like 0.01) for very crisp surfaces or just make bigger lamp objects in scene, the specular reflections start to look odd or disappear whatsoever. From my experience, coding spherical area lights isn't hard at all and they give quite a bit of improvement to the lighting. For light radius, cycles already uses "size" parameter.
Regarding the code itself:

- for diffuse light attenuation refer to: https://imdoingitwrong.wordpress.com/2011/01/31/light-attenuation/
which provides fast approximation
- for specular lights think this way: instead of having 1 peak point where the brightness is max and then there's fallow, you need to have a plato that represents the light source with fallow on both sides. To calculate the plato size, try ray-sphere intersection (check the closest point on the sphere from the reflecting ray and use that point as light source position instead of light source's center).

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by locating Armory's lighting implementation and compare its point-light behavior with Cycles' existing size parameter. Review the linked diffuse attenuation reference and the proposed ray-sphere intersection approach; done means spherical area lights improve crisp-surface and larger-lamp reflections without losing the intended light-size behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
computer-graphics
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.