WavelengthPacket lambda, double ru, double rv, double rj) {
Vector3 N = x.getNormal();
if (v.dot(N) < 0.0) {
N = N.opposite();
}
return ScatteredRay.transmitDiffuse(new Ray3(x.getPosition(),
RandomUtil.diffuse(ru, rv).toCartesian(Basis3.fromW(N))),
lambda.getColorModel().getWhite(lambda), 1.0);