Exemplo n.º 1
0
        internal override flow.Layer addToScene(SceneBuilder builder, Offset layerOffset = null)
        {
            layerOffset = layerOffset ?? Offset.zero;

            bool enabled = true;

            D.assert(() => {
                enabled = !D.debugDisableClipLayers;
                return(true);
            });

            if (enabled)
            {
                builder.pushClipPath(this.clipPath.shift(layerOffset));
            }

            this.addChildrenToScene(builder, layerOffset);

            if (enabled)
            {
                builder.pop();
            }

            return(null);
        }
Exemplo n.º 2
0
 internal override flow.Layer addToScene(SceneBuilder builder, Offset layerOffset = null)
 {
     builder.pushBackdropFilter(this.filter);
     this.addChildrenToScene(builder, layerOffset);
     builder.pop();
     return(null);
 }
Exemplo n.º 3
0
        public Scene buildScene(SceneBuilder builder)
        {
            List <PictureLayer> temporaryLayers = null;

            D.assert(() => {
                if (RenderingDebugUtils.debugCheckElevationsEnabled)
                {
                    temporaryLayers = this._debugCheckElevations();
                }

                return(true);
            });
            this.updateSubtreeNeedsAddToScene();
            this.addToScene(builder);
            Scene scene = builder.build();

            D.assert(() => {
                if (temporaryLayers != null)
                {
                    foreach (PictureLayer temporaryLayer in temporaryLayers)
                    {
                        temporaryLayer.remove();
                    }
                }

                return(true);
            });
            return(scene);
        }
Exemplo n.º 4
0
        internal override flow.Layer addToScene(SceneBuilder builder, Offset layerOffset = null)
        {
            layerOffset = layerOffset ?? Offset.zero;

            D.assert(this.link != null);
            if (this.link.leader == null && !this.showWhenUnlinked)
            {
                this._lastTransform = null;
                this._lastOffset    = null;
                this._inverseDirty  = true;
                return(null);
            }

            this._establishTransform();
            if (this._lastTransform != null)
            {
                builder.pushTransform(this._lastTransform.toMatrix3());
                this.addChildrenToScene(builder);
                builder.pop();
                this._lastOffset = this.unlinkedOffset + layerOffset;
            }
            else
            {
                this._lastOffset = null;
                var matrix = new Matrix4().translationValues(this.unlinkedOffset.dx, this.unlinkedOffset.dy, 0);
                builder.pushTransform(matrix.toMatrix3());
                this.addChildrenToScene(builder);
                builder.pop();
            }

            this._inverseDirty = true;
            return(null);
        }
Exemplo n.º 5
0
        public ModelRoot Convert(PssgFile pssg)
        {
            var sceneBuilder = new SceneBuilder();

            var state = CreateState();

            // F1 games use lib YYY
            var parent = pssg.FindNodes("LIBRARY", "type", "NODE").FirstOrDefault();

            if (parent is null)
            {
                parent     = pssg.FindNodes("LIBRARY", "type", "YYY").FirstOrDefault();
                state.IsF1 = true;
            }
            if (parent is null)
            {
                throw new InvalidDataException("Could not find library with scene nodes.");
            }

            foreach (var child in parent.ChildNodes)
            {
                CreateNode(sceneBuilder, child, null, state);
            }

            return(sceneBuilder.ToGltf2());
        }
Exemplo n.º 6
0
        internal override flow.Layer addToScene(SceneBuilder builder, Offset layerOffset = null)
        {
            layerOffset = layerOffset ?? Offset.zero;

            D.assert(this.link != null);
            if (this.link.leader == null && !this.showWhenUnlinked)
            {
                this._lastTransform = null;
                this._lastOffset    = null;
                return(null);
            }

            this._establishTransform();
            if (this._lastTransform != null)
            {
                builder.pushTransform(this._lastTransform);
                this.addChildrenToScene(builder);
                builder.pop();
                this._lastOffset = this.unlinkedOffset + layerOffset;
            }
            else
            {
                this._lastOffset = null;
                var matrix = Matrix3.makeTrans(this.unlinkedOffset.dx, this.unlinkedOffset.dy);
                builder.pushTransform(matrix);
                this.addChildrenToScene(builder);
                builder.pop();
            }

            return(null);
        }
