Example #1
0
 public override void SetEffectParameters(Effect effect)
 {
     if (effect.Parameters["Position"] != null)
     {
         effect.Parameters["Position"].SetValue(Position);
     }
     if (effect.Parameters["LightColor"] != null)
     {
         effect.Parameters["LightColor"].SetValue(LightColor);
     }
     if (effect.Parameters["Attenuation"] != null)
     {
         effect.Parameters["Attenuation"].SetValue(Attenuation);
     }
     if (effect.Parameters["DiffuseColor"] != null)
     {
         effect.Parameters["DiffuseColor"].SetValue(DiffuseColor.ToVector3());
     }
     if (effect.Parameters["AmbientColor"] != null)
     {
         effect.Parameters["AmbientColor"].SetValue(AmbientColor.ToVector3());
     }
     if (effect.Parameters["Falloff"] != null)
     {
         effect.Parameters["Falloff"].SetValue(FallOff);
     }
     if (effect.Parameters["SpecularColor"] != null)
     {
         effect.Parameters["SpecularColor"].SetValue(SpecularColor);
     }
     base.SetEffectParameters(effect);
 }
Example #2
0
        public override void SetEffectParameters(Effect effect)
        {
            effect.Parameters["LightColor"]?.SetValue(LightColor.ToVector3());
            effect.Parameters["AmbientColor"]?.SetValue(AmbientColor.ToVector3());
            effect.Parameters["DiffuseColor"]?.SetValue(DiffuseColor.ToVector3());
            effect.Parameters["Position"]?.SetValue(Position);
            effect.Parameters["ModelTexture"]?.SetValue(Texture);
            effect.Parameters["NormalTexture"]?.SetValue(Normal);
            effect.Parameters["Attenuation"]?.SetValue(Attenuation);

            base.SetEffectParameters(effect);
        }
Example #3
0
        public override void SetEffectParameters(Effect effect)
        {
            effect.Parameters["LightColor"]?.SetValue(LightColor.ToVector3());
            effect.Parameters["AmbientColor"]?.SetValue(AmbientColor.ToVector3());
            effect.Parameters["DiffuseColor"]?.SetValue(DiffuseColor.ToVector3());
            effect.Parameters["SpecularColor"]?.SetValue(SpecularColor.ToVector3());
            effect.Parameters["SpecularPower"]?.SetValue(SpecularPower);
            effect.Parameters["Position"]?.SetValue(Position);
            effect.Parameters["ModelTexture"]?.SetValue(Texture);
            effect.Parameters["NormalTexture"]?.SetValue(Normal);
            effect.Parameters["SpecularTexture"]?.SetValue(Specular);
            effect.Parameters["CameraPosition"]?.SetValue(GameRoot.MainCamera.Position);
            effect.Parameters["Attenuation"]?.SetValue(Attenuation);

            base.SetEffectParameters(effect);
        }
            public override void SetEffectParam(Effect effect)
            {
                if (effect.Parameters["AmbientLightColor"] != null)
                {
                    effect.Parameters["AmbientLightColor"].SetValue(AmbientColor.ToVector3());
                }

                if (effect.Parameters["DiffuseColor"] != null)
                {
                    effect.Parameters["DiffuseColor"].SetValue(DiffuseColor.ToVector3());
                }

                if (effect.Parameters["LightPosition"] != null)
                {
                    effect.Parameters["LightPosition"].SetValue(LightPosition);
                }

                if (effect.Parameters["LightColor"] != null)
                {
                    effect.Parameters["LightColor"].SetValue(LightColor.ToVector3());
                }

                if (effect.Parameters["LightAttenuation"] != null)
                {
                    effect.Parameters["LightAttenuation"].SetValue(Attenuation);
                }

                if (effect.Parameters["LightFalloff"] != null)
                {
                    effect.Parameters["LightFalloff"].SetValue(LightFallOff);
                }

                if (effect.Parameters["Texture"] != null)
                {
                    effect.Parameters["Texture"].SetValue(LightFallOff);
                }

                base.SetEffectParam(effect);
            }
