Esempio n. 1
0
        protected override async Task LoadContent()
        {
            await base.LoadContent();

            graphicsCompositor = new SceneGraphicsCompositorLayers
            {
                Cameras = { Camera.Get <CameraComponent>() },
                Master  =
                {
                    Renderers     =
                    {
                        new ClearRenderFrameRenderer {
                            Color = Color.Green, Name = "Clear frame"
                        },
                        new SceneDelegateRenderer(PreCameraRendererDraw),
                        new SceneCameraRenderer      {
                            Mode  = SceneCameraRenderer
                        },
                        new SceneDelegateRenderer(PostCameraRendererDraw),
                    }
                }
            };

            Scene = new Scene {
                Settings = { GraphicsCompositor = graphicsCompositor }
            };
            Scene.AddChild(Camera);

            SceneSystem.SceneInstance = new SceneInstance(Services, Scene);
        }
Esempio n. 2
0
        internal void RenderColliderShapes(bool enabled)
        {
            colliderShapesRendering = enabled;

            if (!colliderShapesRendering)
            {
                var mainCompositor = (SceneGraphicsCompositorLayers)sceneSystem.SceneInstance.Scene.Settings.GraphicsCompositor;
                var scene          = debugEntityScene.Get <ChildSceneComponent>().Scene;

                foreach (var element in elements)
                {
                    element.RemoveDebugEntity(scene);
                }

                sceneSystem.SceneInstance.Scene.Entities.Remove(debugEntityScene);
                mainCompositor.Master.Renderers.Remove(debugSceneRenderer);
            }
            else
            {
                //we create a child scene to render the shapes, so that they are totally separated from the normal scene
                var mainCompositor = (SceneGraphicsCompositorLayers)sceneSystem.SceneInstance.Scene.Settings.GraphicsCompositor;

                var graphicsCompositor = new SceneGraphicsCompositorLayers
                {
                    Cameras = { mainCompositor.Cameras[0] },
                    Master  =
                    {
                        Renderers        =
                        {
                            new SceneCameraRenderer {
                                Mode     = new PhysicsDebugCameraRendererMode{
                                    Name = "Camera renderer"
                                }
                            },
                        }
                    }
                };

                debugScene = new Scene {
                    Settings = { GraphicsCompositor = graphicsCompositor }
                };

                var childComponent = new ChildSceneComponent {
                    Scene = debugScene
                };
                debugEntityScene = new Entity {
                    childComponent
                };
                debugSceneRenderer = new SceneChildRenderer(childComponent);

                mainCompositor.Master.Add(debugSceneRenderer);
                sceneSystem.SceneInstance.Scene.Entities.Add(debugEntityScene);

                foreach (var element in elements)
                {
                    element.AddDebugEntity(debugScene);
                }
            }
        }
