void DrawTrenchMRT(Trench t) { Matrix world; foreach (var mesh in t.SelectedModel.Meshes) { world = mesh.ParentBone.Transform * t.SRT; MRTcolor.SetValue(new Vector3(0.5f, 0.5f, 0.5f)); MRTworld.SetValue(world); MRTworldViewProjection.SetValue(world * Game.SelectedCamera.View * Game.SelectedCamera.Projection); MRTinverseTransposeWorld.SetValue(Matrix.Transpose(Matrix.Invert(world))); mesh.Draw(); } foreach (var turret in t.Turrets) { foreach (var mesh in TrenchTurret.Meshes) { world = mesh.ParentBone.Transform * turret.SRT; MRTcolor.SetValue(new Vector3(0.5f, 0.5f, 0.5f)); MRTworld.SetValue(world); MRTworldViewProjection.SetValue(world * Game.SelectedCamera.View * Game.SelectedCamera.Projection); MRTinverseTransposeWorld.SetValue(Matrix.Transpose(Matrix.Invert(world))); mesh.Draw(); } } }
void DrawModelMRT(Model model, Matrix SRT, Vector3 color) { foreach (var mesh in model.Meshes) { var world = mesh.ParentBone.Transform * SRT; var wvp = world * Game.SelectedCamera.View * Game.SelectedCamera.Projection; MRTworld.SetValue(world); MRTcolor.SetValue(color); MRTworldViewProjection.SetValue(wvp); MRTinverseTransposeWorld.SetValue(Matrix.Transpose(Matrix.Invert(world))); mesh.Draw(); } }
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(); } }