Package ca.eandb.jmist.framework

Examples of ca.eandb.jmist.framework.ScatteredRay


   */
  @Override
  public ScatteredRay scatter(SurfacePoint x, Vector3 v, boolean adjoint,
      WavelengthPacket lambda, double ru, double rv, double rj) {

    ScatteredRay sr = null;
    Color col = lambda.getColorModel().getWhite(lambda);

    for (Material e : inner) {
      sr = e.scatter(x, v, adjoint, lambda, rnd.next(), rnd.next(), rnd.next());
      if (sr == null) break;
      v = sr.getRay().direction();
      col = col.times(sr.getColor());
    }

    if (sr == null) {
      return null;
    } else if (sr.getRay().direction().dot(x.getNormal()) < 0.0) {
      return ScatteredRay.diffuse(sr.getRay(), col, 1.0);
    } else {
      return ScatteredRay.transmitDiffuse(sr.getRay(), col, 1.0);
    }
  }
View Full Code Here


    public boolean isSpecular() {
      return inner.isSpecular();
    }

    public ScatteredRay sample(double ru, double rv, double rj) {
      ScatteredRay sr = inner.sample(ru, rv, rj);
      return new ScatteredRay(sr.getRay(), sr.getColor(), sr.getType(), sr.getPDF() / fraction, sr.isTransmitted());
    }
View Full Code Here

    Vector3 N = x.getNormal();
    int  depth = (v.dot(N) > 0.0) ? (layers.size() - 1) : 0;
    int dir;

    ScatteredRay sr;
    Color col = lambda.getColorModel().getWhite(lambda);

    do  {

      Material layer = layers.get(depth);
      sr = layer.scatter(x, v, adjoint, lambda, rnd.next(), rnd.next(), rnd.next());

      if (sr == null) return null;
      v = sr.getRay().direction();

      dir = (v.dot(N) > 0.0) ? -1 : 1;
      depth += dir;

      col = col.times(sr.getColor());

    } while (depth >= 0 && depth < layers.size());

    return depth < 0
      ? ScatteredRay.diffuse(sr.getRay(), col, 1.0)
      : ScatteredRay.transmitDiffuse(sr.getRay(), col, 1.0);
  }
View Full Code Here

    double g = microfacets.getShadowingAndMasking(v, out, m, n);
    double weight = (mdoti / (ndoti * mdotn)) * g;
    double pdf = getScatteringPDF(x, v, out, adjoint, lambda);

    return new ScatteredRay(new Ray3(x.getPosition(), out), lambda.getColorModel().getGray(weight, lambda), ScatteredRay.Type.GLOSSY, pdf, !reflected);

  }
View Full Code Here

      }
      public Point2 getUV() {
        return x.getUV();
      }
    };
    ScatteredRay sr = material.scatter(surf, v, adjoint, white.getWavelengthPacket(), rnd.next(), rnd.next(), rnd.next());
    return sr != null ? sr.getRay().direction() : null;

  }
View Full Code Here

            2.0 * Math.PI * rv);
        w = perturb.toCartesian(basis);
      } while ((w.dot(N) > 0.0) != toSide);
    }

    return new ScatteredRay(new Ray3(x.getPosition(), w),
        lambda.getColorModel().getWhite(lambda),
        Double.isInfinite(specularity) ? Type.SPECULAR : Type.DIFFUSE,
        1.0, fromSide != toSide);
  }
View Full Code Here

TOP

Related Classes of ca.eandb.jmist.framework.ScatteredRay

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.