It appears (core/transport.cpp in ::Connect function) that direct lighting can get through some surfaces (in fact every surface which are BSDF_SPECULAR | BSDF_TRANSMISSON) and for which F(-ray.d, ray.d) != 0. This allows direct light sampling to connect a diffuse vertex with a light through architectural glass / null material / ...
This is an issue for SPPM. Currently photons with pathLength of 0 are not taken into account in the density estimation because they are already taken into account by the direct lighting. But how to remove photons of pathLength > 0 which may be taken into account through architectural glass ? (See the attached image for an idea of the issue. It is a null cube split by a matte plane)
Also, I started to wonder after I saw this picture from the SPPM thread:
(generated with direct lighting integrator, but you can also get the same with path tracing and depth of 1, or SPPM with 0 photon / pass and direct lighting on)
Is this really direct lighting ? I mean, I can see no direct path from the roof to the light. The only way for light to come inside is through CURTAIN of the kitchen... Which is a matte translucent. How the hell do light get in the kitchen ?
Now, the kitchen scene is litted by three ligts, the kettle, sky and sun. If you disable kettle and sky, the sun can *normally* lit only the floor, but the roof is also lit. I tried to put thickness to the roof, but it does not help... Direct lighting of the sun is able to lit the roof !