Exemplo n.º 7
0
        public void Disposing_Scene_Releases_DrawOperation_References()
        {
            using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface))
            {
                var   bitmap = RefCountable.Create(Mock.Of <IBitmapImpl>());
                Image img;
                var   tree = new TestRoot
                {
                    Child = img = new Image
                    {
                        Source = new Bitmap(bitmap)
                    }
                };

                Assert.Equal(2, bitmap.RefCount);
                IRef <IDrawOperation> operation;

                using (var scene = new Scene(tree))
                {
                    var sceneBuilder = new SceneBuilder();
                    sceneBuilder.UpdateAll(scene);
                    operation = scene.FindNode(img).DrawOperations[0];
                    Assert.Equal(1, operation.RefCount);

                    Assert.Equal(3, bitmap.RefCount);
                }
                Assert.Equal(0, operation.RefCount);
                Assert.Equal(2, bitmap.RefCount);
            }
        }
Exemplo n.º 8
0
        public void Replacing_Control_Releases_DrawOperation_Reference()
        {
            using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface))
            {
                var   bitmap = RefCountable.Create(Mock.Of <IBitmapImpl>());
                Image img;
                var   tree = new TestRoot
                {
                    Child = img = new Image
                    {
                        Source = new Bitmap(bitmap)
                    }
                };

                var scene        = new Scene(tree);
                var sceneBuilder = new SceneBuilder();
                sceneBuilder.UpdateAll(scene);

                var operation = scene.FindNode(img).DrawOperations[0];

                tree.Child = new Decorator();

                using (var result = scene.CloneScene())
                {
                    sceneBuilder.Update(result, img);
                    scene.Dispose();

                    Assert.Equal(0, operation.RefCount);
                    Assert.Equal(2, bitmap.RefCount);
                }
            }
        }
Exemplo n.º 9
0
        public void Setting_Opacity_Should_Add_Descendent_Bounds_To_DirtyRects()
        {
            using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface))
            {
                Decorator decorator;
                Border    border;
                var       tree = new TestRoot
                {
                    Child = decorator = new Decorator
                    {
                        Child = border = new Border
                        {
                            Background = Brushes.Red,
                            Width      = 100,
                            Height     = 100,
                        }
                    }
                };

                tree.Measure(Size.Infinity);
                tree.Arrange(new Rect(tree.DesiredSize));

                var scene        = new Scene(tree);
                var sceneBuilder = new SceneBuilder();
                sceneBuilder.UpdateAll(scene);

                decorator.Opacity = 0.5;
                scene             = scene.CloneScene();
                sceneBuilder.Update(scene, decorator);

                Assert.NotEmpty(scene.Layers.Single().Dirty);
                var dirty = scene.Layers.Single().Dirty.Single();
                Assert.Equal(new Rect(0, 0, 100, 100), dirty);
            }
        }
Exemplo n.º 10
0
        public void ClipBounds_Should_Be_In_Global_Coordinates()
        {
            using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface))
            {
                Border target;
                var    tree = new TestRoot
                {
                    Child = new Decorator
                    {
                        Margin = new Thickness(24, 26),
                        Child  = target = new Border
                        {
                            ClipToBounds = true,
                            Margin       = new Thickness(26, 24),
                            Width        = 100,
                            Height       = 100,
                        }
                    }
                };

                tree.Measure(Size.Infinity);
                tree.Arrange(new Rect(tree.DesiredSize));

                var result       = new Scene(tree);
                var sceneBuilder = new SceneBuilder();
                sceneBuilder.UpdateAll(result);

                var targetNode = result.FindNode(target);

                Assert.Equal(new Rect(50, 50, 100, 100), targetNode.ClipBounds);
            }
        }
Exemplo n.º 11
0
        public void Should_Respect_ZIndex()
        {
            using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface))
            {
                Border front;
                Border back;
                var    tree = new TestRoot
                {
                    Child = new Panel
                    {
                        Children =
                        {
                            (front     = new Border
                            {
                                ZIndex = 1,
                            }),
                            (back      = new Border
                            {
                                ZIndex = 0,
                            }),
                        }
                    }
                };

                var result       = new Scene(tree);
                var sceneBuilder = new SceneBuilder();
                sceneBuilder.UpdateAll(result);

                var panelNode = result.FindNode(tree.Child);
                var expected  = new IVisual[] { back, front };
                var actual    = panelNode.Children.OfType <IVisualNode>().Select(x => x.Visual).ToArray();
                Assert.Equal(expected, actual);
            }
        }
