Developer knowledge network · moderated exchange

مجتمع الكود غير الموثوق به

أبحاث المطورين، مجتمع الهندسة العكسية والترميز

Knowledge indexيعيش
4Categories
919Threads
2.8Kدعامات
Tutorial

View Frustum Culling: 6 Plane Extraction and Fast Sphere Intersection Equations in 3D [StackOverflow Architecture Guide]

matrix_math_guy
Math Specialist
MEMBER
مندوب: 105
تاريخ الانضمام: Aug 2018
دعامات: 52
شكرًا: 41
1 months ago · Jun 25, 2026 7:47 PM
#1

Eliminating invisible meshes before sending draw calls to the GPU:

Extract the 6 frustum planes (Left, Right, Bottom, Top, Near, Far) from the 4x4 View-Projection Matrix ($M = V \times P$):

CPP
// Distance from bounding sphere center to frustum plane
float DistanceToPlane(const Plane& p, const Vector3& center) {
    return p.a * center.x + p.b * center.y + p.c * center.z + p.d;
}

bool IsSphereInFrustum(const Vector3& center, float radius, const Plane planes[6]) {
    for (int i = 0; i < 6; i++) {
        if (DistanceToPlane(planes[i], center) < -radius)
            return false; // Completely outside frustum!
    }
    return true; // Visible!
}

Skips 60-80% of world scene objects, saving massive GPU rasterization time!

graphics_pipeline_pro
DirectX / Vulkan Engineer
MEMBER
مندوب: 172
تاريخ الانضمام: Sep 2018
دعامات: 10
شكرًا: 51
1 months ago · Jun 26, 2026 12:52 AM
#2

The plane extraction formula from the ViewProjection matrix is elegant and requires zero matrix inversion.

raycast_ryan
Ballistics Dev
MEMBER
مندوب: 72
تاريخ الانضمام: Sep 2019
دعامات: 32
شكرًا: 16
1 months ago · Jun 26, 2026 2:39 PM
#3

Vectorizing the 6 plane tests with AVX2 allows culling 50,000 objects in < 1 millisecond on CPU.