public void Draw(EffectTechnique technique) { if (vertices.Count > 0) { UniversalEffect effect = RendererAssetPool.UniversalEffect; if (technique == null) { effect.CurrentTechnique = this.Technique; } else { effect.CurrentTechnique = technique; } Ready(); effect.Begin(); foreach (EffectPass pass in effect.CurrentTechnique.Passes)//TODO1 remove this when shading i { pass.Begin(); GraphicsDevice device = GraphicOptions.graphics.GraphicsDevice; device.VertexDeclaration = vertDeclaration; device.Vertices[0].SetSource(vertexBuffer, 0, VertexPositionColorTexture.SizeInBytes); device.DrawUserPrimitives <VertexPositionColorTexture>( PrimitiveType.LineList, vertices.ToArray(), 0, 2); pass.End(); } effect.End(); } }
/// <summary> /// Draws all vertices in the vertex buffer. /// </summary> /// public override void Draw(EffectTechnique technique) { UniversalEffect effect = RendererAssetPool.UniversalEffect; if (technique == effect.Techniques.UseDefault) { effect.CurrentTechnique = RendererAssetPool.UniversalEffect.Techniques.Colored; } else { effect.CurrentTechnique = technique; } effect.ColorParameters.TransparencyEnabled = this.TransparencyEnabled && GraphicOptions.TransparentWalls; effect.Begin(); foreach (EffectPass pass in effect.CurrentTechnique.Passes)//TODO1 remove this when shading i { pass.Begin(); GraphicsDevice device = GraphicOptions.graphics.GraphicsDevice; device.VertexDeclaration = vertDeclaration; device.Vertices[0].SetSource(vertexBuffer, 0, VertexPositionColor.SizeInBytes); device.DrawUserPrimitives <VertexPositionColor>( PrimitiveType.TriangleStrip, vertices.ToArray(), 0, 2); pass.End(); } effect.End(); }
public void ConfigureEffect() { UniversalEffect effect = RendererAssetPool.UniversalEffect; effect.LightParameters.EnableLighting = GraphicOptions.ShadingSupport; effect.ShadowParameters.EnableShadows = RendererAssetPool.DrawShadows; //Light Parameters effect.LightParameters.Position = worldLight.Position; effect.LightParameters.View = worldLight.View; effect.LightParameters.Projection = worldLight.Projection; effect.LightParameters.Color = lightColor; //Camera Parameters effect.CameraParameters.Position = CurrentCamera.Position; effect.CameraParameters.Projection = CurrentCamera.Projection; effect.CameraParameters.View = CurrentCamera.View; //World Parameters effect.WorldParameters.WorldMatrix = Matrix.Identity; if (!GraphicOptions.ShadingSupport) { AmbientColor = Color.White; } effect.LightParameters.AmbientColor = AmbientColor; if (RendererAssetPool.ParticleEffect != null) { RendererAssetPool.ParticleEffect.Parameters["xAmbient"].SetValue(AmbientColor.ToVector4()); } }
public void ConfigureShadowEffect() { UniversalEffect effect = RendererAssetPool.UniversalEffect; effect.CurrentTechnique = effect.Techniques.ShadowMap; effect.WorldParameters.WorldMatrix = Matrix.Identity; effect.LightParameters.Position = worldLight.Position; effect.LightParameters.View = worldLight.View; effect.LightParameters.Projection = worldLight.Projection; }
/// <summary> /// Constructor. /// </summary> /// <param name="graphics">The GraphicsDeviceManager for the EntityRenderer to use. </param> /// <param name="content">The ContentManager for the EntityRenderer to use.</param> public EntityRenderer(GraphicsDeviceManager graphics, ContentManager content) { options = new GraphicOptions(graphics, content); sceneList = new List <Scene>(); sceneIdGenerator = new LowestAvailableID(); RendererAssetPool.UniversalEffect = UniversalEffect.LoadEffect(content); activeScene = new Scene(); GraphicOptions.Content = content; sceneList.Add(activeScene); }
/// <summary> /// Draws the model using Absolute Bone Positioning /// </summary> public override void Draw(EffectTechnique technique) { UniversalEffect effect = RendererAssetPool.UniversalEffect; if (technique == effect.Techniques.UseDefault) { effect.CurrentTechnique = effect.Techniques.TexturedWrap; } else { effect.CurrentTechnique = technique; } //Set transparent if blocking view effect.ColorParameters.TransparencyEnabled = this.TransparencyEnabled && GraphicOptions.TransparentWalls; bool usingAnimation = false; if (animationPlayer != null) { effect.SkinningParameters.Bones = animationPlayer.GetSkinTransforms(); effect.SkinningParameters.IsSkinnedModel = true; usingAnimation = true; } foreach (ModelMesh mesh in model.Meshes) { if (animationPlayer == null) { effect.WorldParameters.WorldMatrix = boneTransforms[mesh.ParentBone.Index]; } bool switchColor = false; if (mesh.Name.Contains("Color")) { effect.ColorParameters.ColorToUse = meshColor; effect.ColorParameters.ForceColorToStored = true; switchColor = true; } effect.TextureParameters.Texture = mesh.Tag as Texture2D; Texture2D mappedTexture; if (textureMap.TryGetValue(mesh.Name, out mappedTexture)) { effect.TextureParameters.Texture = mappedTexture; } /* * foreach (KeyValuePair<string, Texture2D> mapping in textureMap) * { * if (mapping.Key == mesh.Name) * { * effect.TextureParameters.Texture = mapping.Value; * break; * } * }*/ mesh.Draw(); if (switchColor == true) { effect.ColorParameters.ForceColorToStored = false; } } if (usingAnimation) { effect.SkinningParameters.IsSkinnedModel = false; } effect.WorldParameters.WorldMatrix = Matrix.Identity; }