Esempio n. 3
0
        private void SetupScene()
        {
            graphicsCompositor = new SceneGraphicsCompositorLayers
            {
                Cameras = { Camera.Get <CameraComponent>() },
                Master  =
                {
                    Renderers        =
                    {
                        new ClearRenderFrameRenderer {
                            Color    = Color.Green, Name = "Clear frame"
                        },
                        //new SceneCameraRenderer { Mode = new CameraRendererModeForward { Name = "Camera renderer", ModelEffect = "XenkoForwardShadingEffect" } },
                        new SceneCameraRenderer      {
                            Mode     = new CameraRendererModeForward{
                                Name = "Camera renderer"
                            }
                        },
                    }
                }
            };

            Scene = new Scene {
                Settings = { GraphicsCompositor = graphicsCompositor }
            };
            Scene.Entities.Add(Camera);

            //var ambientLight = new Entity { new LightComponent { Type = new LightAmbient { Color = new ColorRgbProvider(Color.White) }, Intensity = 1 } };
            ////var ambientLight = new Entity { new LightComponent { Type = new LightDirectional { Color = new ColorRgbProvider(Color.White) }, Intensity = 1 } };
            ////ambientLight.Transform.RotationEulerXYZ = new Vector3(0.0f, (float) Math.PI, 0.0f);
            //Scene.Entities.Add(ambientLight);

            var directionalLight = new Entity {
                new LightComponent {
                    Type = new LightDirectional {
                        Color = new ColorRgbProvider(Color.White), Shadow = { Enabled = true }
                    }, Intensity = 1
                },
            };

            Scene.Entities.Add(directionalLight);

            //var directionalLight2 = new Entity { new LightComponent { Type = new LightSpot { Range = 25, Color = new ColorRgbProvider(Color.White), Shadow = { Enabled = false } }, Intensity = 20 }, };
            //directionalLight2.Transform.Position = Vector3.UnitX * 40;
            //directionalLight2.Transform.Rotation = Quaternion.RotationY(MathUtil.PiOverTwo);
            //Scene.Entities.Add(directionalLight2);

            SceneSystem.SceneInstance = new SceneInstance(Services, Scene);

            camera          = new TestCamera();
            CameraComponent = camera.Camera;
            Script.Add(camera);
        }
        /// <summary>
        /// Create an instance of the game test
        /// </summary>
        public UITestGameBase()
        {
            StopOnFrameCount = -1;

            graphicsCompositor = new SceneGraphicsCompositorLayers
            {
                Cameras = { Camera.Get <CameraComponent>() },
                Master  =
                {
                    Renderers     =
                    {
                        new ClearRenderFrameRenderer {
                            Color = Color.Green, Name = "Clear frame"
                        },

                        new SceneDelegateRenderer(SpecificDrawBeforeUI)
                        {
                            Name  = "Delegate before main UI"
                        },

                        new SceneCameraRenderer      {
                            Mode  = SceneCameraRenderer
                        },
                    }
                }
            };
            Scene = new Scene {
                Settings = { GraphicsCompositor = graphicsCompositor }
            };

            Scene.Entities.Add(UIRoot);
            Scene.Entities.Add(Camera);

            Camera.Transform.Position = new Vector3(0, 0, 1000);

            UIComponent.IsFullScreen      = true;
            UIComponent.Resolution        = new Vector3(1000, 500, 500);
            UIComponent.ResolutionStretch = ResolutionStretch.FixedWidthFixedHeight;

            UI = (UISystem)Services.GetService(typeof(UISystem));
            if (UI == null)
            {
                UI = new UISystem(Services);
                GameSystems.Add(UI);
            }
        }
Esempio n. 5
0
        protected void PerformDrawTest(Action <Game, RenderDrawContext, RenderFrame> drawTestAction, GraphicsProfile?profileOverride = null, string subTestName = null, bool takeSnapshot = true)
        {
            // create the game instance
            var typeGame = GetType();
            var game     = (GameTestBase)Activator.CreateInstance(typeGame);

            if (profileOverride.HasValue)
            {
                game.GraphicsDeviceManager.PreferredGraphicsProfile = new[] { profileOverride.Value }
            }
            ;

            // register the tests.
            game.FrameGameSystem.IsUnitTestFeeding = true;
            var testName = TestContext.CurrentContext.Test.FullName + subTestName;

            if (takeSnapshot)
            {
                game.FrameGameSystem.TakeScreenshot(null, testName);
            }

            // add the render callback
            var graphicsCompositor = new SceneGraphicsCompositorLayers
            {
                Master =
                {
                    Renderers     =
                    {
                        new ClearRenderFrameRenderer {
                            Color = Color.Green, Name = "Clear frame"
                        },
                        new SceneDelegateRenderer((context, frame) => drawTestAction(game, context, frame)),
                    }
                }
            };
            var scene = new Scene {
                Settings = { GraphicsCompositor = graphicsCompositor }
            };

            game.SceneSystem.SceneInstance = new SceneInstance(Services, scene);

            RunGameTest(game);
        }
Esempio n. 6
0
        protected override async Task LoadContent()
        {
            await base.LoadContent();

            graphicsCompositor = new SceneGraphicsCompositorLayers
            {
                Master =
                {
                    Renderers        =
                    {
                        new ClearRenderFrameRenderer {
                            Color    = Color.Green, Name             = "Clear frame"
                        },
                        new SceneCameraRenderer      {
                            Mode     = new CameraRendererModeForward{
                                Name = "Camera renderer"
                            }, FixedAspectRatio=        3.0f, ForceAspectRatio = true
                        }
                    }
                }
            };

            Scene = new Scene {
                Settings = { GraphicsCompositor = graphicsCompositor }
            };

            Texture png;

            using (var pngStream = ContentManager.FileProvider.OpenStream("PngImage", VirtualFileMode.Open, VirtualFileAccess.Read))
                using (var pngImage = Image.Load(pngStream, GraphicsDevice.ColorSpace == ColorSpace.Linear))
                    png = Texture.New(GraphicsDevice, pngImage);

            var plane = new Entity {
                new BackgroundComponent {
                    Texture = png
                }
            };

            Scene.Entities.Add(plane);

            SceneSystem.SceneInstance = new SceneInstance(Services, Scene);
        }