Example #5
0
        public override void Draw(GameTime gameTime)
        {
            if (Content != null && Camera != null && Enabled && Visible)
            {
                // Copy any parent transforms.
                Matrix[] transforms = new Matrix[Content.Bones.Count];
                Content.CopyAbsoluteBoneTransformsTo(transforms);

                foreach (ModelMesh mesh in Content.Meshes)
                {
                    // Update our World Matrix for this Model
                    World = transforms[mesh.ParentBone.Index] *
                            Matrix.CreateRotationX(Rotation.X) *
                            Matrix.CreateRotationY(Rotation.Y) *
                            Matrix.CreateRotationZ(Rotation.Z) *
                            Matrix.CreateScale(Scale) *
                            Matrix.CreateTranslation(Position);

                    if (CustomEffect != null)
                    {
                        #region Custom HLSL Effect Rendering

                        /*********************************************************************************************************
                        *                                                                   -- Please do not f**k with this to much haha unless ya ask me (AR-50 LOCKED AND LOADED!) --
                        *********************************************************************************************************/

                        // Pass our meshes Index buffer to our graphics device
                        //GraphicsDevice.Indices = mesh.IndexBuffer;

                        // Loop thru the Custom Effect's passes
                        foreach (EffectPass pass in CustomEffect.CurrentTechnique.Passes)
                        {
                            // Begin our First pass
                            pass.Apply();

                            // Render this pass over the parts inside the mesh
                            foreach (ModelMeshPart part in mesh.MeshParts)
                            {
                                // Pass our mesh part's Vertex declaration to our graphics device
                                //GraphicsDevice.VertexDeclaration = part.VertexDeclaration;

                                // Manually pass our vertices to our graphics device
                                //GraphicsDevice.Vertices[0].SetSource(mesh.VertexBuffer, part.StreamOffset, part.VertexStride);

                                // TODO: Need to rework this .. the double casts will kill performance! *Refactor OUT*

                                // Check and see if the part has an attached texture
                                if (((BasicEffect)part.Effect).Texture != null)
                                {
                                    // If it does pass the texture our graphics device instead of manually in our shader
                                    GraphicsDevice.Textures[0] = ((BasicEffect)part.Effect).Texture;
                                }

                                // Finally Draw our Index Primitives (Triangles) for this part of our mesh
                                GraphicsDevice.DrawIndexedPrimitives(PrimitiveType.TriangleList, part.NumVertices, 0, part.NumVertices,
                                                                     part.StartIndex, part.PrimitiveCount);
                            }
                        }

                        #endregion
                    }
                    else
                    {
                        #region Basic Effect Rendering Loop

                        // Setup culling / fill
                        RasterizerState rasterizerState1 = new RasterizerState();
                        rasterizerState1.CullMode      = CullMode;
                        rasterizerState1.FillMode      = FillMode;
                        GraphicsDevice.RasterizerState = rasterizerState1;

                        // Set our alpha blending states if enabled
                        if (EnableAlphaBlending)
                        {
                            GraphicsDevice.BlendState = BlendState.AlphaBlend;

                            //GraphicsDevice.RenderState.AlphaBlendEnable = true;
                            //GraphicsDevice.RenderState.AlphaTestEnable = true;

                            //GraphicsDevice.RenderState.AlphaFunction = CompareFunction.Greater;
                            //GraphicsDevice.RenderState.SourceBlend = Blend.SourceAlpha;
                            //GraphicsDevice.RenderState.DestinationBlend = Blend.InverseSourceAlpha;
                            //GraphicsDevice.RenderState.BlendFunction = BlendFunction.Load;
                        }

                        foreach (BasicEffect effect in mesh.Effects)
                        {
                            effect.EnableDefaultLighting();

                            effect.AmbientLightColor = AmbientColor.ToVector3();
                            effect.DiffuseColor      = DiffuseColor.ToVector3();
                            effect.EmissiveColor     = EmissiveColor.ToVector3();
                            effect.SpecularColor     = SpecularColor.ToVector3();

                            effect.World      = World;
                            effect.View       = Camera.View;
                            effect.Projection = Camera.Projection;
                        }

                        mesh.Draw();

                        // Reset our alpha blending states
                        if (EnableAlphaBlending)
                        {
                            //GraphicsDevice.RenderState.AlphaBlendEnable = false;
                            //GraphicsDevice.RenderState.AlphaTestEnable = false;
                            //GraphicsDevice.RenderState.SourceBlend = Blend.Zero;
                            //GraphicsDevice.RenderState.DestinationBlend = Blend.Zero;
                        }

                        #endregion
                    }
                    base.Draw(gameTime);
                }
            }
        }
Example #6
0
 public Vector3 ShadeBackground(Ray ray) => AmbientColor.ToVector3();
Example #7
0
        public override void Draw(GameTime gameTime)
        {
            base.Draw(gameTime);

            World = Matrix.CreateScale(Scale) *
                    Matrix.CreateRotationY(Rotation.Y) *
                    Matrix.CreateRotationX(Rotation.X) *
                    Matrix.CreateRotationX(Rotation.Z) *
                    Matrix.CreateTranslation(Position);

            if (VertexBuffer != null && IndexBuffer != null)
            {
                // Pass our Index Buffer and our Vertex Buffer to the Graphics Device
                GraphicsDevice.Indices = IndexBuffer;
                GraphicsDevice.SetVertexBuffer(VertexBuffer);

                if (CustomEffect != null)
                {
                    // Setup our Shader
                    if (SetShaderParameters != null)
                    {
                        SetShaderParameters.Invoke(gameTime);
                    }

                    foreach (EffectPass p in CustomEffect.CurrentTechnique.Passes)
                    {
                        p.Apply();
                        GraphicsDevice.DrawIndexedPrimitives(PrimitiveType.TriangleList, 0, 0, _width * _height, 0, TriangleCount);
                    }
                }
                else
                {
                    RasterizerState state = new RasterizerState();

                    state.FillMode = FillMode;
                    state.CullMode = CullMode;

                    GraphicsDevice.RasterizerState = state;

                    // Pass in our Lighting Colors
                    SimpleEffect.AmbientLightColor = AmbientColor.ToVector3();
                    SimpleEffect.DiffuseColor      = DiffuseColor.ToVector3();
                    SimpleEffect.EmissiveColor     = EmissiveColor.ToVector3();
                    SimpleEffect.SpecularColor     = SpecularColor.ToVector3();
                    SimpleEffect.SpecularPower     = SpecularPower;

                    // Update the world, view and projection matrices on the basic effect
                    SimpleEffect.World      = World;
                    SimpleEffect.View       = Camera.View;
                    SimpleEffect.Projection = Camera.Projection;

                    // Pass our texture to our graphics device for rendering
                    if (Texture != null)
                    {
                        SimpleEffect.Texture        = Texture;
                        SimpleEffect.TextureEnabled = true;
                    }

                    foreach (EffectPass pass in SimpleEffect.CurrentTechnique.Passes)
                    {
                        pass.Apply();
                        GraphicsDevice.DrawIndexedPrimitives(PrimitiveType.TriangleList, 0, 0, _width * _height, 0, TriangleCount);
                    }
                }
            }
        }