コード例 #1
0
        public void Draw(Projectile proj, Color color, float Saturation, float Opacity)
        {
            this.trailColor = color;
            EMiscShaderData miscShaderData = ResourceLoader.MagicMissile;

            miscShaderData.UseImage0(Entrogic.ModTexturesTable["MagicMissile0"]);
            miscShaderData.UseImage1(Entrogic.ModTexturesTable["MagicMissile-RainbowRod"]);
            miscShaderData.UseImage2(Entrogic.ModTexturesTable["MagicMissile2"]);
            miscShaderData.UseSaturation(-Saturation);
            miscShaderData.UseOpacity(Opacity);
            miscShaderData.Apply(null);
            _vertexStrip.PrepareStripWithProceduralPadding(proj.oldPos, proj.oldRot, new VertexStrip.StripColorFunction(this.StripColors), new VertexStrip.StripHalfWidthFunction(this.StripWidth), -Main.screenPosition + proj.Size / 2f, true);
            _vertexStrip.DrawTrail();
            Main.pixelShader.CurrentTechnique.Passes[0].Apply();
        }
コード例 #2
0
 public virtual void Apply(DrawData?drawData = null)
 {
     base.Shader.Parameters["uColor"].SetValue(this._uColor);
     base.Shader.Parameters["uSaturation"].SetValue(this._uSaturation);
     base.Shader.Parameters["uSecondaryColor"].SetValue(this._uSecondaryColor);
     base.Shader.Parameters["uTime"].SetValue((float)(Main._drawInterfaceGameTime.TotalGameTime.TotalSeconds % 3600.0));
     base.Shader.Parameters["uOpacity"].SetValue(this._uOpacity);
     base.Shader.Parameters["uShaderSpecificData"].SetValue(this._shaderSpecificData);
     if (drawData != null)
     {
         DrawData value = drawData.Value;
         Vector4  zero  = Vector4.Zero;
         if (drawData.Value.sourceRect != null)
         {
             zero = new Vector4((float)value.sourceRect.Value.X, (float)value.sourceRect.Value.Y, (float)value.sourceRect.Value.Width, (float)value.sourceRect.Value.Height);
         }
         base.Shader.Parameters["uSourceRect"].SetValue(zero);
         base.Shader.Parameters["uWorldPosition"].SetValue(Main.screenPosition + value.position);
         base.Shader.Parameters["uImageSize0"].SetValue(new Vector2((float)value.texture.Width, (float)value.texture.Height));
     }
     else
     {
         base.Shader.Parameters["uSourceRect"].SetValue(new Vector4(0f, 0f, 4f, 4f));
     }
     if (this._uImage0 != null)
     {
         Main.graphics.GraphicsDevice.Textures[0]      = this._uImage0;
         Main.graphics.GraphicsDevice.SamplerStates[0] = SamplerState.LinearWrap;
         base.Shader.Parameters["uImageSize0"].SetValue(new Vector2((float)this._uImage0.Width, (float)this._uImage0.Height));
     }
     if (this._uImage1 != null)
     {
         Main.graphics.GraphicsDevice.Textures[1]      = this._uImage1;
         Main.graphics.GraphicsDevice.SamplerStates[1] = SamplerState.LinearWrap;
         base.Shader.Parameters["uImageSize1"].SetValue(new Vector2((float)this._uImage1.Width, (float)this._uImage1.Height));
     }
     if (this._uImage2 != null)
     {
         Main.graphics.GraphicsDevice.Textures[2]      = this._uImage2;
         Main.graphics.GraphicsDevice.SamplerStates[2] = SamplerState.LinearWrap;
         base.Shader.Parameters["uImageSize2"].SetValue(new Vector2((float)this._uImage2.Width, (float)this._uImage2.Height));
     }
     if (this._useProjectionMatrix)
     {
         base.Shader.Parameters["uMatrixTransform0"].SetValue(EMiscShaderData.GetNormalizedTransformationmatrix(Main.GameViewMatrix));
     }
     base.Apply();
 }