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

Reply via email to