Manoloben :
Je rappel a tous que le terme 3D sur PC/Console, signifie tout programme donnant l impression d avoir 3 dimensions. Donc doom c est de la 3D(meme si dans le code ca l ai pas!)
D ailleurs en parlant de code, vous pensez reeelement que Radium c est de la 3D? C est du Soft alors en theorie ca n est pas non plus de la 3D!
PS : Appelez moi le jour ou vous aurez reellement de la 3D sur vos Ecrans!

Manoloben: Y a darfader qu a fai une demo en 3d, et un autre gars aussi, et c'est de la vrai 3d!!!
Lama :
Ca que j'ai pu voir de radium, c'est aussi bon vieux raycasting de base ! Si c'est pas du raycasting et bien ils font des choix technique bizarre car le jeu n'a pas vraiment l'air d'etre concu pour de la 3D poly.

Orion_
:Lama :
oui, je peut te passer la routine si tu veux, mais elle est pas du tout optimisé pour la GP32. C'est du bon vieux code bourrin.
mais c pourtant efficace visuelement![]()
Orion_ :
heu, je pige pas la, tu dit que ta fait une demo (je precise la One Day Demo (?)), je te demande la routine de remplisage de cette démo justement, et tu me dit que celle que tu va me filer c pas celle de la démo
yamazaky
: Lama > on la trouve ou la demo de l'adic en 3D??
Orion_
: t'aurais pas la routine de remplissage des triangles avec une texture ? parceque sa m'interesse (c bien la One Day Demo que tu parle ?)
void RenderFace(GPDRAWSURFACE* surface, GP_OBJECT* pObject, int Face)
{
unsigned short *pixel;
unsigned short *source;
int clip;
int i;
int u, v;
int du,dv;
int x, y;
int xmin = 320;
int xmax = 0;
GP_FACE* face;
GP_2DPOINT* pt[3];
GP_2DPOINT uv[3];
// get the face
face = &pObject->FaceList[Face];
// Get the points
pt[0] = &pObject->VertexList[face->point[0]].projection;
pt[1] = &pObject->VertexList[face->point[1]].projection;
pt[2] = &pObject->VertexList[face->point[2]].projection;
for ( i=0; i<3; i++ )
{
// Calculate UVs
//! Get better render result with get real texture coodinate just before
//! fill the pixel and not here
uv[i].x = (face->u[i]*face->tex_width)>>16;
uv[i].y = (face->v[i]*face->tex_height)>>16;
// Get min & man x
if ( pt[i]->x<xmin ) xmin = pt[i]->x;
if ( pt[i]->x>xmax ) xmax = pt[i]->x;
}
// Clipping of xmin & xmax
if ( xmin<0 ) xmin = 0;
if ( xmax>319 ) xmax = 319;
// Initialize the edge buffers
for ( i=0; i<320; i++)
{
PolyRenderTop[i] = 0;
PolyRenderBottom[i] = 240;
}
// Scan each edge of triangle
ScanEdge( pt[0], &uv[0], pt[1], &uv[1]);
ScanEdge( pt[1], &uv[1], pt[2], &uv[2]);
ScanEdge( pt[2], &uv[2], pt[0], &uv[0]);
// Texture fill each vertical scanline
for ( x=xmin; x<=xmax; x++)
{
// if the scanline belongs to the polygon... (scanline has pos width)
if ( PolyRenderBottom[x] <= PolyRenderTop[x] )
{
// Find the slopes of the source edges
//------------------------------------
// are we able to divide?
if ( (PolyRenderTop[x]-PolyRenderBottom[x]) != 0 )
{
// divide is okay
du = ((PolyRenderTopU[x]-PolyRenderBottomU[x])<<16) /
(PolyRenderTop[x]-PolyRenderBottom[x]);
dv = ((PolyRenderTopV[x]-PolyRenderBottomV[x])<<16) /
(PolyRenderTop[x]-PolyRenderBottom[x]);
}
else
{
// we can't divide by zero
du = ((PolyRenderTopU[x]-PolyRenderBottomU[x])<<16);
dv = ((PolyRenderTopV[x]-PolyRenderBottomV[x])<<16);
}
// Initialize source texture coordinates
u = PolyRenderBottomU[x]<<16;
v = PolyRenderBottomV[x]<<16;
// clip the bottom edge if neccessary
if ( PolyRenderBottom[x] < 0 )
{
clip = -PolyRenderBottom[x];
PolyRenderBottom[x] = 0;
// Correction of the first uv
u+= du*clip;
v+= dv*clip;
}
// clip top edge if necessary
if ( PolyRenderTop[x] > 239 )
PolyRenderTop[x] = 239;
// Draw the vertical scanline
//-----------------------------
// Get the initial screen memory address
y = PolyRenderBottom[x];
pixel = (unsigned short*)surface->ptbuffer;
pixel+= x*GPC_LCD_HEIGHT + y;
// for each pixel across the scanline...
for ( ; y<PolyRenderTop[x]; y++)
{
// fill the pixel
source = face->texture;
source+= (u>>16)*face->tex_height;
source+= (v>>16);
*(pixel++) = *(source);
// increment source texture coordinates to trace edge
u+= du;
v+= dv;
}
}
}
}
Lama
:yamazaky
: Lama > on la trouve ou la demo de l'adic en 3D??
Je sais pas vu que le site de l'ADIC est mort et que GP32News n'a meme pas référencé les demos sur le site.
Tout les liens sont mort (ceux de GP32news, ceux de gamepark) J'ai juste retrouvé l'ancien site ADIC qui ne propose pas les telechargements http://adic2002.free.fr/
J'ai essayé de la retrouver sur mon dur, mais c'est tellement le bordel que j'ai pas trouvé ...