La luna se dibuja con dos llamadas de sorteo, pero ambas dibujan mal en el xbox, así que solo estoy mostrando un sorteo por simplicidad.
Así debería verse la luna en la PC:
Cómo se ve en la XBOX:
La textura parpadea, desaparece, se ve como un gradiente de abajo hacia arriba, las líneas la atraviesan, y así sucesivamente a medida que la cámara se mueve. Por ejemplo, después de mover la cámara ligeramente, se ve así: http://olhovsky.com/xna/xbox_moon2.png
public void Draw(Camera cam)
{
GraphicsDevice gd = Game3.GDM.GraphicsDevice;
Vector3 position = Position + cam.Position;
Matrix world = Matrix.CreateScale(2.0f);
world *= Matrix.CreateConstrainedBillboard(
position, cam.Position, Vector3.Down, cam.Forward, null);
_moonEffect2.Parameters["World"].SetValue(world);
_moonEffect2.Parameters["View"].SetValue(cam.View);
_moonEffect2.Parameters["Projection"].SetValue(cam.Projection);
// Draw blended part of moon only.
_moonEffect2.Parameters["AlphaTestDirection"].SetValue(-1);
gd.BlendState = BlendState.AlphaBlend;
gd.RasterizerState = RasterizerState.CullNone;
gd.DepthStencilState = DepthStencilState.DepthRead;
ScreenQuadDraw.DrawQuad(_moonQuad, _moonEffect2);
}
Aquí está el sombreador utilizado, nada complicado aquí: http://www.olhovsky.com/xna/Moon.fx
¿Alguien sabe por qué la textura no se muestra correctamente en el xbox? ¿Hay otro estado que tal vez debería establecer?