コード例 #1
0
ファイル: GameView.cs プロジェクト: theboot999/Bushfire
        private void DrawFinalToScreen(SpriteBatch spriteBatch)
        {
            if (GameController.inGameState != InGameState.INMENU)  //Standard draw
            {
                ScreenController.graphicsDevice.SetRenderTarget(null);
                spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, null, null, null, null);
                spriteBatch.Draw(DisplayController.GetRenderTarget(worldLightingRender), Vector2.Zero, Color.White);
                spriteBatch.End();
            }
            else   //In menu so draw Blur
            {
                ScreenController.graphicsDevice.SetRenderTarget(DisplayController.GetRenderTarget(blurRender));
                spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, null, null, null, Effectlighting);
                Effectlighting.Parameters["red"].SetValue(WorldController.globalRed);
                Effectlighting.Parameters["green"].SetValue(WorldController.globalGreen);
                Effectlighting.Parameters["blue"].SetValue(WorldController.globalBlue);
                spriteBatch.Draw(DisplayController.GetRenderTarget(worldLightingRender), Vector2.Zero, Color.White);
                spriteBatch.End();

                ScreenController.graphicsDevice.SetRenderTarget(DisplayController.GetRenderTarget(blurRenderTwo));
                spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, null, null, null, null);
                Effectblur.Parameters["Texture"].SetValue(DisplayController.GetRenderTarget(blurRender));
                Effectblur.CurrentTechnique.Passes[0].Apply();
                spriteBatch.Draw(DisplayController.GetRenderTarget(blurRender), Vector2.Zero, Color.White);
                spriteBatch.End();

                ScreenController.graphicsDevice.SetRenderTarget(null);
                spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, null, null, null, null);
                Effectblur.Parameters["Texture"].SetValue(DisplayController.GetRenderTarget(blurRenderTwo));
                Effectblur.CurrentTechnique.Passes[1].Apply();
                spriteBatch.Draw(DisplayController.GetRenderTarget(blurRenderTwo), Vector2.Zero, Color.White);
                spriteBatch.End();
            }
        }
コード例 #2
0
ファイル: GameView.cs プロジェクト: theboot999/Bushfire
        private void InitRendering()
        {
            //Render Targets
            worldObjectsRender       = DisplayController.AddRenderTarget(camera.viewport.Width, camera.viewport.Height, true);
            worldShadowsRender       = DisplayController.AddRenderTarget(camera.viewport.Width, camera.viewport.Height, true);
            worldLightingRender      = DisplayController.AddRenderTarget(camera.viewport.Width, camera.viewport.Height, false);
            lightingMaskRender       = DisplayController.AddRenderTarget(camera.viewport.Width, camera.viewport.Height, false);
            shadowMaskInvertedRender = DisplayController.AddRenderTarget(camera.viewport.Width, camera.viewport.Height, false);
            shadowMaskRender         = DisplayController.AddRenderTarget(camera.viewport.Width, camera.viewport.Height, false);
            blurRender          = DisplayController.AddRenderTarget(camera.viewport.Width, camera.viewport.Height, false);
            blurRenderTwo       = DisplayController.AddRenderTarget(camera.viewport.Width, camera.viewport.Height, false);
            burntLayerRender    = DisplayController.AddRenderTarget(camera.viewport.Width, camera.viewport.Height, false);
            burntToSoftenRender = DisplayController.AddRenderTarget(camera.viewport.Width, camera.viewport.Height, false);

            //Effects
            Effectshadow = GraphicsManager.GetEffect(Engine.ContentStorage.EffectType.Shadow);
            Effectshadow.Parameters["shadowMask"].SetValue(DisplayController.GetRenderTarget(shadowMaskRender));
            Effectlighting = GraphicsManager.GetEffect(Engine.ContentStorage.EffectType.Lighting);
            Effectlighting.Parameters["lightMask"].SetValue(DisplayController.GetRenderTarget(lightingMaskRender));

            EffectshadowInverter = GraphicsManager.GetEffect(Engine.ContentStorage.EffectType.ShadowInverter);
            EffectshadowInverter.Parameters["shadowMask"].SetValue(DisplayController.GetRenderTarget(shadowMaskInvertedRender));
            EffectshadowInverter.Parameters["shadowMask"].SetValue(DisplayController.GetRenderTarget(shadowMaskInvertedRender));

            Effectsoften = GraphicsManager.GetEffect(Engine.ContentStorage.EffectType.Soften);
            Effectsoften.Parameters["Texture"].SetValue(DisplayController.GetRenderTarget(burntLayerRender));

            Effectblur = GraphicsManager.GetEffect(Engine.ContentStorage.EffectType.Blur);
        }
