Quantcast
Channel: Community | MonoGame - Latest topics
Viewing all articles
Browse latest Browse all 6822

Opacity when creating lightsources

$
0
0

@LEM wrote:

I'm following this thread and monopalle's code to create lightsources. My goal is to darken the background and then have several lightsources that will move around. I have tried to simplify the code he posted as much as possible, and everything works fine, but for some reason I can't get the lightsource to show some opacity even if the graphic I use it has that format

This is how it looks:

As you can see everything inside the circle has the same opacity. I would like to get it darker around the edges, just like the graphic that I use. This is the graphic I use:

Anybody knows what I may be missing?

Here is my code:

using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using System.Collections.Generic;

namespace Game7
{
    /// <summary>
    /// This is the main type for your game.
    /// </summary>
    public class Game1 : Game
    {
        GraphicsDeviceManager graphics;
        SpriteBatch spriteBatch;

        static Vector2 position = new Vector2();
        static Vector2 direction = new Vector2();

        static Texture2D light_gradient;
        static Texture2D stones;

        RenderTarget2D darkness;

        public Game1()
        {
            graphics = new GraphicsDeviceManager(this);
            Content.RootDirectory = "Content";

            graphics.PreferredBackBufferWidth = 900;
            graphics.PreferredBackBufferHeight = 600;
        }

    
        protected override void Initialize()
        {            
            var pp = GraphicsDevice.PresentationParameters;
            darkness = new RenderTarget2D(GraphicsDevice, pp.BackBufferWidth, pp.BackBufferHeight);

            position = new Vector2(0,0);
            direction = new Vector2(1.5f, 0f);                       

            base.Initialize();
        }


        protected override void LoadContent()
        {
            spriteBatch = new SpriteBatch(GraphicsDevice);

            stones = Content.Load<Texture2D>("stones");
            light_gradient = Content.Load<Texture2D>("light");
    
        }


        protected override void Update(GameTime gameTime)
        {
            position += direction;
            base.Update(gameTime);
        }

        protected override void Draw(GameTime gameTime)
        {
            //------------- THE DARKNESS--------------------------------------
            //then I draw the darknes to ITS own rendertarget, as in previous post....
            GraphicsDevice.SetRenderTarget(darkness);
            GraphicsDevice.Clear(new Color(0, 0, 0, 200));

            //-------------- LIGHTS IN THE DARKNESS----------------------------------------------------
            //now I blend the lights with the darkness, to give me the basic "black with holes" layer....
            //first set the blendstate,
            var blend = new BlendState
            {
                AlphaBlendFunction = BlendFunction.ReverseSubtract,
                AlphaSourceBlend = Blend.One,
                AlphaDestinationBlend = Blend.One,
            };

            // then draw the lights using the blendstate above...
            spriteBatch.Begin(blendState: blend);            
            spriteBatch.Draw(light_gradient, position, null, Color.Black * 0.3f, 0, new Vector2(0, 0), 1.5f, SpriteEffects.None, 0);                      
            spriteBatch.End();
        




            // set the render target back to the backbuffer..... And draw all the render-targets and textures....
            GraphicsDevice.SetRenderTarget(null);
            GraphicsDevice.Clear(Color.Black);
        
            spriteBatch.Begin();

            //first the raw stone wall....
            spriteBatch.Draw(stones, new Vector2(0, 0), Color.White);
               
            spriteBatch.Draw(darkness, Vector2.Zero, Color.White * 0.96f);            
       
    
            spriteBatch.End();
        
            base.Draw(gameTime);
        }


    }
}

Posts: 2

Participants: 2

Read full topic


Viewing all articles
Browse latest Browse all 6822

Trending Articles