On Fri, 20 Dec 2019 21:56:32 GMT, Kevin Rushforth <k...@openjdk.org> wrote:
>> The bug I mentioned above is not a bug actually. There are large changes >> over a small distance that make it looks like a jump in the lighting values, >> but when working with a finer scale the lighting dynamics seem correct. > > I think this is on the right track. The API looks like it is in good shape. > > This will need a fair bit of testing to ensure that there are no regressions > either in functionality or (especially) performance, in addition to tests for > the new functionality. On the performance aspect, the inner loop of the > lighting calculation now has an additional if test for the max range and > additional arithmetic calculations for the attenuation. What we will need is > a test program that we can run on Mac and Windows to measure the performance > of rendering in a fill-rate-limited case. Ideally, we would not pay much of a > performance hit in the default case where `ca == 1, la == 0, qa == 0`, but we > first need to be able to measure the drop in performance before we can say > whether it is acceptable. > > Speaking of testing, I took the current patch for a test drive on Mac and > Windows. I get the following system test failures on Mac, and also the same > failure using fx83dfeatures/LightMotion in toys. > > > Shader compile log: ERROR: 0:308: Use of undeclared identifier 'range' > ERROR: 0:316: Regular non-array variable 'dist' may not be redeclared > > test.robot.test3d.MeshCompareTest > testSnapshot3D[3] STANDARD_ERROR > java.lang.RuntimeException: Error creating fragment shader > at > javafx.graphics/com.sun.prism.es2.ES2Shader.createFromSource(ES2Shader.java:141) > at > javafx.graphics/com.sun.prism.es2.ES2PhongShader.getShader(ES2PhongShader.java:177) > ... > test.robot.test3d.MeshCompareTest > testSnapshot3D[3] FAILED > java.lang.IllegalArgumentException: Unrecognized image loader: null > at > javafx.graphics/javafx.scene.image.WritableImage.loadTkImage(WritableImage.java:278) > at > javafx.graphics/javafx.scene.image.WritableImage$1.loadTkImage(WritableImage.java:53) > at javafx.graphics/javafx.scene.Scene.doSnapshot(Scene.java:1340) > at javafx.graphics/javafx.scene.Scene.doSnapshot(Scene.java:1372) > at javafx.graphics/javafx.scene.Scene.snapshot(Scene.java:1462) > at > test.robot.test3d.MeshCompareTest.lambda$testSnapshot3D$0(MeshCompareTest.java:315) > > > test.robot.test3d.Snapshot3DTest > testSnapshot3D[3] FAILED > (same failure as above) > > > test.robot.test3d.Snapshot3DTest > testSnapshot3D[7] FAILED > (same failure as above) > I get the following system test failures on Mac > ``` > Shader compile log: ERROR: 0:308: Use of undeclared identifier 'range' > ERROR: 0:316: Regular non-array variable 'dist' may not be redeclared > ``` I don't have a Mac to test on, but on Ubuntu system tests pass (I ran the `test` command for systemTests). Does the sample app I attached also fail on Mac? They both use the same shaders, so I wonder where the issue could be. Moreover, the error messages are strange. `dist` is not redeclared and `range` is not undeclared in the shader. The error message seems to originate from the native function `Java_com_sun_prism_es2_GLContext_nCompileShader` in `GLContext.c`, not managing to compile the shader, but I can't tell why. ------------- PR: https://git.openjdk.java.net/jfx/pull/43