本文整理汇总了C++中VisibilityTester::AddSegment方法的典型用法代码示例。如果您正苦于以下问题:C++ VisibilityTester::AddSegment方法的具体用法?C++ VisibilityTester::AddSegment怎么用?C++ VisibilityTester::AddSegment使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类VisibilityTester
的用法示例。
在下文中一共展示了VisibilityTester::AddSegment方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SampleLight
csColor ProxyLight::SampleLight (const csVector3& point, const csVector3& n,
float u1, float u2, csVector3& lightVec, float& pdf, VisibilityTester& vistest,
const csPlane3* visLimitPlane)
{
// Setup clipped visibility ray
const csVector3 lightPos = GetLightSamplePosition (u1, u2);
csSegment3 visSegment (lightPos, point);
if (!lightFrustum.Contains (point-lightFrustum.GetOrigin ()) ||
!lightFrustum.Intersect (visSegment))
{
pdf = 0.0f;
return csColor (0,0,0);
}
if (visLimitPlane)
csIntersect3::SegmentPlane (*visLimitPlane, visSegment);
vistest.AddSegment (ownerSector->kdTree, visSegment.Start (), visSegment.End ());
csVector3 parentLightVec;
csPlane3 transformedPlane;
transformedPlane = proxyTransform.Other2This (portalPlane);
const csColor parentLight = parent->SampleLight (point, n, u1, u2,
parentLightVec, pdf, vistest, &transformedPlane);
lightVec = proxyTransform.Other2ThisRelative (parentLightVec);
return parentLight;
}