Hi, Using the updated lighting test sample [1], I found some odd behavior with regards to PhongMaterial:
1. The effect of the opacity (alpha channel) of a self-illumination map is not documented, but lowering its value makes the object darker. I looked at the pixel shader [2] and only the rgb components are sampled, so I'm a bit confused here. What is the intended behavior? 2. The opacity of the object is controlled in the shader by both the diffuse color and diffuse map. This is also not documented (although it might be obvious for some). In the shader, the pixel (fragment) is discarded only if the map is fully transparent (line 55), but not the color. This leads to a situation where the object completely disappears when the map is transparent, but not when the color is. In the shader, the pixel should be transparent because of the multiplication of the alpha, but it's not, so this is also confusing. Should they both have the same contribution? Shouldn't it be valid to have a transparent diffuse but still have specular reflections? 3. The specular map and color behave differently in regards to the opacity. There is no documented behavior here. The alpha on the color is ignored (it's used for the specular power), but not on the map - it controls the reflection's strength, probably by making its color darker. In the shader, lines 76-84 indeed ignore the alpha of the color, but take the alpha of the map, although later in line 93 it's not used, so again I'm confused. What's the intended behavior? 4. The specular map and color also behave differently in regards to the reflection's strength. In the shader, this happens in line 78: the specular power is corrected with NTSC_Gray if there is a map (with or without color), but not if there's only a color. Shouldn't the contributions be the same? Is the NTSC_Gray correction correct in this case? Thanks, Nir [1] https://github.com/openjdk/jfx/pull/787 [2] https://github.com/openjdk/jfx/blob/master/modules/javafx.graphics/src/main/native-prism-d3d/hlsl/Mtl1PS.hlsl