PSSMDemo.UniformLightCameraBuilder.BuildCore C# (CSharp) Метод

BuildCore() защищенный Метод

protected BuildCore ( Matrix &lightView, Matrix &lightProjection ) : void
lightView Matrix
lightProjection Matrix
Результат void
        protected override void BuildCore(out Matrix lightView, out Matrix lightProjection)
        {
            // 標準的なライト空間行列の算出。
            CalculateStandardLightSpaceMatrices(out lightView, out lightProjection);

            // 凸体 B の算出。
            CalculateBodyB();

            // 凸体 B が空の場合は生成する影が無いため、
            // 先に算出した行列をそのまま利用。
            if (bodyBPoints.Count == 0)
            {
                return;
            }

            // 凸体 LVS の算出。
            CalculateBodyLVS();

            Matrix lightSpace;
            Matrix transform;

            // 軸の変換。
            transform = NormalToLightSpace;
            TransformLightProjection(ref lightProjection, ref transform);

            // ライト空間におけるカメラ方向へ変換。
            Matrix.Multiply(ref lightView, ref lightProjection, out lightSpace);
            CreateLightLook(ref lightSpace, out transform);
            TransformLightProjection(ref lightProjection, ref transform);

            // 単位立方体へ射影。
            Matrix.Multiply(ref lightView, ref lightProjection, out lightSpace);
            CreateTransformToUnitCube(ref lightSpace, out transform);
            TransformLightProjection(ref lightProjection, ref transform);

            // 軸の変換 (元へ戻す)。
            transform = LightSpaceToNormal;
            TransformLightProjection(ref lightProjection, ref transform);

            // DirectX クリッピング空間へ変換。
            Matrix.CreateOrthographicOffCenter(-1, 1, -1, 1, -1, 1, out transform);
            TransformLightProjection(ref lightProjection, ref transform);
        }