/// <summary> /// Initialise les paramètres du shader. /// </summary> void InitializeEffect() { m_material = new Graphics.Material( new Color4(1.0f, 0.48f, 0.48f, 0.48f), // ambient new Color4(1.0f, 0.88f, 0.88f, 0.88f), // diffuse new Color4(1.0f, 0.0f, 0.0f, 0.0f), //new Color4(2.0f, 0.2f, 0.2f, 0.2f), // specular new Color4(0, 0, 0, 0)); }
/// <summary> /// Applique cet effet. /// </summary> public void Apply(Matrix World, Matrix View, Matrix Projection, Material material) { m_device.ImmediateContext.InputAssembler.InputLayout = m_inputLayout; m_effect.GetVariableByName("xWorld").AsMatrix().SetMatrix(World); m_effect.GetVariableByName("xWorldViewProj").AsMatrix().SetMatrix(World * View * Projection); m_effect.GetVariableByName("xWorldInvTranspose").AsMatrix().SetMatrix(Matrix.Invert(Matrix.Transpose(World))); m_effect.GetVariableByName("xMaterial").SetRawValue(material.Bytes, (int)material.Bytes.Length); m_effect.GetVariableByName("xCameraPos").AsVector().Set(Scene.Instance.Camera.Position); float cameraHeight = Scene.Instance.Camera.Position.Length(); m_effect.GetVariableByName("fCameraHeight").AsScalar().Set(cameraHeight); m_effect.GetVariableByName("fCameraHeight2").AsScalar().Set(cameraHeight * cameraHeight); m_effect.GetTechniqueByIndex(0).GetPassByIndex(0).Apply(m_device.ImmediateContext); }