Exemplo n.º 12
0
        public void Control_With_Animated_Opacity_And_No_Children_Should_Not_Start_New_Layer()
        {
            using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface))
            {
                Decorator decorator;
                Border    border;
                var       tree = new TestRoot
                {
                    Padding = new Thickness(10),
                    Width   = 100,
                    Height  = 120,
                    Child   = decorator = new Decorator
                    {
                        Padding = new Thickness(11),
                        Child   = border = new Border
                        {
                            Background = Brushes.Red,
                        }
                    }
                };

                var layout = tree.LayoutManager;
                layout.ExecuteInitialLayoutPass(tree);

                var animation = new BehaviorSubject <double>(0.5);
                border.Bind(Border.OpacityProperty, animation, BindingPriority.Animation);

                var scene        = new Scene(tree);
                var sceneBuilder = new SceneBuilder();
                sceneBuilder.UpdateAll(scene);

                Assert.Single(scene.Layers);
            }
        }
Exemplo n.º 13
0
        internal override flow.Layer addToScene(SceneBuilder builder, Offset layerOffset = null)
        {
            layerOffset = layerOffset ?? Offset.zero;

            builder.addPerformanceOverlay(this.optionsMask, this.overlayRect.shift(layerOffset));
            return(null);
        }
Exemplo n.º 14
0
        internal override flow.Layer addToScene(SceneBuilder builder, Offset layerOffset = null)
        {
            layerOffset = layerOffset ?? Offset.zero;

            builder.addPicture(layerOffset, this.picture,
                               isComplexHint: this.isComplexHint, willChangeHint: this.willChangeHint);
            return(null);
        }
        protected override GameObject CreateGameObject(SceneBuilder builder, StaticMeshActor unrealNode)
        {
            var gameObject = CreateGameObjectImpl(builder, unrealNode.StaticMeshComponent.StaticMesh.FileName);

            gameObject.name = unrealNode.ActorLabel;

            return(gameObject);
        }
        public static GameObject CreateGameObjectImpl(SceneBuilder builder, string unrealMeshFile)
        {
            var gameObject = AssetDatabase.LoadAssetAtPath <GameObject>(Helper.GetMeshPath(unrealMeshFile));

            gameObject = Object.Instantiate(gameObject);

            return(gameObject);
        }
Exemplo n.º 17
0
 public void Update()
 {
     // Skip Intro
     if (Input.GetButtonUp("Cancel"))
     {
         SceneBuilder.LoadScene("MainMenu", "LoadScreen");
     }
 }
Exemplo n.º 18
0
    void Start()
    {
        WSU = gameObject.GetComponent <WorldStateUpdater>();
        Debug.Log("World State Updater" + WSU);
        teamNumber = WSU.thisTeamNumber;

        scene   = GameObject.FindWithTag("GameManager").GetComponent <SceneBuilder>();
        spawner = scene.base2.GetComponent <Spawner>();
    }
Exemplo n.º 19
0
        public void Should_Update_When_Control_Moved()
        {
            using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface))
            {
                Decorator moveFrom;
                Decorator moveTo;
                Canvas    moveMe;
                var       tree = new TestRoot
                {
                    Width  = 100,
                    Height = 100,
                    Child  = new StackPanel
                    {
                        Children =
                        {
                            (moveFrom = new Decorator
                            {
                                Child = moveMe = new Canvas(),
                            }),
                            (moveTo   = new Decorator()),
                        }
                    }
                };

                tree.Measure(Size.Infinity);
                tree.Arrange(new Rect(tree.DesiredSize));

                var scene        = new Scene(tree);
                var sceneBuilder = new SceneBuilder();
                sceneBuilder.UpdateAll(scene);

                var moveFromNode = (VisualNode)scene.FindNode(moveFrom);
                var moveToNode   = (VisualNode)scene.FindNode(moveTo);

                Assert.Equal(1, moveFromNode.Children.Count);
                Assert.Same(moveMe, moveFromNode.Children[0].Visual);
                Assert.Empty(moveToNode.Children);

                moveFrom.Child = null;
                moveTo.Child   = moveMe;

                scene        = scene.CloneScene();
                moveFromNode = (VisualNode)scene.FindNode(moveFrom);
                moveToNode   = (VisualNode)scene.FindNode(moveTo);

                moveFromNode.SortChildren(scene);
                moveToNode.SortChildren(scene);
                sceneBuilder.Update(scene, moveFrom);
                sceneBuilder.Update(scene, moveTo);
                sceneBuilder.Update(scene, moveMe);

                Assert.Empty(moveFromNode.Children);
                Assert.Equal(1, moveToNode.Children.Count);
                Assert.Same(moveMe, moveToNode.Children[0].Visual);
            }
        }
