Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Estos shaders!!!

Iniciado por Drácula, 01 de Enero de 1970, 01:00:00 AM

« anterior - próximo »

Drácula

                                Bien, tengo un problema con el vertex shader má simple:El rectángulo con color. Este shader NO tiene que transformar, sólo dibujar un rectángulo con u ncolor(lo utilizo para las sombras)

He aquí el código:
      float sx,sy;CXCUADROPLANOVERTEX2 vpv[4];float color[4]={ .5,.5,.5,.5 };
      
      sx = (FLOAT)Video.Ancho();
      sy = (FLOAT)Video.Alto();
      sx--;
      sy--;
      BYTE *dest;
      vpv[0].x=0;vpv[0].y=sy;vpv[0].z=0;vpv[0].w=1;
      vpv[1].x=0;vpv[1].y=0;vpv[1].z=0;vpv[1].w=1;
      vpv[2].x=sx;vpv[2].y=sy;vpv[2].z=0;vpv[2].w=1;
      vpv[3].x=sx;vpv[3].y=0;vpv[3].z=0;vpv[3].w=1;
      Video.m_VBCuadro->Lock(0,0,(BYTE **)&dest,0);
      memcpy(dest,vpv,16*4);
      Video.m_VBCuadro->Unlock();
      Video.Device()->SetVertexShaderConstant(8,color,1);
      Video.Device()->SetStreamSource(0,Video.m_VBCuadro,16);
      Video.Device()->DrawPrimitive(D3DPT_TRIANGLESTRIP,0,2);

Y aquí el Shader:
static const char sPosRHWUnColor[] =
"vs.1.0                             //Shader version 1.0         n"
"mov     oPos, v0                                                   n"
"mov     oD0    , c8                //Diffuse color = vertex color  n";

static DWORD PosRHWUnColor[] =
{
   D3DVSD_STREAM(0),
   D3DVSD_REG(0, D3DVSDT_FLOAT4 ),   
   D3DVSD_END()
};

La cuestión es...¡que no hace nada! No me dibuja el rectángulo para hacer la sombra.
¿Alguien puede ayudarme?
                               
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

BeRSeRKeR

                                Por lo que veo, lo que quieres es poder especificar los vértices en coordenadas de pantalla (tal como ocurre con el D3DFVF_XYZRHW), ¿no?.

Si es así, no estoy seguro pero es posible que D3D espere las coordenadas de vértice en clip-space, es decir, espacio en el cual, la esquina superior izquierda tiene las coordenadas (-1,1) y la inferior derecha las coordenadas (1, -1). Para probar si es así, define tu quad de la siguiente forma:

{ -1, -1, 0, 0xff000000, }
{ -1,  1, 0, 0xff000000, }
{  1, -1, 0, 0xff000000, }
{  1,  1, 0, 0xff000000, }

a ver si ocupa toda la pantalla o no...¡ah! y en el vertex shader transforma los vértices por la matriz identidad...si no dudo que salga algo por pantalla.

Si esto funciona, entonces deberás crear una matriz que al multiplicar el vértice definido en screen-space lo convierta a clip-space...pero vamos no lo he probado así que no sabría decirte...

Saludos
                               
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

Drácula

                                Bien, Berserker, tenías semi razón! Como bien has dicho, debo colocar los vértices en clip-space. Pero lo que no necesito es utilizar la matriz identidad. Funciona ahora todo correctamente. Muchas gracias!                                
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

BeRSeRKeR

                                ¡ah que no hay que multiplicar por la matriz identidad!...pues mucho mejor...4 instrucciones que te ahorras :sonriendo:. Claro que pensándolo bien pues tiene su lógica ya que multiplicar un vertice por la matriz identidad dará el vértice mismo :riendo:

Y nada, que me alegro de que funcione

Saludos
                               
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

ProD

                                Dracula... no sería mejor que te pasaras a Cg? es solo una opión :sonriendo:.
                               
as ideas son capitales que sólo ganan intereses entre las manos del talento

Drácula

                                Bueno, lo estoy pensando, pero como todavía mi nivel de shaders es muy bajo, estoy utilizando los de DX. Aunque creo que optaré muy pronto por los Cg.

                               
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.