Part of the Khronos Group

The Industry's Foundation for High Performance Graphics

from games to virtual reality, mobile phones to supercomputers

Results 1 to 10 of 12

Thread: Cascaded shadow mapping and split values

Threaded View

  1. #1
    Intern Newbie
    Join Date
    Jan 2014

    Cascaded shadow mapping and split values

    Reposting, as the last topic is bugged and cant be edited.

    I'm having issues where shadows vanish at certain angles and I want to ascertain I am using the correct values to determine the split index.

    Code cpp:
    CameraFrustrum CalculateCameraFrustrum(const float minDist, const float maxDist, const Vec3& cameraPosition, const Vec3& cameraDirection, Vec4& splitDistance, const Mat4& camView)
            CameraFrustrum ret = { Vec4(1.0f, 1.0f, -1.0f, 1.0f), Vec4(1.0f, -1.0f, -1.0f, 1.0f), Vec4(-1.0f, -1.0f, -1.0f, 1.0f), Vec4(-1.0f, 1.0f, -1.0f, 1.0f),
                                   Vec4(1.0f, -1.0f, 1.0f, 1.0f), Vec4(1.0f, 1.0f, 1.0f, 1.0f), Vec4(-1.0f, 1.0f, 1.0f, 1.0f), Vec4(-1.0f, -1.0f, 1.0f, 1.0f), };
            const Mat4 perspectiveMatrix = glm::perspective(70.0f, 1920.0f / (float)1080.0f, minDist, maxDist);
            const Mat4 invMVP = glm::inverse(perspectiveMatrix * camView);
            for (Vec4& v : ret)
                v = invMVP * v;
                v /= v.w;
            splitDistance= ret[4];
            splitDistance+= ret[5];
            splitDistance+= ret[6];
            splitDistance+= ret[7];
            splitDistance /= 4;
            return ret;

    The splitDistance.Z is what I use as each split maxdistance. It is multiplied by the main cameras view matrix before being sent to the shader (as the index determination is done in view space). Is this correct?
    Last edited by Dark Photon; 04-14-2014 at 05:53 AM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts