erebus

annotate liberebus/src/brdf.cc @ 9:d38e13d6063c

foo
author John Tsiombikas <nuclear@member.fsf.org>
date Sat, 24 May 2014 17:22:53 +0300
parents 474a0244f57d
children e49f4d7ad04c
rev   line source
nuclear@2 1 #include "brdf.h"
nuclear@2 2 #include "erebus_impl.h"
nuclear@2 3
nuclear@2 4 // ---- class Reflectance ----
nuclear@2 5 Reflectance::Reflectance()
nuclear@2 6 {
nuclear@2 7 }
nuclear@2 8
nuclear@2 9 float Reflectance::sample(const Vector3 &norm, const Vector3 &outdir, Vector3 *indir) const
nuclear@2 10 {
nuclear@2 11 *indir = sample_dir(norm, outdir);
nuclear@2 12 return eval(norm, outdir, *indir);
nuclear@2 13 }
nuclear@2 14
nuclear@2 15 // --- class LambertRefl ---
nuclear@2 16 Vector3 LambertRefl::sample_dir(const Vector3 &norm, const Vector3 &outdir) const
nuclear@2 17 {
nuclear@2 18 Vector3 dir = Vector3{randf(-1, 1), randf(-1, 1), randf(-1, 1)}.normalized();
nuclear@2 19 return dot_product(dir, norm) < 0.0 ? -dir : dir;
nuclear@2 20 }
nuclear@2 21
nuclear@2 22 float LambertRefl::eval(const Vector3 &norm, const Vector3 &outdir, const Vector3 &indir) const
nuclear@2 23 {
nuclear@2 24 return dot_product(norm, outdir);
nuclear@2 25 }