protected override void Draw(GameTime gameTime) { GraphicsDevice.Clear(Color.Black); GraphicsDevice.DepthStencilState = DepthStencilState.Default; GraphicsDevice.BlendState = BlendState.Opaque; skyBox.Draw(camera.View, camera.Projection, camera.position); currentScene.Draw(); spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, null, DepthStencilState.DepthRead, RasterizerState.CullNone); currentScene.Draw2D(GraphicsDevice, spriteBatch); spriteBatch.End(); }
void DrawSceneMRT(DrawType dt) { var CameraView = Game.SelectedCamera.View; var CameraProjection = Game.SelectedCamera.Projection; var CameraPosition = Game.SelectedCamera.Position; //MRTapplyLightEffect.SetValue(0f); //MRTinvertViewProjection.SetValue(Matrix.Invert(CameraView * CameraProjection)); MRTcameraPosition.SetValue(CameraPosition); MRTlightDirection.SetValue(Game.LightCamera.FrontDirection); MRTspecularIntensity.SetValue(SpecularIntensity); MRTspecularPower.SetValue(SpecularPower); if (dt == DrawType.Regular) { MasterMRT.CurrentTechnique = MRTskybox; SkyBox.Draw(CameraView, CameraProjection, CameraPosition); } if (dt == DrawType.DepthMap) { MasterMRT.CurrentTechnique = MRTshadowMap; } //MasterMRT.Parameters["ApplyLightEffect"]?.SetValue(1f); if (Game.GameState.Equals(TGCGame.GmState.Running) || Game.GameState.Equals(TGCGame.GmState.Paused) || Game.GameState.Equals(TGCGame.GmState.Defeat)) { if (showXwing) { DrawXWingMRT(Game.Xwing, dt); } foreach (var enemy in tiesToDraw) { DrawTieMRT(enemy); } foreach (var ship in shipsToDraw) { if (ship.Allied) { DrawXwingMRT(ship); } else { DrawTieMRT(ship); } } if (dt == DrawType.Regular) { MasterMRT.CurrentTechnique = MRTbasicColor; MRTaddToBloomFilter.SetValue(1f); //MasterMRT.Parameters["ApplyLightEffect"]?.SetValue(0f); //MRTapplyLightEffect.SetValue(0f); foreach (var laser in lasersToDraw) { DrawModelMRT(LaserModel, laser.SRT, laser.Color); } MRTaddToBloomFilter.SetValue(0f); //MasterMRT.Parameters["ApplyLightEffect"]?.SetValue(1f); //MRTapplyLightEffect.SetValue(1f); MRTcolor.SetValue(new Vector3(0.5f, 0.5f, 0.5f)); MasterMRT.CurrentTechnique = MasterMRT.Techniques["TrenchDraw"]; } DrawMapMRT(); } }