I found something that is not implemented in JME: Tutorial 16 : Shadow mapping
It is not much, the gain is about 3% in FPS, but, like any other optimization, it is worth to use it:
Mod to Shadow15.glsllib:
float Shadow_DoPCFPoisson(in SHADOWMAP tex, in vec4 projCoord)
{
float border = Shadow_BorderCheck(projCoord.xy);
if (border > 0.0){
return 1.0;
}
float shadow = 0.0;
vec2 texelSize = pixSize2 * 4.0 * PCFEDGE * shadowBorderScale;
//4 distant points on poisson disk
shadow += SHADOWCOMPARE(tex, vec4(poissonDisk4 * texelSize + projCoord.xy, projCoord.zw));
shadow += SHADOWCOMPARE(tex, vec4(poissonDisk9 * texelSize + projCoord.xy, projCoord.zw));
shadow += SHADOWCOMPARE(tex, vec4(poissonDisk7 * texelSize + projCoord.xy, projCoord.zw));
shadow += SHADOWCOMPARE(tex, vec4(poissonDisk8 * texelSize + projCoord.xy, projCoord.zw));
if (shadow == 0.0) return 0.0;
if (shadow >= 4.0) return 1.0;
shadow += SHADOWCOMPARE(tex, vec4(poissonDisk0 * texelSize + projCoord.xy, projCoord.zw));
shadow += SHADOWCOMPARE(tex, vec4(poissonDisk1 * texelSize + projCoord.xy, projCoord.zw));
shadow += SHADOWCOMPARE(tex, vec4(poissonDisk2 * texelSize + projCoord.xy, projCoord.zw));
shadow += SHADOWCOMPARE(tex, vec4(poissonDisk3 * texelSize + projCoord.xy, projCoord.zw));
shadow += SHADOWCOMPARE(tex, vec4(poissonDisk5 * texelSize + projCoord.xy, projCoord.zw));
shadow += SHADOWCOMPARE(tex, vec4(poissonDisk6 * texelSize + projCoord.xy, projCoord.zw));
shadow += SHADOWCOMPARE(tex, vec4(poissonDisk10 * texelSize + projCoord.xy, projCoord.zw));
shadow += SHADOWCOMPARE(tex, vec4(poissonDisk11 * texelSize + projCoord.xy, projCoord.zw));
//this is divided by 12
return shadow * 0.08333333333;
}