Esempio n. 7
0
        /// <summary>
        /// Create an instance of the game test
        /// </summary>
        public UITestGameBase()
        {
            StopOnFrameCount = -1;

            GraphicsDeviceManager.PreferredGraphicsProfile = new [] { GraphicsProfile.Level_11_0 };

            graphicsCompositor = new SceneGraphicsCompositorLayers
            {
                Cameras = { Camera.Get <CameraComponent>() },
                Master  =
                {
                    Renderers     =
                    {
                        new ClearRenderFrameRenderer {
                            Color = Color.Green, Name = "Clear frame"
                        },

                        new SceneDelegateRenderer(SpecificDrawBeforeUI)
                        {
                            Name  = "Delegate before main UI"
                        },

                        new SceneCameraRenderer      {
                            Mode  = SceneCameraRenderer
                        },
                    }
                }
            };
            Scene = new Scene {
                Settings = { GraphicsCompositor = graphicsCompositor }
            };

            Scene.AddChild(UIRoot);
            Scene.AddChild(Camera);

            Camera.Transform.Position = new Vector3(0, 0, 1000);

            UIComponent.IsFullScreen          = true;
            UIComponent.VirtualResolution     = new Vector3(1000, 500, 500);
            UIComponent.VirtualResolutionMode = VirtualResolutionMode.FixedWidthFixedHeight;
        }
Esempio n. 8
0
        protected override async Task LoadContent()
        {
            await base.LoadContent();

            graphicsCompositor = new SceneGraphicsCompositorLayers
            {
                Cameras = { Camera.Get <CameraComponent>() },
                Master  =
                {
                    Renderers     =
                    {
                        new ClearRenderFrameRenderer {
                            Color = Color.Green, Name = "Clear frame"
                        },
                        new SceneDelegateRenderer(PreCameraRendererDraw),
                        new SceneCameraRenderer      {
                            Mode  = SceneCameraRenderer
                        },
                        new SceneDelegateRenderer(PostCameraRendererDraw),
                    }
                }
            };

            Scene = new Scene {
                Settings = { GraphicsCompositor = graphicsCompositor }
            };
            Scene.Entities.Add(Camera);

            AmbientLight = new LightComponent {
                Type = new LightAmbient {
                    Color = new ColorRgbProvider(Color.White)
                }, Intensity = 1
            };
            var ambientLight = new Entity {
                AmbientLight
            };

            Scene.Entities.Add(ambientLight);

            SceneSystem.SceneInstance = new SceneInstance(Services, Scene);
        }
Esempio n. 9
0
        public void LoadRendering()
        {
            Vector3 virtualResolution = new Vector3(GraphicsDevice.Presenter.BackBuffer.Width,
                                                    GraphicsDevice.Presenter.BackBuffer.Height, 20f);

            ONAF2Component = new OnafMain(this);

            Scene scene = SceneSystem.SceneInstance.Scene;
            SceneGraphicsCompositorLayers compositor = (SceneGraphicsCompositorLayers)scene.Settings.GraphicsCompositor;

            compositor.Master.Renderers.Insert(1, new SceneDelegateRenderer(Draw));

            _spriteBatch = new SpriteBatch(GraphicsDevice)
            {
                VirtualResolution = virtualResolution
            };

            _sampler = SamplerState.New(GraphicsDevice,
                                        new SamplerStateDescription(TextureFilter.Point, TextureAddressMode.Wrap));

            LoadRealContent();

            _hasLoaded = true;
        }