Exemplo n.º 20
0
        public void OnExportPropertiesHandler(SceneBuilder sceneBuilder, GameObject unityGameObject, Dictionary <string, object> propertyBag)
        {
            string stateMachineName = "Unknown";

            if (!String.IsNullOrEmpty(this.stateMachineSource))
            {
                stateMachineName = this.stateMachineSource;
            }
            propertyBag.Add("stateMachineName", stateMachineName);
        }
Exemplo n.º 21
0
        public void addChildrenToScene(SceneBuilder builder, Offset childOffset)
        {
            Layer child = this.firstChild;

            while (child != null)
            {
                child.addToScene(builder, childOffset);
                child = child.nextSibling;
            }
        }
Exemplo n.º 22
0
        void Start()
        {
            scene = GameObject.FindWithTag("GameManger").GetComponent <SceneBuilder>();
            GameObject player2 = GameObject.FindWithTag("Player2");

            player2ScriptAI = player2.GetComponent <PlayerGOAPAI>();
            spawner         = scene.base2.GetComponent <Spawner>();
            WSU             = player2.GetComponent <WorldStateUpdater>();
            costToApply     = scene.troopCosts[troopClass] - WSU.classCounts[(int)troopClass];
        }
Exemplo n.º 23
0
    public void Init()
    {
        MissionBuilder  = GameObject.Find("Scene").GetComponent <SceneBuilder>();
        UI              = GameObject.FindGameObjectWithTag("UI").GetComponent <SpaceUI>();
        MissionRes      = GameObject.Find("Scene").GetComponent <SceneRes>();
        playership      = MissionRes.playershiptransform.gameObject.GetComponent <Ship>();
        RadioMessageObj = UI.RadioMessage;

        InvokeRepeating("Step", 0, 1f);
    }
Exemplo n.º 24
0
 void Awake()
 {
     Instance     = this;
     style_big    = new GUIStyle2(360, Color.white);
     style_normal = new GUIStyle2(49, Color.white);
     if (floorObject && floorMaterial)
     {
         Renderer renderer = floorObject.GetComponent <Renderer>();
         renderer.material.CopyPropertiesFromMaterial(floorMaterial);
     }
 }
Exemplo n.º 25
0
        public void Should_Update_Descendent_ClipBounds_When_Margin_Changed()
        {
            using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface))
            {
                Border border;
                Canvas canvas;
                var    tree = new TestRoot
                {
                    Width  = 200,
                    Height = 300,
                    Child  = canvas = new Canvas
                    {
                        ClipToBounds        = true,
                        Width               = 100,
                        Height              = 100,
                        HorizontalAlignment = HorizontalAlignment.Left,
                        VerticalAlignment   = VerticalAlignment.Top,
                        Children            =
                        {
                            (border          = new Border
                            {
                                Background   = Brushes.AliceBlue,
                                ClipToBounds = true,
                                Width        =               100,
                                Height       =               100,
                                [Canvas.LeftProperty] = 50,
                                [Canvas.TopProperty] = 50,
                            })
                        }
                    }
                };

                tree.Measure(Size.Infinity);
                tree.Arrange(new Rect(tree.DesiredSize));

                var scene        = new Scene(tree);
                var sceneBuilder = new SceneBuilder();
                sceneBuilder.UpdateAll(scene);

                var borderNode = scene.FindNode(border);
                Assert.Equal(new Rect(50, 50, 50, 50), borderNode.ClipBounds);

                canvas.Width = canvas.Height = 125;
                canvas.Measure(Size.Infinity);
                canvas.Arrange(new Rect(tree.DesiredSize));

                // Initial ClipBounds are correct, make sure they're still correct after updating canvas.
                scene = scene.CloneScene();
                Assert.True(sceneBuilder.Update(scene, canvas));

                borderNode = scene.FindNode(border);
                Assert.Equal(new Rect(50, 50, 75, 75), borderNode.ClipBounds);
            }
        }
