コード例 #1
0
ファイル: homogeneous.cpp プロジェクト: BlueBrain/pbrt
bool HomogeneousVolumeDensity::SampleDirection(const Point &p, const Vector& wi,
        Vector& wo, float* pdf, RNG &rng) const {
    const Point Pobj = WorldToVolume(p);
    if(extent.Inside(Pobj)) {
        wo = SampleHG(wi, g, rng.RandomFloat(), rng.RandomFloat());
        *pdf = PhaseHG(wi, wo, g);
        return true;
    } else {
        return false;
    }
}
コード例 #2
0
	bool IntersectP(const Ray &r, float *t0, float *t1) const {
		Ray ray = WorldToVolume(r);
		return extent.IntersectP(ray, t0, t1);
	}
コード例 #3
0
ファイル: homogeneous.cpp プロジェクト: EiffelOberon/pbrt-v1
	float p(const Point &p, const Vector &wi, const Vector &wo) const {
		if (!extent.Inside(WorldToVolume(p))) return 0.;
		return PhaseHG(wi, wo, g);
	}
コード例 #4
0
ファイル: homogeneous.cpp プロジェクト: EiffelOberon/pbrt-v1
	Spectrum Lve(const Point &p, const Vector &) const {
		return extent.Inside(WorldToVolume(p)) ? le : 0.;
	}
コード例 #5
0
ファイル: homogeneous.cpp プロジェクト: EiffelOberon/pbrt-v1
	Spectrum sigma_t(const Point &p, const Vector &) const {
		return extent.Inside(WorldToVolume(p)) ? (sig_a + sig_s) : 0.;
	}
コード例 #6
0
ファイル: homogeneous.cpp プロジェクト: EiffelOberon/pbrt-v1
	Spectrum sigma_s(const Point &p, const Vector &) const {
		return extent.Inside(WorldToVolume(p)) ? sig_s : 0.;
	}