PSSMDemo.PSSM.Split C# (CSharp) Method

Split() public method

視錐台を分割します。
public Split ( float distances, Matrix projections ) : void
distances float 分割された視錐台の各距離。
projections Matrix 分割された視錐台の各射影行列。
return void
        public void Split(float[] distances, Matrix[] projections)
        {
            if (distances == null) throw new ArgumentNullException("distances");
            if (projections == null) throw new ArgumentNullException("projections");
            if (distances.Length < count + 1) throw new ArgumentException("Insufficient size.", "distances");
            if (projections.Length < count) throw new ArgumentException("Insufficient size.", "projections");

            // シーン領域を含みうる最小限の遠クリップ面を算出。
            float adjustedFar = CalculateFarClipDistance(ref view, ref sceneBox, nearClipDistance);
            adjustedFar = Math.Min(farClipDistance, adjustedFar);

            // 近クリップ面から遠クリップ面の範囲を分割。
            SplitDistance(nearClipDistance, adjustedFar, distances);

            // 分割毎に射影行列を構築。
            for (int i = 0; i < count; i++)
            {
                Matrix.CreatePerspectiveFieldOfView(fov, aspectRatio, distances[i], distances[i + 1], out projections[i]);
            }
        }