Changeset 3597 for trunk/src/opengl/mesa/interp_tmp.h
- Timestamp:
- May 23, 2000, 10:35:01 PM (25 years ago)
- 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 sandervlExp $ */1 /* $Id: interp_tmp.h,v 1.2 2000-05-23 20:34:51 jeroen Exp $ */ 2 2 3 3 /* … … 25 25 */ 26 26 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 27 58 28 59 static void NAME( struct vertex_buffer *VB, 29 60 GLuint dst, GLfloat t, GLuint in, GLuint out ) 30 61 { 31 #if (IND & (CLIP_RGBA0|CLIP_FOG_COORD))32 GLfloat col[3][4];33 #endif34 35 62 (void) VB; 36 63 (void) dst; … … 40 67 41 68 #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] ); 46 73 #endif 47 74 48 75 #if (IND & CLIP_RGBA1) 49 76 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] ); 54 81 } 55 82 56 83 if (VB->ctx->TriangleCaps & DD_SEPERATE_SPECULAR) 57 84 { 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] ); 62 89 63 90 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] ); 68 95 } 69 96 } … … 71 98 72 99 #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 } 77 104 #endif 78 105 … … 81 108 VB->IndexPtr->data[dst] = (GLuint) (GLint) 82 109 LINTERP( t, 83 84 110 (GLfloat) VB->Index[0]->data[in], 111 (GLfloat) VB->Index[0]->data[out] ); 85 112 #endif 86 113 … … 88 115 VB->Index[1]->data[dst] = (GLuint) (GLint) 89 116 LINTERP( t, 90 91 117 (GLfloat) VB->Index[1]->data[in], 118 (GLfloat) VB->Index[1]->data[out] ); 92 119 #endif 93 120 94 121 #if (IND & CLIP_TEX0) 95 122 INTERP_SZ( t, 96 97 98 123 VB->TexCoordPtr[0]->data, 124 dst, in, out, 125 VB->TexCoordPtr[0]->size ); 99 126 #endif 100 127 101 128 #if (IND & CLIP_TEX1) 102 129 INTERP_SZ( t, 103 104 105 130 VB->TexCoordPtr[1]->data, 131 dst, in, out, 132 VB->TexCoordPtr[1]->size ); 106 133 #endif 107 134 }
Note:
See TracChangeset
for help on using the changeset viewer.