Exemplo n.º 1
0
        public void EvaluateSkinnedMeshesOffscreenUpdate()
        {
            // Arrange
            var profile = new CullingControllerProfile();

            profile.shadowMapProjectionSizeThreshold = 6;
            profile.shadowRendererSizeThreshold      = 20;
            profile.shadowDistanceThreshold          = 15;

            var settings = new CullingControllerSettings();

            settings.enableAnimationCullingDistance = 20;
            settings.enableAnimationCulling         = true;

            // Act
            var farTest  = CullingControllerUtils.TestSkinnedRendererOffscreenRule(settings, 30);
            var nearTest = CullingControllerUtils.TestSkinnedRendererOffscreenRule(settings, 10);

            settings.enableAnimationCulling = false;
            var farTestWithCullingDisabled = CullingControllerUtils.TestSkinnedRendererOffscreenRule(settings, 30);

            // Assert
            Assert.IsTrue(nearTest);
            Assert.IsFalse(farTest);
            Assert.IsTrue(farTestWithCullingDisabled);
        }
Exemplo n.º 2
0
        public void EvaluateRendererVisibility()
        {
            //Arrange
            var profile = new CullingControllerProfile();

            profile.emissiveSizeThreshold    = 10;
            profile.opaqueSizeThreshold      = 20;
            profile.visibleDistanceThreshold = 5;

            // Act
            // Truth tests
            var farAndBigTest      = CullingControllerUtils.TestRendererVisibleRule(profile, 30, 20, false, true, true);
            var smallAndNearTest   = CullingControllerUtils.TestRendererVisibleRule(profile, 5, 2, false, true, true);
            var cameraInBoundsTest = CullingControllerUtils.TestRendererVisibleRule(profile, 1, 100, true, true, true);
            var emissiveTest       = CullingControllerUtils.TestRendererVisibleRule(profile, 15, 20, false, false, true);

            // Falsehood tests
            var farAndSmallTest       = CullingControllerUtils.TestRendererVisibleRule(profile, 5, 20, false, true, true);
            var emissiveAndFarTest    = CullingControllerUtils.TestRendererVisibleRule(profile, 5, 20, false, false, true);
            var farAndTransparentTest = CullingControllerUtils.TestRendererVisibleRule(profile, 1, 50, false, false, false);

            // Assert
            Assert.IsTrue(farAndBigTest);
            Assert.IsTrue(smallAndNearTest);
            Assert.IsTrue(cameraInBoundsTest);
            Assert.IsTrue(emissiveTest);

            Assert.IsFalse(farAndSmallTest);
            Assert.IsFalse(emissiveAndFarTest);
            Assert.IsFalse(farAndTransparentTest);
        }
Exemplo n.º 3
0
        public void EvaluateShadowVisibility()
        {
            // Arrange
            var profile = new CullingControllerProfile();

            profile.shadowMapProjectionSizeThreshold = 6;
            profile.shadowRendererSizeThreshold      = 20;
            profile.shadowDistanceThreshold          = 15;

            // Act
            var nearTest          = CullingControllerUtils.TestRendererShadowRule(profile, 1, 5, 10);
            var nearButSmallTexel = CullingControllerUtils.TestRendererShadowRule(profile, 1, 5, 1);
            var farAndBigEnough   = CullingControllerUtils.TestRendererShadowRule(profile, 30, 30, 30);
            var farAndSmall       = CullingControllerUtils.TestRendererShadowRule(profile, 10, 30, 30);
            var farAndSmallTexel  = CullingControllerUtils.TestRendererShadowRule(profile, 10, 30, 1);

            // Assert
            Assert.IsTrue(nearTest);
            Assert.IsTrue(farAndBigEnough);
            Assert.IsFalse(nearButSmallTexel);
            Assert.IsFalse(farAndSmall);
            Assert.IsFalse(farAndSmallTexel);
        }