Exemplo n.º 1
0
        ////

        public void VanillaShaderBegin(Texture2D tex, int frameHeight)
        {
            Vector4 frame = new Vector4(
                x: 0,
                y: frameHeight * this.CurrentFrame,
                z: tex.Width,
                w: frameHeight
                );
            float cyclePerc = (Main.GlobalTime % this.ShaderTime) / this.ShaderTime;

            var                    mymod          = EmittersMod.Instance;
            ArmorShaderData        baseShaderData = mymod.ArmorShaders[this.ShaderType];
            EmitterArmorShaderData shaderData     = mymod.MyArmorShaders[this.ShaderType];
            Effect                 fx             = baseShaderData.Shader;

            EffectPass effect = fx.CurrentTechnique.Passes[shaderData.PassName];

            fx.Parameters["uColor"].SetValue(shaderData.UColor);
            fx.Parameters["uSaturation"].SetValue(shaderData.USaturation);
            fx.Parameters["uSecondaryColor"].SetValue(shaderData.USecondaryColor);
            fx.Parameters["uTime"].SetValue(cyclePerc);
            fx.Parameters["uOpacity"].SetValue(shaderData.UOpacity);
            fx.Parameters["uImageSize0"].SetValue(new Vector2(tex.Width, tex.Height));
            fx.Parameters["uSourceRect"].SetValue(frame);

            effect.Apply();
        }
Exemplo n.º 2
0
        private void LoadArmorShaders()
        {
            this.ArmorShaders = EmitterArmorShaderData.GetVanillaArmorShaders();

            foreach (ArmorShaderData baseShaderData in this.ArmorShaders)
            {
                if (baseShaderData == null)
                {
                    continue;
                }

                var passName   = EmitterArmorShaderData.GetPassName(baseShaderData);
                var shaderData = new EmitterArmorShaderData(Main.PixelShaderRef, baseShaderData, passName);

                this.MyArmorShaders.Add(shaderData);
            }
        }