Пример #1
0
        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();
        }
Пример #2
0
        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();
            }
        }