On Thu, 2 Jan 2020 18:18:21 GMT, Nir Lisker <nlis...@openjdk.org> wrote:
>> 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. I get the same error on Ubuntu 16.04 as on Mac. Did you run the system tests with `-PFULL_TEST=true -PUSE_ROBOT=true`? Also, you can try running the `fx83dfeatures/LightMotion` toy and you should see the same error. I still need to test your sample app on Mac. ------------- PR: https://git.openjdk.java.net/jfx/pull/43