MCPcopy Create free account
hub / github.com/RenderKit/embree / OBJMaterial__eval

Function OBJMaterial__eval

tutorials/pathtracer/pathtracer_device.cpp:554–571  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

552}
553
554Vec3fa OBJMaterial__eval(ISPCOBJMaterial* material, const BRDF& brdf, const Vec3fa& wo, const DifferentialGeometry& dg, const Vec3fa& wi)
555{
556 Vec3fa R = Vec3fa(0.0f);
557 const float Md = max(max(brdf.Kd.x,brdf.Kd.y),brdf.Kd.z);
558 const float Ms = max(max(brdf.Ks.x,brdf.Ks.y),brdf.Ks.z);
559 const float Mt = max(max(brdf.Kt.x,brdf.Kt.y),brdf.Kt.z);
560 if (Md > 0.0f) {
561 R = R + (1.0f/float(M_PI)) * clamp(dot(wi,dg.Ns)) * brdf.Kd;
562 }
563 if (Ms > 0.0f) {
564 const Sample3f refl = make_Sample3f(reflect(wo,dg.Ns),1.0f);
565 if (dot(refl.v,wi) > 0.0f)
566 R = R + (brdf.Ns+2) * float(one_over_two_pi) * powf(max(1e-10f,dot(refl.v,wi)),brdf.Ns) * clamp(dot(wi,dg.Ns)) * brdf.Ks;
567 }
568 if (Mt > 0.0f) {
569 }
570 return R;
571}
572
573Vec3fa OBJMaterial__sample(ISPCOBJMaterial* material, const BRDF& brdf, const Vec3fa& Lw, const Vec3fa& wo, const DifferentialGeometry& dg, Sample3f& wi_o, Medium& medium, const Vec2f& s)
574{

Callers 1

Material__evalFunction · 0.85

Calls 6

make_Sample3fFunction · 0.85
reflectFunction · 0.85
Vec3faClass · 0.50
maxFunction · 0.50
clampFunction · 0.50
dotFunction · 0.50

Tested by

no test coverage detected