RFR: 8234921: Add DirectionalLight to the selection of 3D light types [v6]
Nir Lisker
nlisker at openjdk.java.net
Mon Dec 20 13:13:09 UTC 2021
> Adds a directional light as a subclass of `LightBase`. I think that this is the correct hierarchy for it.
>
> I tried to simulate a directional light by putting a point light far away, but I got artifacts when the distance was large. Instead, I added an on/off attenuation flag as the 4th component of the attenuation 4-vector. When it is 0, a simpler computation is used in the pixel/fragment shader that calculates the illumination based on the light direction only (making the position variables meaningless). When it is 1, the point/spot light computation is used. It's possible that the vertex shader can also be simplified in this case since it does not need to transform the position vectors, but I left this optimization avenue for another time.
>
> I noticed a drop of ~1 fps in the stress test of 5000 meshes.
>
> I added a system test that verifies the correct color result from a few directions. I also updated the lighting sample application to include 3 directional lights and tested them on all the models visually. The lights seem to behave the way I would expect.
Nir Lisker has updated the pull request incrementally with one additional commit since the last revision:
Added import
-------------
Changes:
- all: https://git.openjdk.java.net/jfx/pull/548/files
- new: https://git.openjdk.java.net/jfx/pull/548/files/7b3709d7..c3fa4b49
Webrevs:
- full: https://webrevs.openjdk.java.net/?repo=jfx&pr=548&range=05
- incr: https://webrevs.openjdk.java.net/?repo=jfx&pr=548&range=04-05
Stats: 1 line in 1 file changed: 1 ins; 0 del; 0 mod
Patch: https://git.openjdk.java.net/jfx/pull/548.diff
Fetch: git fetch https://git.openjdk.java.net/jfx pull/548/head:pull/548
PR: https://git.openjdk.java.net/jfx/pull/548
More information about the openjfx-dev
mailing list