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