コード例 #3
0
ファイル: GameView.cs プロジェクト: theboot999/Bushfire
        //Render order
        //Draw Ground Layers
        //Draw Burnt Layers
        //Draw Objects
        //Draw Shadows
        //Draw Fire and Smoke
        //Draw Lighting


        private void DrawShadows(SpriteBatch spriteBatch)
        {
            //Switch RenderTarget to ShadowTarget
            ScreenController.graphicsDevice.SetRenderTarget(DisplayController.GetRenderTarget(shadowMaskInvertedRender));
            ScreenController.graphicsDevice.Clear(Color.Black);

            spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, null, null, null, null, camera.TranslationMatrix(1f, 1f));
            mapObjectsDraw.DrawShadows(spriteBatch);
            spriteBatch.End();

            ScreenController.graphicsDevice.SetRenderTarget(DisplayController.GetRenderTarget(shadowMaskRender));
            ScreenController.graphicsDevice.Clear(Color.Black);

            spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, null, null, null, null, camera.TranslationMatrix(1f, 1f));
            mapObjectsDraw.DrawLightsOverShadows(spriteBatch);
            spriteBatch.End();

            spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.NonPremultiplied, null, null, null, EffectshadowInverter);
            EffectshadowInverter.Parameters["darkness"].SetValue(WorldController.shadowDarkness);
            spriteBatch.Draw(DisplayController.GetRenderTarget(shadowMaskInvertedRender), Vector2.Zero, Color.White);
            spriteBatch.End();

            ScreenController.graphicsDevice.SetRenderTarget(DisplayController.GetRenderTarget(worldShadowsRender));
            spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, null, null, null, Effectshadow);
            spriteBatch.Draw(DisplayController.GetRenderTarget(worldObjectsRender), Vector2.Zero, Color.White);
            spriteBatch.End();
        }
コード例 #4
0
ファイル: GameView.cs プロジェクト: theboot999/Bushfire
        private void DrawGroundLayers(SpriteBatch spriteBatch)
        {
            //Draw Ground Layers
            ScreenController.graphicsDevice.Viewport = camera.viewport;
            ScreenController.graphicsDevice.SetRenderTarget(DisplayController.GetRenderTarget(worldObjectsRender));
            spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, null, null, null, null, camera.TranslationMatrix(1f, 1f));
            world.DrawGroundLayers(spriteBatch, camera.drawPoints, mapObjectsDraw);
            spriteBatch.End();

            //Draw burnt layer
            if (mapObjectsDraw.IsBurntTiles())
            {
                ScreenController.graphicsDevice.SetRenderTarget(DisplayController.GetRenderTarget(burntLayerRender));
                ScreenController.graphicsDevice.Clear(Color.Transparent);
                spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null, null, camera.TranslationMatrix(1f, 1f));
                mapObjectsDraw.DrawBurntLayer(spriteBatch);
                spriteBatch.End();

                /*  //Soften the burnt
                 * ScreenController.graphicsDevice.SetRenderTarget(DisplayController.GetRenderTarget(burntToSoftenRender));
                 * spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, null, null, null, null);
                 * spriteBatch.Draw(DisplayController.GetRenderTarget(burntLayerRender), Vector2.Zero, Color.White * 0.5f);
                 * spriteBatch.End();*/

                //Back to world render
                ScreenController.graphicsDevice.SetRenderTarget(DisplayController.GetRenderTarget(worldObjectsRender));
                spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, null, null, null, null);
                spriteBatch.Draw(DisplayController.GetRenderTarget(burntLayerRender), Vector2.Zero, Color.White * 0.85f);
                spriteBatch.End();
            }
        }