Esempio n. 10
0
        protected override async Task LoadContent()
        {
            await base.LoadContent();

            Window.AllowUserResizing = true;

            // Instantiate a scene with a single entity and model component
            var scene = new Scene();

            // Create a cube entity
            cubeEntity = new Entity();

            // Create a procedural model with a diffuse material
            var model    = new Model();
            var material = Material.New(GraphicsDevice, new MaterialDescriptor
            {
                Attributes =
                {
                    Diffuse      = new MaterialDiffuseMapFeature(new ComputeColor(Color.White)),
                    DiffuseModel = new MaterialDiffuseLambertModelFeature()
                }
            });

            model.Materials.Add(material);
            cubeEntity.Add(new ModelComponent(model));

            var modelDescriptor = new ProceduralModelDescriptor(new CubeProceduralModel());

            modelDescriptor.GenerateModel(Services, model);

            // Add the cube to the scene
            scene.AddChild(cubeEntity);

            // Create a camera entity and add it to the scene
            var cameraEntity = new Entity {
                new CameraComponent()
            };

            cameraEntity.Transform.Position = new Vector3(0, 0, 5);
            scene.AddChild(cameraEntity);

            // Create a light
            var lightEntity = new Entity()
            {
                new LightComponent()
            };

            lightEntity.Transform.Position = new Vector3(0, 0, 1);
            lightEntity.Transform.Rotation = Quaternion.RotationY(MathUtil.DegreesToRadians(45));
            scene.AddChild(lightEntity);

            // Create a graphics compositor
            var compositor = new SceneGraphicsCompositorLayers();

            bool isLDR = false;

            if (isLDR)
            {
                compositor.Master.Renderers.Add(new ClearRenderFrameRenderer());
                compositor.Master.Renderers.Add(new SceneCameraRenderer()
                {
                });
            }
            else
            {
                var layer           = new SceneGraphicsLayer();
                var renderHDROutput = new LocalRenderFrameProvider {
                    Descriptor = { Format = RenderFrameFormat.HDR, DepthFormat = RenderFrameDepthFormat.Shared }
                };
                layer.Output = renderHDROutput;
                layer.Renderers.Add(new ClearRenderFrameRenderer());
                layer.Renderers.Add(new SceneCameraRenderer());
                compositor.Layers.Add(layer);
                compositor.Master.Renderers.Add(new SceneEffectRenderer()
                {
                    Effect = new PostProcessingEffects()
                });
            }
            compositor.Cameras.Add(cameraEntity.Get <CameraComponent>());

            SceneSystem.SceneInstance = new SceneInstance(Services, scene);

            // Use this graphics compositor
            scene.Settings.GraphicsCompositor = compositor;

            // Create a scene instance
            SceneSystem.SceneInstance = new SceneInstance(Services, scene);
        }
Esempio n. 11
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SceneSettings"/> class.
 /// </summary>
 public SceneSettings()
 {
     GraphicsCompositor = new SceneGraphicsCompositorLayers();
     EditorSettings     = new SceneEditorSettings();
 }
Esempio n. 12
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SceneSettings"/> class.
 /// </summary>
 public SceneSettings()
 {
     Id = Guid.NewGuid();
     GraphicsCompositor = new SceneGraphicsCompositorLayers();
     EditorSettings     = new SceneEditorSettings();
 }
Esempio n. 13
0
        protected override async Task LoadContent()
        {
            await base.LoadContent();

            Window.AllowUserResizing = true;

            await base.LoadContent();

            Window.AllowUserResizing = true;

            arial16 = Content.Load <SpriteFont>("DynamicFonts/Arial16");

            // Instantiate a scene with a single entity and model component
            var scene = new Scene();

            // Fixed size
            scene.Entities.Add(GetUIEntity(arial16, true, new Vector3(0, 0, 4)));
            scene.Entities.Add(GetUIEntity(arial16, true, new Vector3(-2, 1, 0)));
            scene.Entities.Add(GetUIEntity(arial16, true, new Vector3(2, 2, -2)));
            scene.Entities.Add(GetUIEntity(arial16, true, new Vector3(0, 1, 0)));
            scene.Entities.Add(GetUIEntity(arial16, true, new Vector3(0, 2, -2)));

            scene.Entities.Add(GetUIEntity(arial16, false, new Vector3(0, -0.3f, 4)));
            scene.Entities.Add(GetUIEntity(arial16, false, new Vector3(-2, 0, 0)));
            scene.Entities.Add(GetUIEntity(arial16, false, new Vector3(2, 1, -2)));


            // Create a camera entity and add it to the scene
            var cameraEntity = new Entity {
                new CameraComponent()
            };

            cameraEntity.Transform.Position = new Vector3(0, 0, 5);
            scene.Entities.Add(cameraEntity);

            // Create a graphics compositor
            var compositor = new SceneGraphicsCompositorLayers();

            bool isLDR = true;

            if (isLDR)
            {
                compositor.Master.Renderers.Add(new ClearRenderFrameRenderer());
                compositor.Master.Renderers.Add(new SceneCameraRenderer()
                {
                });
            }
            else
            {
                var layer           = new SceneGraphicsLayer();
                var renderHDROutput = new LocalRenderFrameProvider {
                    Descriptor = { Format = RenderFrameFormat.HDR, DepthFormat = RenderFrameDepthFormat.Shared }
                };
                layer.Output = renderHDROutput;
                layer.Renderers.Add(new ClearRenderFrameRenderer());
                layer.Renderers.Add(new SceneCameraRenderer());
                compositor.Layers.Add(layer);
                compositor.Master.Renderers.Add(new SceneEffectRenderer()
                {
                    Effect = new PostProcessingEffects()
                });
            }
            compositor.Cameras.Add(cameraEntity.Get <CameraComponent>());

            // Use this graphics compositor
            scene.Settings.GraphicsCompositor = compositor;

            // Create a scene instance
            SceneSystem.SceneInstance = new SceneInstance(Services, scene);
        }
