Foros - Stratos

Stratos => XNA => Mensaje iniciado por: v_sss en 15 de Junio de 2011, 09:58:24 PM

Título: Niebla en XNA 4.0
Publicado por: v_sss en 15 de Junio de 2011, 09:58:24 PM
Holas,
Lolz, si que ha pasado tiempo desde mi último mensaje, la virgen del amor hermoso  0:-)

Bueno, estoy intentando aplicar un effecto de niebla a una chusta de código que tengo entre manos y no consigo nada (la edad, que no perdona y mi velocidad de procesamiento ya no es lo que era jajaja)

Estoy usando XNA 4.0

En la clase principal (Game1.cs) tengo algo como esto:
Código (csharp) [Seleccionar]

BasicEffect basicEffect;
basicEffect.FogEnabled = true;
basicEffect.FogStart = 10.0f;
basicEffect.FogEnd = 100.0f;
basicEffect.FogColor = new Vector3(0.0f, 0.0f, 0.0f);

protected override void Draw(GameTime gameTime)
{
    GraphicsDevice.Clear(Color.CornflowerBlue);

    basicEffect.CurrentTechnique.Passes[0].Apply();
    x.Draw();
}


Ahí se llama a otra clase (x) que tiene un método público (Draw):
Código (csharp) [Seleccionar]

public void Draw()
{
    graphicsDevice.BlendState = BlendState.Opaque;
    graphicsDevice.DepthStencilState = DepthStencilState.Default;
   
    xx.Render();

    spriteBatch.Begin();
    spriteBatch.DrawString(gFont, "blabla", new Vector2(20, 120), Color.Yellow);
    spriteBatch.End();
}


Desde la clase "x" en su método "Draw" se llama a otra clase (xx) que tiene otro método público (Render):

Código (csharp) [Seleccionar]

private Effect instancedEffect;

instancedEffect.CurrentTechnique = instancedEffect.Techniques["HardwareInstancing"];
instancedEffect.Parameters["Texture"].SetValue(cubeTexture);

Public void Render()
{
    foreach (EffectPass pass in instancedEffect.CurrentTechnique.Passes)
    {
        pass.Apply();
        graphicsDevice.DrawInstancedPrimitives(...)
    }
}


Esta última clase es la que en última instancia me "dibuja" los triangulitos en pantalla. Se usa un shader para dibujar las primitivas con su respectiva textura y usando las matrices de proyección... de ahí el foreach ()

El tema está en que la escena se pinta bien, pero de la niebla ni rastro, es como si no hiciese caso del "BassicEffect"

¿Alguna ayuda?

Salu2.
Título: Re: Niebla en XNA 4.0
Publicado por: XÑA en 16 de Junio de 2011, 09:33:23 AM
Pero tu estás usando el 'instancedEffect' ...¿Qué pinta aquí el BasicEffect?
Título: Re: Niebla en XNA 4.0
Publicado por: v_sss en 16 de Junio de 2011, 08:46:27 PM
¿Se puede añadir una nueva técnica a"instaceEffect" para que en una pasada me dibuje las primitvas y en otra pasada me aplique el efecto de la niebla?

Título: Re: Niebla en XNA 4.0
Publicado por: XÑA en 17 de Junio de 2011, 10:46:11 AM
ni idea  Oo
Título: Re: Niebla en XNA 4.0
Publicado por: WaaghMan en 17 de Junio de 2011, 12:14:27 PM
Suena como que no. Se puede hacer si te curras un shader de instancing y le metes la niebla a mano. Hay documentación al respecto, pero sigue siendo complicado.