Ignore:
Timestamp:
May 23, 2000, 10:35:01 PM (25 years ago)
Author:
jeroen
Message:

* empty log message *

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/opengl/mesa/interp_tmp.h

    r2938 r3597  
    1 /* $Id: interp_tmp.h,v 1.1 2000-02-29 00:48:32 sandervl Exp $ */
     1/* $Id: interp_tmp.h,v 1.2 2000-05-23 20:34:51 jeroen Exp $ */
    22
    33/*
     
    2525 */
    2626
     27#define INTERP_UBYTE( out, t, a, b ) {                  \
     28      GLfloat fa = UBYTE_COLOR_TO_FLOAT_COLOR(a);       \
     29      GLfloat fb = UBYTE_COLOR_TO_FLOAT_COLOR(b);       \
     30      GLfloat fo = LINTERP(t, fa, fb);                  \
     31      FLOAT_COLOR_TO_UBYTE_COLOR(out, fo);              \
     32}
     33
     34#if 1
     35
     36#define INTERP_RGBA(nr, t, out, a, b) {                 \
     37   int i;                                               \
     38   for (i = 0; i < nr; i++) {                           \
     39      GLfloat fa = UBYTE_COLOR_TO_FLOAT_COLOR(a[i]);    \
     40      GLfloat fb = UBYTE_COLOR_TO_FLOAT_COLOR(b[i]);    \
     41      GLfloat fo = LINTERP(t, fa, fb);                  \
     42      FLOAT_COLOR_TO_UBYTE_COLOR(out[i], fo);           \
     43   }                                                    \
     44}
     45#else
     46
     47#define INTERP_RGBA(nr, t, out, a, b) {                         \
     48   int n;                                                       \
     49   const GLuint ti = FloatToInt(t*256.0F);                      \
     50   const GLubyte *Ib = (const GLubyte *)&a[0];                  \
     51   const GLubyte *Jb = (const GLubyte *)&b[0];                  \
     52   GLubyte *Ob = (GLubyte *)&out[0];                            \
     53                                                                \
     54   for (n = 0 ; n < nr ; n++)                                   \
     55      Ob[n] = (GLubyte) (Ib[n] + ((ti * (Jb[n] - Ib[n]))/256)); \
     56}
     57#endif
    2758
    2859static void NAME( struct vertex_buffer *VB,
    29                   GLuint dst, GLfloat t, GLuint in, GLuint out )
     60                  GLuint dst, GLfloat t, GLuint in, GLuint out )
    3061{
    31 #if (IND & (CLIP_RGBA0|CLIP_FOG_COORD))
    32    GLfloat col[3][4];
    33 #endif
    34 
    3562   (void) VB;
    3663   (void) dst;
     
    4067
    4168#if (IND & CLIP_RGBA0)
    42    UBYTE_RGBA_TO_FLOAT_RGBA(col[1], VB->Color[0]->data[in]);
    43    UBYTE_RGBA_TO_FLOAT_RGBA(col[2], VB->Color[0]->data[out]);
    44    INTERP_SZ( t, col, 0, 1, 2, 4 );
    45    FLOAT_RGBA_TO_UBYTE_RGBA(VB->Color[0]->data[dst], col[0]);
     69   INTERP_RGBA( 4, t,
     70                VB->Color[0]->data[dst],
     71                VB->Color[0]->data[in],
     72                VB->Color[0]->data[out] );
    4673#endif
    4774
    4875#if (IND & CLIP_RGBA1)
    4976   if (VB->ctx->TriangleCaps & DD_TRI_LIGHT_TWOSIDE) {
    50       UBYTE_RGBA_TO_FLOAT_RGBA(col[1], VB->Color[1]->data[in]);
    51       UBYTE_RGBA_TO_FLOAT_RGBA(col[2], VB->Color[1]->data[out]);
    52       INTERP_SZ( t, col, 0, 1, 2, 4 );
    53       FLOAT_RGBA_TO_UBYTE_RGBA(VB->Color[1]->data[dst], col[0]);
     77      INTERP_RGBA( 4, t,
     78                   VB->Color[1]->data[dst],
     79                   VB->Color[1]->data[in],
     80                   VB->Color[1]->data[out] );
    5481   }
    5582
    5683   if (VB->ctx->TriangleCaps & DD_SEPERATE_SPECULAR)
    5784   {
    58       UBYTE_RGBA_TO_FLOAT_RGBA(col[1], VB->Spec[0][in]);
    59       UBYTE_RGBA_TO_FLOAT_RGBA(col[2], VB->Spec[0][out]);
    60       INTERP_SZ( t, col, 0, 1, 2, 3 );
    61       FLOAT_RGBA_TO_UBYTE_RGBA(VB->Spec[0][dst], col[0]);
     85      INTERP_RGBA( 3, t,
     86                   VB->Spec[0][dst],
     87                   VB->Spec[0][in],
     88                   VB->Spec[0][out] );
    6289
    6390      if (VB->ctx->TriangleCaps & DD_TRI_LIGHT_TWOSIDE) {
    64          UBYTE_RGBA_TO_FLOAT_RGBA(col[1], VB->Spec[1][in]);
    65          UBYTE_RGBA_TO_FLOAT_RGBA(col[2], VB->Spec[1][out]);
    66          INTERP_SZ( t, col, 0, 1, 2, 3 );
    67          FLOAT_RGBA_TO_UBYTE_RGBA(VB->Spec[1][dst], col[0]);
     91         INTERP_RGBA( 3, t,
     92                      VB->Spec[1][dst],
     93                      VB->Spec[1][in],
     94                      VB->Spec[1][out] );
    6895      }
    6996   }
     
    7198
    7299#if (IND & CLIP_FOG_COORD)
    73    col[0][0] = UBYTE_COLOR_TO_FLOAT_COLOR( VB->Spec[0][in][3]);
    74    col[0][1] = UBYTE_COLOR_TO_FLOAT_COLOR( VB->Spec[0][out][3]);
    75    col[0][2] = LINTERP( t, col[0][0], col[0][1] );
    76    FLOAT_COLOR_TO_UBYTE_COLOR(VB->Spec[0][dst][3], col[0][2]);
     100   {
     101      GLubyte a = VB->Spec[0][in][3], b = VB->Spec[0][out][3];
     102      INTERP_UBYTE( VB->Spec[0][dst][3], t, a, b );
     103   }
    77104#endif
    78105
     
    81108   VB->IndexPtr->data[dst] = (GLuint) (GLint)
    82109      LINTERP( t,
    83                (GLfloat) VB->Index[0]->data[in],
    84                (GLfloat) VB->Index[0]->data[out] );
     110               (GLfloat) VB->Index[0]->data[in],
     111               (GLfloat) VB->Index[0]->data[out] );
    85112#endif
    86113
     
    88115   VB->Index[1]->data[dst] = (GLuint) (GLint)
    89116      LINTERP( t,
    90                (GLfloat) VB->Index[1]->data[in],
    91                (GLfloat) VB->Index[1]->data[out] );
     117               (GLfloat) VB->Index[1]->data[in],
     118               (GLfloat) VB->Index[1]->data[out] );
    92119#endif
    93120
    94121#if (IND & CLIP_TEX0)
    95122   INTERP_SZ( t,
    96               VB->TexCoordPtr[0]->data,
    97               dst, in, out,
    98               VB->TexCoordPtr[0]->size );
     123              VB->TexCoordPtr[0]->data,
     124              dst, in, out,
     125              VB->TexCoordPtr[0]->size );
    99126#endif
    100127
    101128#if (IND & CLIP_TEX1)
    102129   INTERP_SZ( t,
    103               VB->TexCoordPtr[1]->data,
    104               dst, in, out,
    105               VB->TexCoordPtr[1]->size );
     130              VB->TexCoordPtr[1]->data,
     131              dst, in, out,
     132              VB->TexCoordPtr[1]->size );
    106133#endif
    107134}
Note: See TracChangeset for help on using the changeset viewer.