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); }
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); } } }
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); } }
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); }
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); }
/// <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; }
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); }
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; }
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); }
/// <summary> /// Initializes a new instance of the <see cref="SceneSettings"/> class. /// </summary> public SceneSettings() { GraphicsCompositor = new SceneGraphicsCompositorLayers(); EditorSettings = new SceneEditorSettings(); }
/// <summary> /// Initializes a new instance of the <see cref="SceneSettings"/> class. /// </summary> public SceneSettings() { Id = Guid.NewGuid(); GraphicsCompositor = new SceneGraphicsCompositorLayers(); EditorSettings = new SceneEditorSettings(); }
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); }
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); }