On Sat, 18 Dec 2021 15:45:07 GMT, Nir Lisker <nlis...@openjdk.org> wrote:

>> 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:
> 
>   Fixes for review comments

tests/performance/3DLighting/attenuation/Environment.java line 87:

> 85: 
> 86:         directionalLight1.setDirection(new Point3D(-LIGHT_X_DIST, 0, 
> LIGHT_Z_DIST));
> 87:         directionalLight2.setDirection(new Point3D(LIGHT_X_DIST, 0, 
> LIGHT_Z_DIST));

You need to add an import for `Point3D`.

-------------

PR: https://git.openjdk.java.net/jfx/pull/548

Reply via email to