Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: Haddd en 24 de Febrero de 2004, 10:32:44 PM

Título: Color En Wireframe
Publicado por: Haddd en 24 de Febrero de 2004, 10:32:44 PM
 Quiero que al estar en modo WireFrame me dibuje las líneas de un color que yo especifique.

Este es el shader:


//----------------------------------------------------------------------------------
//***********Las siguientes variables DEBEN tener EXACTAMENTE este nombre***********

float4x4    WorldViewProjection;
float4 Color_Pixel;

//----------------------------------------------------------------------------------

struct VS_INPUT
{
  float3 position:     POSITION;
};

struct VS_OUTPUT
{
  float4 position:     POSITION;
};

VS_OUTPUT VShader( VS_INPUT vin )
{
  VS_OUTPUT vout;
 
  // En la definición de shader utilizamos un float3 para la posición y necesitamos convertirlo a un float4
 
  float4 Posicion_Vertice=float4(vin.position,1.0f);
 
  vout.position = mul(Posicion_Vertice,WorldViewProjection);

  return vout;
}


struct PS_OUTPUT
{
  float4 color0:       COLOR0;
};

PS_OUTPUT PShader()
{
  PS_OUTPUT pout;
 
  pout.color0= Color_Pixel;

  return pout;
}

technique RenderScene
{
   pass p0
   {
       VertexShader = compile vs_1_1 VShader();
       PixelShader = compile ps_1_1 PShader();
   }
}



Las texturas se ponen a NULL.

Pues me dibuja el wireframe en blanco  :blink:

He probado poniendo el valor en el diffuse, pero nada.

¿ideas?
Título: Color En Wireframe
Publicado por: BeRSeRKeR en 24 de Febrero de 2004, 10:49:15 PM
 Prueba a en vez de poner esto:

PS_OUTPUT PShader()
{
 PS_OUTPUT pout;

 pout.color0= Color_Pixel;

 return pout;
}


esto:

PS_OUTPUT PShader()
{
 PS_OUTPUT pout;

 pout.color0= float4(cualquier_color_menos_blanco);

 return pout;
}


Esto es para asegurarse de que el problema no está al pasar el color al pixel shader. Si aún así sale blanco, el problema estará en algún render state.

Saludos.
Título: Color En Wireframe
Publicado por: Haddd en 25 de Febrero de 2004, 08:51:34 AM
 ya lo probé y sale blanco. Pero aquí los RenderStates no deben afectar, a no ser que en modo wireframe, los pixelshaders NO actuen
Título: Color En Wireframe
Publicado por: BeRSeRKeR en 25 de Febrero de 2004, 05:28:18 PM
 Pues he hecho una prueba en RenderMonkey. En wireframe, como era de esperar, cambia el color de la malla al que tú le especifiques en el pixel shader. Lo único que he hecho ha sido especificar el modo wireframe y el resto de render states como los pone Direct3D por defecto.

Así que imagino que será algún render state...

Saludos.
Título: Color En Wireframe
Publicado por: MA]Mestre en 25 de Febrero de 2004, 09:51:06 PM
 
Citara no ser que en modo wireframe, los pixelshaders NO actuen

El modo wireframe, ( fill o points ) establece como se rasterizan los poligonos, el siguiente stage del pipeline son las operaciones de pre-fragment, asi que los pixel shaders deberian funcionar con wireframe.

Yo tb pienso que pueden ser algun estado del render... con el mismo código, lo renderizas fill, se ve ok ?

Un Saludo.



Título: Color En Wireframe
Publicado por: Haddd en 25 de Febrero de 2004, 10:14:21 PM
 Ya está, he descubierto el error. El problema es que no hacia el Pass del effect. :blink:

Gracias.