Esempio n. 14
0
        private void SetupScene()
        {
            graphicsCompositor = new SceneGraphicsCompositorLayers
            {
                Cameras = { Camera.Get <CameraComponent>() },
                Master  =
                {
                    Renderers        =
                    {
                        new ClearRenderFrameRenderer {
                            Color    = Color.Green, Name = "Clear frame"
                        },
                        //new SceneCameraRenderer { Mode = new CameraRendererModeForward { Name = "Camera renderer", ModelEffect = "XenkoForwardShadingEffect" } },
                        new SceneCameraRenderer      {
                            Mode     = new CameraRendererModeForward{
                                Name = "Camera renderer"
                            }
                        },
                    }
                }
            };

            Scene = new Scene {
                Settings = { GraphicsCompositor = graphicsCompositor }
            };
            Scene.Entities.Add(Camera);

            //var ambientLight = new Entity { new LightComponent { Type = new LightAmbient { Color = new ColorRgbProvider(Color.White) }, Intensity = 1 } };
            ////var ambientLight = new Entity { new LightComponent { Type = new LightDirectional { Color = new ColorRgbProvider(Color.White) }, Intensity = 1 } };
            ////ambientLight.Transform.RotationEulerXYZ = new Vector3(0.0f, (float) Math.PI, 0.0f);
            //Scene.Entities.Add(ambientLight);

            var directionalLight = new Entity {
                new LightComponent {
                    Type = new LightDirectional {
                        Color = new ColorRgbProvider(Color.White), Shadow = { Enabled = true }
                    }, Intensity = 1
                },
            };

            directionalLight.Transform.Rotation = Quaternion.RotationY(MathUtil.PiOverTwo * 0.2f);
            Scene.Entities.Add(directionalLight);

            //var pointLight1 = new Entity { new LightComponent() { Type = new LightPoint { Color = new ColorRgbProvider(Color.Red), Radius = 100.0f, Shadow = { Enabled = false } }, Intensity = 1.0f } };
            //pointLight1.Transform.Position.X = 5.0f;
            //Scene.Entities.Add(pointLight1);

            //var directionalLight2 = new Entity { new LightComponent { Type = new LightSpot { Range = 25, Color = new ColorRgbProvider(Color.White), Shadow = { Enabled = false } }, Intensity = 20 }, };
            //directionalLight2.Transform.Position = Vector3.UnitX * 40;
            //directionalLight2.Transform.Rotation = Quaternion.RotationY(MathUtil.PiOverTwo);
            //Scene.Entities.Add(directionalLight2);

            var rand = new Random();

            for (int i = 0; i < 512; ++i)
            {
                var pointLight1 = new Entity
                {
                    new LightComponent()
                    {
                        Type = i % 2 == 0 ? (ILight) new LightPoint
                        {
                            Color  = new ColorRgbProvider(new Color((float)rand.NextDouble(), (float)rand.NextDouble(), (float)rand.NextDouble(), 1.0f)),
                            Radius = 2.0f,
                            Shadow = { Enabled = false },
                        }
                        : new LightSpot
                        {
                            Color  = new ColorRgbProvider(new Color((float)rand.NextDouble(), (float)rand.NextDouble(), (float)rand.NextDouble(), 1.0f)),
                            Range  = 4.0f,
                            Shadow = { Enabled = false },
                        },
                        Intensity = 10.0f
                    }
                };
                pointLight1.Transform.Position = new Vector3(
                    (float)rand.NextDouble() * 20.0f - 10.0f,
                    (float)rand.NextDouble() * 20.0f - 10.0f,
                    (float)rand.NextDouble() * 20.0f - 10.0f
                    );
                Scene.Entities.Add(pointLight1);
            }


            SceneSystem.SceneInstance = new SceneInstance(Services, Scene);

            camera          = new TestCamera();
            CameraComponent = camera.Camera;
            Script.Add(camera);
        }