Exemplo n.º 26
0
        internal void _addToSceneWithRetainedRendering(SceneBuilder builder)
        {
            if (!this._subtreeNeedsAddToScene && this._engineLayer != null)
            {
                builder.addRetained(this._engineLayer);
                return;
            }

            this._engineLayer     = this.addToScene(builder);
            this._needsAddToScene = false;
        }
Exemplo n.º 27
0
        public async Task Convert(MapDocument document, SceneBuilder builder, IEnumerable <IMapObject> affected, ResourceCollector resourceCollector)
        {
            var objs = document.Map.Root.FindAll();

            if (affected != null)
            {
                var groups = affected.Select(x => x.ID / 200).ToHashSet();
                foreach (var g in groups)
                {
                    resourceCollector.RemoveRenderables(builder.GetRenderablesForGroup(g));
                    builder.DeleteGroup(g);
                }
                objs = objs.Where(x => groups.Contains(x.ID / 200)).ToList();
            }

            var converters      = _converters.Select(x => x.Value).OrderBy(x => (int)x.Priority).ToList();
            var groupConverters = _groupConverters.Select(x => x.Value).OrderBy(x => (int)x.Priority).ToList();

            foreach (var g in objs.GroupBy(x => x.ID / 200))
            {
                builder.EnsureGroupExists(g.Key);
                var buffer    = builder.GetBufferForGroup(g.Key);
                var collector = new ResourceCollector();

                foreach (var gc in groupConverters)
                {
                    gc.Convert(buffer, document, g, collector);
                }

                foreach (var obj in g)
                {
                    foreach (var converter in converters)
                    {
                        if (!converter.Supports(obj))
                        {
                            continue;
                        }
                        await converter.Convert(buffer, document, obj, collector);

                        if (converter.ShouldStopProcessing(document, obj))
                        {
                            break;
                        }
                    }
                }

                builder.RemoveRenderablesFromGroup(g.Key, collector.GetRenderablesToRemove());
                builder.AddRenderablesToGroup(g.Key, collector.GetRenderablesToAdd());

                resourceCollector.Merge(collector);
            }

            builder.Complete();
        }
Exemplo n.º 28
0
        public void Solution(int numTestCases, int numBombs, string htmlFileFullPath, string hyperspaceFileFullPath)
        {
            if (numTestCases < 1 || numTestCases > 10 || numBombs < 3 || numBombs > 50)
            {
                return;
            }

            exampleHtmlSceneBuilder = new SceneBuilder(htmlFileFullPath);
            CreateNewHyperspace(numTestCases, numBombs, hyperspaceFileFullPath);

            bool htmlFileMade = false;

            foreach (var horrificSituation in ReadInputFile(hyperspaceFileFullPath))
            {
                //1 Make a kdtree
                tree = new KdTree <int, int>(3, new IntMath());
                foreach (var bomb in ParseTestCaseLine(horrificSituation))
                {
                    tree.Add(bomb.Item1, bomb.Item2);
                }

                //2 balance the tree once all bombs/nodes have been added
                tree.Balance();

                //3. find the most remote bomb
                var greatestNNDistance = 0;
                var mostRemoteBomb     = tree.First();

                foreach (var node in tree)
                {
                    var nodeNearestNeighbourDistance = SquaredDistanceToNearestNeighbour(node.Point);
                    if (nodeNearestNeighbourDistance > greatestNNDistance)
                    {
                        mostRemoteBomb     = node;
                        greatestNNDistance = nodeNearestNeighbourDistance;
                    }
                }

                //4. Consider the hyperrects of the remotest bomb
                var largestConnectedHyperrect = LargestConnectedHyperrect(mostRemoteBomb);
                //Let's settle for the centre of this rectangle as the safest point.
                var safestPoint = new int[] { (largestConnectedHyperrect.MaxPoint[0] + largestConnectedHyperrect.MinPoint[0]) / 2, (largestConnectedHyperrect.MaxPoint[1] + largestConnectedHyperrect.MinPoint[1]) / 2, (largestConnectedHyperrect.MaxPoint[2] + largestConnectedHyperrect.MinPoint[2]) / 2 };

                if (!htmlFileMade)
                {
                    exampleHtmlSceneBuilder.AddSafestPoint(safestPoint);
                    exampleHtmlSceneBuilder.Finish();
                    htmlFileMade = true;
                }

                //5 The requirements specicifically ask for the distance to the safest point's nearest neighbour.
                var requiredDistanceValue = SquaredDistanceToNearestNeighbour(safestPoint);
            }
        }