コード例 #5
0
        public void DrawCellRecalculateList()
        {
            int i = 0;

            ScreenController.graphicsDevice.SetRenderTarget(DisplayController.GetRenderTarget(renderTargetTextureId));
            DisplayController.spriteBatch1.Begin(SpriteSortMode.Deferred);

            while (!redrawQueue.IsEmpty)
            {
                if (redrawQueue.TryDequeue(out Point point))
                {
                    int cellX = point.X - (xMajor * tilesPerCell);
                    int cellY = point.Y - (yMajor * tilesPerCell);

                    Tile      tile        = WorldController.world.tileGrid[point.X, point.Y];
                    Rectangle destination = new Rectangle(cellX * tilePixel, cellY * tilePixel, tilePixel, tilePixel);

                    Color color = GetTileColor(tile);
                    AddLayerDraw(tile, destination, color);
                    AddMapObjectDraw(tile, destination, point.X, point.Y, color);
                    i++;
                }
                else
                {
                    break;
                }
            }

            DisplayController.spriteBatch1.End();
            ScreenController.graphicsDevice.SetRenderTarget(null);
        }
コード例 #6
0
        private void InitCreateCell()
        {
            //Preparing
            renderTargetTextureId = DisplayController.AddRenderTarget(cellPixelSize - 1, cellPixelSize - 1, true);

            ScreenController.graphicsDevice.SetRenderTarget(DisplayController.GetRenderTarget(renderTargetTextureId));

            DisplayController.spriteBatch1.Begin(SpriteSortMode.Deferred);
            HashSet <MapObject> mapObjectList = new HashSet <MapObject>();

            //Adding
            InitAddTiles(mapObjectList, xMajor, yMajor);

            //Output
            sprite = new Sprite(new Rectangle(0, 0, cellPixelSize, cellPixelSize), DisplayController.GetRenderTarget(renderTargetTextureId));
            DisplayController.spriteBatch1.End();
            ScreenController.graphicsDevice.SetRenderTarget(null);
            //Debug.WriteLine(next);
        }
コード例 #7
0
ファイル: GameView.cs プロジェクト: theboot999/Bushfire
        private void DrawLighting(SpriteBatch spriteBatch)
        {
            //Building the lighting Map
            ScreenController.graphicsDevice.SetRenderTarget(DisplayController.GetRenderTarget(lightingMaskRender));
            ScreenController.graphicsDevice.Clear(Color.Black);
            spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, null, null, null, null, camera.TranslationMatrix(1f, 1f));
            mapObjectsDraw.DrawLighting(spriteBatch);
            spriteBatch.End();

            spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend);
            spriteBatch.Draw(backingWhite.texture2D, new Rectangle(0, 0, camera.viewport.Width, camera.viewport.Height), backingWhite.location, Color.White * WorldController.globalBrightness, 0f, Vector2.Zero, SpriteEffects.None, 0f);
            spriteBatch.End();

            //Outputting the lighting map to our final worldRender
            ScreenController.graphicsDevice.SetRenderTarget(DisplayController.GetRenderTarget(worldLightingRender));
            spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, null, null, null, Effectlighting);
            Effectlighting.Parameters["red"].SetValue(WorldController.globalRed);
            Effectlighting.Parameters["green"].SetValue(WorldController.globalGreen);
            Effectlighting.Parameters["blue"].SetValue(WorldController.globalBlue);
            spriteBatch.Draw(DisplayController.GetRenderTarget(worldShadowsRender), Vector2.Zero, Color.White);
            spriteBatch.End();
        }