本文整理汇总了C++中boost::shared_ptr::Evaluate方法的典型用法代码示例。如果您正苦于以下问题:C++ shared_ptr::Evaluate方法的具体用法?C++ shared_ptr::Evaluate怎么用?C++ shared_ptr::Evaluate使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类boost::shared_ptr
的用法示例。
在下文中一共展示了shared_ptr::Evaluate方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: addMat
void LayeredMaterial::addMat(MemoryArena &arena, const SpectrumWavelengths &sw, const Intersection &isect,
const DifferentialGeometry &dgShading, boost::shared_ptr<Material> mat,
LayeredBSDF *lbsdf, boost::shared_ptr<Texture<float> > opacity) const{
DifferentialGeometry dgS = dgShading;
mat->GetShadingGeometry(sw, isect.dg.nn, &dgS);
BSDF *bsdfmat=mat->GetBSDF(arena,sw,isect, dgS);
float op = 1.0f;
if (opacity) { // then need to mix with null
op= opacity->Evaluate(sw, dgS);
if (op<=0.0f) { // don't bother adding it
return;
}
MixBSDF *mixbsdf = ARENA_ALLOC(arena, MixBSDF)(dgShading, isect.dg.nn,
isect.exterior, isect.interior);
mixbsdf->Add(op, bsdfmat);
dgS = dgShading;
mat->GetShadingGeometry(sw, isect.dg.nn, &dgS); // Why do we need to do this again?
SingleBSDF *nullbsdf = ARENA_ALLOC(arena, SingleBSDF)(dgShading,
isect.dg.nn, ARENA_ALLOC(arena, NullTransmission)(),
isect.exterior, isect.interior);
mixbsdf->Add(1.0f-op, nullbsdf);
bsdfmat=mixbsdf;
}
lbsdf->Add(bsdfmat,op);
return;
}