Exemplo n.º 29
0
        public void Should_Update_Border_Background_Node()
        {
            using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface))
            {
                Border    border;
                TextBlock textBlock;
                var       tree = new TestRoot
                {
                    Child = border = new Border
                    {
                        Width      = 100,
                        Height     = 100,
                        Background = Brushes.Red,
                        Child      = textBlock = new TextBlock
                        {
                            Foreground = Brushes.Green,
                            Text       = "Hello World",
                        }
                    }
                };

                tree.Measure(Size.Infinity);
                tree.Arrange(new Rect(tree.DesiredSize));

                var initial      = new Scene(tree);
                var sceneBuilder = new SceneBuilder();
                sceneBuilder.UpdateAll(initial);

                var initialBackgroundNode = initial.FindNode(border).Children[0];
                var initialTextNode       = initial.FindNode(textBlock).DrawOperations[0];

                Assert.NotNull(initialBackgroundNode);
                Assert.NotNull(initialTextNode);

                border.Background = Brushes.Green;

                var result = initial.CloneScene();
                sceneBuilder.Update(result, border);

                var borderNode = (VisualNode)result.Root.Children[0];
                Assert.Same(border, borderNode.Visual);

                var backgroundNode = (RectangleNode)borderNode.DrawOperations[0].Item;
                Assert.NotSame(initialBackgroundNode, backgroundNode);
                Assert.Equal(Brushes.Green, backgroundNode.Brush);

                var textBlockNode = (VisualNode)borderNode.Children[0];
                Assert.Same(textBlock, textBlockNode.Visual);

                var textNode = (GlyphRunNode)textBlockNode.DrawOperations[0].Item;
                Assert.Same(initialTextNode.Item, textNode);
            }
        }
Exemplo n.º 30
0
        internal override flow.Layer addToScene(SceneBuilder builder, Offset layerOffset = null)
        {
            layerOffset = layerOffset ?? Offset.zero;

            var engineLayer = builder.pushOffset(
                (float)(layerOffset.dx + this.offset.dx),
                (float)(layerOffset.dy + this.offset.dy));

            this.addChildrenToScene(builder);
            builder.pop();
            return(engineLayer);
        }
Exemplo n.º 31
0
 // Use this for initialization
 void Start()
 {
     hexPlanet = planet.GetComponent<HexPlanet>();
     planetBehavior = planet.GetComponent<PlanetBehavior>();
     sceneBuilder = GameObject.FindGameObjectWithTag("GameController").GetComponent<SceneBuilder>();
 }
        public void OpenFrame(FrameDescription frame)
        {
            this.config.Merge(frame);
            this.OutputSettings = new OutputSettingsInfo(frame);
            this.QualitySettings = new QualitySettingsInfo(frame);

            this.FrameName = frame.FrameName;
            width = frame.Get<int>("ImageWidth");
            height = frame.Get<int>("ImageHeight");
            if (!string.IsNullOrWhiteSpace(frame.WorkingDir))
                Directory.SetCurrentDirectory(frame.WorkingDir);
   
            if (Scene == null) {
                var svc = new SceneGraphService();
                svc.Populate(new GlobalIndexObjLoader(), new MaterialLoader());

                var builder = new SceneBuilder() { SGService = svc };
                builder.Setup();
                this.Scene = builder.OpenFrame(frame, AreaLightAsMeshLight);
                this.Scene.DefaultLightGain = config.Get("LightGain", new RgbSpectrum(1.0f));
                this.Scene.MaxPathDepth = config.Get("MaxPathDepth", 15);
                this.Scene.RussianRuletteImportanceCap = config.Get("RRImportanceCap", 0.75f);
                this.Scene.MaxPaths = config.Get("PathBufferSize", 65536 >> 10);
                this.Scene.ShadowRayCount = config.Get("ShadowRayCount", 16);
                this.Scene.TextureSamplingQuality = this.QualitySettings.TextureSamplingQuality;
                this.Scene.AreaLightAsMesh = this.AreaLightAsMeshLight;
                this.Scene.MatLib = new OptimizedBsdfLibrary();

                this.Scene.MatLib.Populate(builder.MaterialInfos.ToArray());

                (this.Scene.MatLib as OptimizedBsdfLibrary) .Replace("Object_MaterialView_Test", this.ObjectMaterial);
                (this.Scene.MatLib as OptimizedBsdfLibrary).Replace("Plane_Material", this.PlaneMaterial);

                foreach (var brdf in ObjectMaterial.Where(brdf => brdf != null))
                {
                    builder.ProcessMaterial(0, brdf.MaterialData);
                }
                foreach (var brdf in PlaneMaterial.Where(brdf => brdf != null))
                {
                    builder.ProcessMaterial(1, brdf.MaterialData);
                }

                RenderThreadsCount = config.Get("RenderThreadsCount",1);
                this.scene = builder.SceneGeo;

                var sceneBound = new AABB(scene.BoundingSphereCenter - scene.BoundingSphereRadius,
                                          scene.BoundingSphereCenter + scene.BoundingSphereRadius);
                sceneBound.Expand(1f);

                //var viewBound = new AABB(Scene.Camera.Target - 5f, Scene.Camera.Target + 5f);
                Scene.VolumeIntegrator = new SingleScatteringIntegrator(sceneBound, sceneBound.Size.Length / 10f, 0.15f, RgbSpectrum.UnitSpectrum()*0.095f, new RgbSpectrum(0.0005f));
            }
         

            this.Initialize();

        }
