CMSC 635Basic ideaIntersection approachesMaking it easierHow many intersections?SpeedupsFewer intersectionsObject: bounding hierarchyBounding spheresAABBOBBSlabsSpace: partitioningImageAlgorithmic improvementsFaster intersectionsParallel intersectionsSlide 18CMSC 635CMSC 635Ray TracingRay TracingBasic ideaBasic ideaIntersection approachesIntersection approachesPlug parametric ray into implicit shapePlug parametric shape into implicit raySolve implicit ray = implicit shapePlug parametric ray into implicit shapePlug parametric shape into implicit raySolve implicit ray = implicit shapeMaking it easierMaking it easierTransform to cannonical ray (0,0,0)–(0,0,1)Transform to cannonical objectEllipsoid to unit sphere at (0,0,0)Compute in stagesPolygon plane, then polygon edgesNumerical iterationTransform to cannonical ray (0,0,0)–(0,0,1)Transform to cannonical objectEllipsoid to unit sphere at (0,0,0)Compute in stagesPolygon plane, then polygon edgesNumerical iterationHow many intersections?How many intersections?Pixels~103 to ~107Rays per Pixel1 to ~10Primitives~10 to ~107Every ray vs. every primitive~104 to ~1015Pixels~103 to ~107Rays per Pixel1 to ~10Primitives~10 to ~107Every ray vs. every primitive~104 to ~1015SpeedupsSpeedupsFaster intersectionsFewer intersectionsFaster intersectionsFewer intersectionsFewer intersectionsFewer intersectionsObject-basedSpace-basedImage-basedObject-basedSpace-basedImage-basedObject: bounding hierarchyObject: bounding hierarchyBounding spheresAABBOBBSlabsBounding spheresAABBOBBSlabsBounding spheresBounding spheresVery fast to intersectHard to fitPoor fitVery fast to intersectHard to fitPoor fitAABBAABBFast to intersectEasy to fitReasonable fitFast to intersectEasy to fitReasonable fitOBBOBBPretty fast to intersectHarder to fitEigenvectors of covariance matrixIterative minimizationGood fitPretty fast to intersectHarder to fitEigenvectors of covariance matrixIterative minimizationGood fitSlabsSlabsFamilies of planesFast intersectionFamilies of planesFast intersectionSpace: partitioningSpace: partitioningSlabsUniform gridOcttreeBSPSlabsUniform gridOcttreeBSPImageImageCoherenceLight buffer (avoid shadow rays)Pencil tracing/cone tracingImage approximationTruncate ray treeSuccessive refinementContrast-driven antialiasingCoherenceLight buffer (avoid shadow rays)Pencil tracing/cone tracingImage approximationTruncate ray treeSuccessive refinementContrast-driven antialiasingAlgorithmic improvementsAlgorithmic improvementsObject-basedDecide ray doesn’t intersect earlySpace-basedPartial order of intersection testsImage-basedRay-to-ray coherenceObject-basedDecide ray doesn’t intersect earlySpace-basedPartial order of intersection testsImage-basedRay-to-ray coherenceFaster intersectionsFaster intersectionsPrecompute and store with objectCache results from previous testsStop early for rejectPostpone expensive operationsReject then normalizeIf a cheap approximate test exists, do it firstSphere / box / separating axes / …Project to fewer dimensionsPrecompute and store with objectCache results from previous testsStop early for rejectPostpone expensive operationsReject then normalizeIf a cheap approximate test exists, do it firstSphere / box / separating axes / …Project to fewer dimensionsParallel intersectionsParallel intersectionsDistribute pixelsDistribute raysDistribute objectsDistribute pixelsDistribute raysDistribute objectsParallel intersectionsParallel intersectionsLoad balancingScattered rays, blocks, lines, ray queuesCullingCommunication costsDatabaseRay requestsRay resultsLoad balancingScattered rays, blocks, lines, ray queuesCullingCommunication costsDatabaseRay requestsRay
View Full Document