本文整理汇总了C++中Reference::Intersect方法的典型用法代码示例。如果您正苦于以下问题:C++ Reference::Intersect方法的具体用法?C++ Reference::Intersect怎么用?C++ Reference::Intersect使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Reference
的用法示例。
在下文中一共展示了Reference::Intersect方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
//.........这里部分代码省略.........
}
if (numGenerators != numGeneratorsDescrip) {
fprintf(stderr, "SampleFuncArray and SampleFuncDescripArray out of sync!\n");
exit(1);
}
// for each bsdf model
for (int model = 0; model < numModels; model++) {
BSDF* bsdf;
// create BSDF which requires creating a Shape, casting a Ray
// that hits the shape to get a DifferentialGeometry object,
// and passing the DifferentialGeometry object into the BSDF
{
Transform t = RotateX(-90);
bool reverseOrientation = false;
ParamSet p;
Reference<Shape> disk = new Disk(new Transform(t), new Transform(Inverse(t)),
reverseOrientation, 0., 1., 0, 360.);
if (!disk) {
fprintf(stderr, "Could not load disk plugin\n"
" make sure the PBRT_SEARCHPATH environment variable is set\n");
exit(1);
}
Point origin(0.1, 1, 0); // offset slightly so we don't hit center of disk
Vector direction(0, -1, 0);
float tHit, rayEps;
Ray r(origin, direction, 1e-3, INFINITY);
DifferentialGeometry* dg = BSDF_ALLOC(arena, DifferentialGeometry)();
disk->Intersect(r, &tHit, &rayEps, dg);
bsdf = BSDF_ALLOC(arena, BSDF)(*dg, dg->nn);
(BSDFFuncArray[model])(bsdf);
}
// facing directly at normal
Vector woL = Normalize(Vector(0, 0, 1));
Vector wo = bsdf->LocalToWorld(woL);
const Normal &n = bsdf->dgShading.nn;
// for each method of generating samples over the hemisphere
for (int gen = 0; gen < numGenerators; gen++) {
double redSum = 0.0;
const int numHistoBins = 10;
double histogram[numHistoBins][numHistoBins];
for (int i = 0; i < numHistoBins; i++) {
for (int j = 0; j < numHistoBins; j++) {
histogram[i][j] = 0;
}
}
int badSamples = 0;
int outsideSamples = 0;
int warningTarget = 1;
for (int sample = 0; sample < estimates; sample++) {
Vector wi;
float pdf;
Spectrum f;
// sample hemisphere around bsdf, wo is fixed