convert all leafs in octree to PvsNode, add to list pvsNodes for (every nodeX in pvsNodes): for (every nodeY in pvsNodes): if (nodeX == nodeY or nodeX adjecent or intersecting nodeY): continue setup camera for (nodeX, nodeY) draw every node except nodeX & nodeY turn on occlusion query draw nodeY as bounding box turn off occlusion query if (numSamples > 0): // node is visible add nodeY to nodeX's potentially visible set setup camera for node, sideI: float width, height, near; switch (sideI): case X+ case X- width = x extent height = y extent near = z extent / 2 case Y+ case Y- width = x extent height = z extent near = y extent / 2 case Z+ case Z- width = z extent height = y extent near = x extent / 2