Exemplo n.º 33
0
        public void LoadFrameDescription(FrameDescription frame)
        {
            this.Configuration.Merge(frame);
            this.OutputSettings = new OutputSettingsInfo(frame);
            this.QualitySettings = new QualitySettingsInfo(frame);

            this.FrameName = frame.FrameName;
            var width = frame.Get<int>("ImageWidth");
            var height = frame.Get<int>("ImageHeight");

            Directory.SetCurrentDirectory(frame.WorkingDir);
            /*
            foreach (var frameElement in frame.Elements.Where(frameElement => frameParsers.ContainsKey(frameElement.GetType()))) {
                frameParsers[frameElement.GetType()](frameElement);
            }*/

            if (Scene == null)
            {
                SceneGraphService svc = new SceneGraphService();
                svc.Populate(new GlobalIndexObjLoader(), new MaterialLoader());

                //svc.OpenFrame(frame);
                _builder = new SceneBuilder() { SGService = svc };
                _builder.Setup();
                this.Scene = _builder.OpenFrame(frame, AreaLightAsMeshLight);
                this.Scene.DefaultLightGain = Configuration.Get("LightGain", new RgbSpectrum(1.0f));
                this.Scene.MaxPathDepth = Configuration.Get("MaxPathDepth", 5);
                this.Scene.RussianRuletteImportanceCap = Configuration.Get("RRImportanceCap", 0.75f);
                this.Scene.MaxPaths = Configuration.Get("PathBufferSize", 65536 >> 10);
                this.Scene.ShadowRayCount = Configuration.Get("ShadowRayCount", 1);
                this.Scene.TextureSamplingQuality = this.QualitySettings.TextureSamplingQuality;
                this.Scene.LightSamplingStrategy = LightSamplingStrategy.UniformOneLight;

                var scene = _builder.SceneGeo;

                var sceneBound = new AABB(scene.BoundingSphereCenter - scene.BoundingSphereRadius,
                                          scene.BoundingSphereCenter + scene.BoundingSphereRadius);
                sceneBound.Expand(1f);

                //var viewBound = new AABB(Scene.Camera.Target - 5f, Scene.Camera.Target + 5f);
                var c = new Point(Scene.Camera.Target);
                var bb = new AABB(c - 1f, c + 1f);
                var volumeBound = sceneBound;
                Scene.VolumeIntegrator = new SingleScatteringIntegrator(volumeBound,
                                                                         volumeBound.Size.Length / 10f, //step
                                                                         0.005f, //Probability
                                                                         RgbSpectrum.UnitSpectrum() * 0.095f,  //Inscatering
                                                                         new RgbSpectrum(0.00005f)             //Emission
                                                                       );
            }

            this.Context = new EngineContext() { RenderThreads = Configuration.Get("RenderThreadsCount", 1), FrameConfiguration = frame, Scene = this.Scene };
            this.Initialize();
        }
