Re: RFR: 8260013: Snapshot does not work for nodes in a subscene [v3]

2024-01-29 Thread Lukasz Kostyra
On Fri, 26 Jan 2024 13:55:59 GMT, Lukasz Kostyra  wrote:

>> Originally this issue showed the problem of Node being incorrectly rendered 
>> (clipped) when snapshotting, compared to a snapshot of the whole Scene. 
>> Later on there was another problem added - lights not being taken into 
>> account if they are added to a SubScene.
>> 
>> As it later turned out, the original problem from this bug report is a 
>> problem with ParallelCamera incorrectly estimating near/far clipping planes, 
>> which just happened to reveal itself while snapshotting a Node. During 
>> testing I found out you can make the Node clip regardless of snapshot 
>> mechanism. Clipping issue was moved to a separate bug report and this PR 
>> only fixes the inconsistency in lights being gathered for a snapshot.
>> 
>> `Scene.doSnapshot()` was expanded to also check if SubScene provided to it 
>> is non-null and to fetch lights assigned to it. Scenario was tested with 
>> added SnapshotLightsTest.
>> 
>> Rest of the tests were checked and don't produce any noticeable regressions.
>
> Lukasz Kostyra has updated the pull request incrementally with two additional 
> commits since the last revision:
> 
>  - doSnapshot: Adjust light collection
>
>Snapshot now includes lights only from subScene if it is not null, which
>matches how SubScenes are rendered
>  - SnapshotLightsTest: Add test for a snapshot with an extra light in scene

Cleanup done, should be all OK now

-

PR Comment: https://git.openjdk.org/jfx/pull/1332#issuecomment-1914297543


Re: RFR: 8260013: Snapshot does not work for nodes in a subscene [v3]

2024-01-26 Thread Kevin Rushforth
On Fri, 26 Jan 2024 13:55:59 GMT, Lukasz Kostyra  wrote:

>> Originally this issue showed the problem of Node being incorrectly rendered 
>> (clipped) when snapshotting, compared to a snapshot of the whole Scene. 
>> Later on there was another problem added - lights not being taken into 
>> account if they are added to a SubScene.
>> 
>> As it later turned out, the original problem from this bug report is a 
>> problem with ParallelCamera incorrectly estimating near/far clipping planes, 
>> which just happened to reveal itself while snapshotting a Node. During 
>> testing I found out you can make the Node clip regardless of snapshot 
>> mechanism. Clipping issue was moved to a separate bug report and this PR 
>> only fixes the inconsistency in lights being gathered for a snapshot.
>> 
>> `Scene.doSnapshot()` was expanded to also check if SubScene provided to it 
>> is non-null and to fetch lights assigned to it. Scenario was tested with 
>> added SnapshotLightsTest.
>> 
>> Rest of the tests were checked and don't produce any noticeable regressions.
>
> Lukasz Kostyra has updated the pull request incrementally with two additional 
> commits since the last revision:
> 
>  - doSnapshot: Adjust light collection
>
>Snapshot now includes lights only from subScene if it is not null, which
>matches how SubScenes are rendered
>  - SnapshotLightsTest: Add test for a snapshot with an extra light in scene

Looks good. I left a few minor cleanup comments. I'll reapprove when/if you fix 
them.

modules/javafx.graphics/src/main/java/javafx/scene/Scene.java line 1350:

> 1348: }
> 1349: 
> 1350: // Grab the lights from the scene and/or subscene

Minor: `and/or` should now just be `or`

tests/system/src/test/java/test/javafx/scene/SnapshotLightsTest.java line 28:

> 26: package test.javafx.scene;
> 27: 
> 28: import javafx.embed.swing.SwingFXUtils;

Unused import

tests/system/src/test/java/test/javafx/scene/SnapshotLightsTest.java line 41:

> 39: import javafx.scene.shape.Box;
> 40: 
> 41: import org.junit.After;

Since this is a new test, maybe use JUnit5?

tests/system/src/test/java/test/javafx/scene/SnapshotLightsTest.java line 54:

> 52: import java.io.IOException;
> 53: 
> 54: import javax.imageio.ImageIO;

Unused imports

-

Marked as reviewed by kcr (Lead).

PR Review: https://git.openjdk.org/jfx/pull/1332#pullrequestreview-1846400854
PR Review Comment: https://git.openjdk.org/jfx/pull/1332#discussion_r1468057260
PR Review Comment: https://git.openjdk.org/jfx/pull/1332#discussion_r1468059055
PR Review Comment: https://git.openjdk.org/jfx/pull/1332#discussion_r1468060838
PR Review Comment: https://git.openjdk.org/jfx/pull/1332#discussion_r1468061387


Re: RFR: 8260013: Snapshot does not work for nodes in a subscene [v3]

2024-01-26 Thread Lukasz Kostyra
> Originally this issue showed the problem of Node being incorrectly rendered 
> (clipped) when snapshotting, compared to a snapshot of the whole Scene. Later 
> on there was another problem added - lights not being taken into account if 
> they are added to a SubScene.
> 
> As it later turned out, the original problem from this bug report is a 
> problem with ParallelCamera incorrectly estimating near/far clipping planes, 
> which just happened to reveal itself while snapshotting a Node. During 
> testing I found out you can make the Node clip regardless of snapshot 
> mechanism. Clipping issue was moved to a separate bug report and this PR only 
> fixes the inconsistency in lights being gathered for a snapshot.
> 
> `Scene.doSnapshot()` was expanded to also check if SubScene provided to it is 
> non-null and to fetch lights assigned to it. Scenario was tested with added 
> SnapshotLightsTest.
> 
> Rest of the tests were checked and don't produce any noticeable regressions.

Lukasz Kostyra has updated the pull request incrementally with two additional 
commits since the last revision:

 - doSnapshot: Adjust light collection
   
   Snapshot now includes lights only from subScene if it is not null, which
   matches how SubScenes are rendered
 - SnapshotLightsTest: Add test for a snapshot with an extra light in scene

-

Changes:
  - all: https://git.openjdk.org/jfx/pull/1332/files
  - new: https://git.openjdk.org/jfx/pull/1332/files/49782ee8..5259be87

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jfx=1332=02
 - incr: https://webrevs.openjdk.org/?repo=jfx=1332=01-02

  Stats: 43 lines in 2 files changed: 34 ins; 0 del; 9 mod
  Patch: https://git.openjdk.org/jfx/pull/1332.diff
  Fetch: git fetch https://git.openjdk.org/jfx.git pull/1332/head:pull/1332

PR: https://git.openjdk.org/jfx/pull/1332