Пример #1
0
        public void DrawMetaballTarget(SpriteBatch sB, GraphicsDevice graphicsDevice)
        {
            graphicsDevice.SetRenderTarget(Target);
            graphicsDevice.Clear(Color.Transparent);

            SpiritMod.Metaballs.borderNoise.Parameters["offset"].SetValue((float)Main.time / 10f);

            sB.Begin(SpriteSortMode.Immediate, BlendState.Additive, SamplerState.PointClamp, DepthStencilState.Default, RasterizerState.CullNone);

            SpiritMod.Metaballs.borderNoise.CurrentTechnique.Passes[0].Apply();

            foreach (var m in Metaballs)
            {
                m.DrawOnMetaballLayer(sB);
            }

            sB.End();

            AddEffect(sB, graphicsDevice, Target, SpiritMod.Metaballs.metaballColorCode);

            sB.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, SamplerState.PointClamp, DepthStencilState.Default, RasterizerState.CullNone, null);

            foreach (var s in Sprites)
            {
                s.DrawGalaxyMappedSprite(sB);
            }

            sB.End();

            SpiritMod.Metaballs.metaballEdgeDetection.Parameters["width"].SetValue((float)Main.screenWidth / 2);
            SpiritMod.Metaballs.metaballEdgeDetection.Parameters["height"].SetValue((float)Main.screenHeight / 2);
            SpiritMod.Metaballs.metaballEdgeDetection.Parameters["border"].SetValue(BorderColor.ToVector4());

            AddEffect(sB, graphicsDevice, Target, SpiritMod.Metaballs.metaballEdgeDetection);
        }
Пример #2
0
 private void AssignTextureParameters()
 {
     if (ParameterExists("surfaceTexture"))
     {
         effect.Parameters["surfaceTexture"].SetValue(Texture2D);
     }
     if (ParameterExists("borderColor"))
     {
         effect.Parameters["borderColor"].SetValue(BorderColor.ToVector4());
     }
     if (ParameterExists("borderSize"))
     {
         effect.Parameters["borderSize"].SetValue(BorderSize);
     }
 }