Exemplo n.º 34
0
        public virtual void Setup(IRayDenLibraryFrame newFrame)
        {
            var svc = new SceneGraphService();
            svc.Populate(new GlobalIndexObjLoader(), new MaterialLoader());
            sceneBuilder = new SceneBuilder() { SGService = svc };
            sceneBuilder.Setup(this);
            sceneBuilder.OpenFrame(newFrame);

        }
        public void OpenFrame(Library.Entity.Frames.FrameDescription frame)
        {
            this.CurrentFrame = new FrameConfiguration();

            this.config.Merge(frame);
            this.OutputSettings = new OutputSettingsInfo(frame);
            this.QualitySettings = new QualitySettingsInfo(frame);

            this.FrameName = frame.FrameName;

            if (!string.IsNullOrWhiteSpace(frame.WorkingDir))
                Directory.SetCurrentDirectory(frame.WorkingDir);
            /*
            foreach (var frameElement in frame.Elements.Where(frameElement => frameParsers.ContainsKey(frameElement.GetType()))) {
                frameParsers[frameElement.GetType()](frameElement);
            }*/

            if (Scene == null)
            {
                SceneGraphService svc = new SceneGraphService();
                svc.Populate(
                    //new ObjLoader(),
                    new GlobalIndexObjLoader(),
                    new MaterialLoader());

                //svc.OpenFrame(frame);
                _builder = new SceneBuilder() { SGService = svc };
                _builder.Setup();
                this.SceneGraph = _builder.SGService.SceneGraph;
                this.Scene = _builder.OpenFrame(frame, this.AreaLightAsMeshLight);

                this.Scene.DefaultLightGain = config.Get("LightGain", new RgbSpectrum(1.0f));
                this.Scene.MaxPathDepth = config.Get("MaxPathDepth", 10);
                this.Scene.RussianRuletteImportanceCap = config.Get("RRImportanceCap", 0.75f);
                this.Scene.MaxPaths = config.Get("PathBufferSize", 65536);
                this.Scene.ShadowRayCount = config.Get("ShadowRayCount", 1);
                this.Scene.TextureSamplingQuality = this.QualitySettings.TextureSamplingQuality;
                this.Scene.LightSamplingStrategy = this.QualitySettings.LightSamplingStrategy;
                RgbSpectrum.Gamma = true;
                /*
                if (GlobalConfiguration.Instance.SpectralRendering)
                {
                    this.Scene.SpectralMats = new BxDFLibrary(new LambertianBrdf(new[] { 0.5f, 0.5f, 0.5f }));
                    this.Scene.SpectralMats.Populate(_builder.MaterialInfos.ToArray());
                }
                else*/

                {
                    this.Scene.MatLib = this.dependencyManager.GetMaterialPlugin(_builder.MaterialInfos.ToArray());
                    if (_builder.FrameMaterialBuilder != null)
                    {
                        this.Scene.MatLib.Add(_builder.FrameMaterialBuilder.Materials);
                        _builder.FrameMaterialBuilder.CreateRayEngineMaterials(this.Scene);
                    }
                    //if (EnableMaterialOverrides) FrameMaterialBuilder.ApplyMaterialOverrides((this.Scene.MatLib as OptimizedBsdfLibrary).Materials, Scene);
                }


                RenderThreadsCount = config.Get("RenderThreadsCount", 1);
                this.scene = _builder.SceneGeo;

                var sceneBound = new AABB(scene.BoundingSphereCenter - scene.BoundingSphereRadius,
                                          scene.BoundingSphereCenter + scene.BoundingSphereRadius);
                sceneBound.Expand(1f);

                //var viewBound = new AABB(Scene.Camera.Target - 5f, Scene.Camera.Target + 5f);
                var c = new Point(Scene.Camera.Target);
                var bb = new AABB(c - 1f, c + 1f);
                var volumeBound = sceneBound;

                Scene.VolumeIntegrator = new SingleScatteringIntegrator(volumeBound,
                                                                         volumeBound.Size.Length / 10f, //step
                                                                         0.05f, //Probability
                                                                         RgbSpectrum.UnitSpectrum() * 0.05f,  //Inscatering
                                                                         new RgbSpectrum(0.000f)             //Emission

                                                                       );
                new RayEngineMaterialBuilder().BuildMaterials(this.Scene);
            }
            this.CurrentFrame.Width = frame.Get<int>("ImageWidth");
            this.CurrentFrame.Height = frame.Get<int>("ImageHeight");
            this.CurrentFrame.ImageSavePath = this.SavePath;
            this.CurrentFrame.LowLatency = lowLatency;
            this.CurrentFrame.MaxSamplesPerPixel = this.QualitySettings.SamplesPerPixel;

            this.Initialize();
            this.Scene.BuildPrimitives();
        }