Details | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 244 | chris | 1 | // This file is included by SWTri.cpp and should not be built directly by the project. |
| 2 | |||
| 3 | #if defined(TEXTURED) |
||
| 4 | { |
||
| 5 | #include "SWTri_GetTexel.cpp" |
||
| 6 | |||
| 7 | if (alpha > 0x08) |
||
| 8 | { |
||
| 9 | #include "SWTri_TexelARGB.cpp" |
||
| 10 | |||
| 11 | #if defined(GLOBAL_ARGB) || defined (TEX_ALPHA) || defined(MOD_ARGB) |
||
| 12 | { |
||
| 13 | if (alpha < 0xf0) |
||
| 14 | { |
||
| 15 | unsigned int trb, tg; |
||
| 16 | #if !defined(LINEAR_BLEND) |
||
| 17 | { |
||
| 18 | trb = (((tex&0xff00ff) * alpha) >> 8) & 0xff00ff; |
||
| 19 | tg = (((tex&0x00ff00) * alpha) >> 8) & 0x00ff00; |
||
| 20 | } |
||
| 21 | #else |
||
| 22 | { |
||
| 23 | trb = tex&0xff00ff; |
||
| 24 | tg = tex&0x00ff00; |
||
| 25 | } |
||
| 26 | #endif |
||
| 27 | |||
| 28 | trb = ((trb>>9)&0x7c00)|((trb>>3)&0x001f); |
||
| 29 | tg = ((tg>>6)&0x03e0); |
||
| 30 | tex = *pix; |
||
| 31 | alpha = (0xff - alpha)>>3; |
||
| 32 | unsigned int prb = (((tex&0x7c1f) * alpha) >> 5) & 0x7c1f; |
||
| 33 | unsigned int pg = (((tex&0x03e0) * alpha) >> 5) & 0x03e0; |
||
| 34 | *pix = (trb|tg) + (prb|pg); |
||
| 35 | } |
||
| 36 | else |
||
| 37 | { |
||
| 38 | *pix = ((tex>>9)&0x7c00)|((tex>>6)&0x03e0)|((tex>>3)&0x001f); |
||
| 39 | } |
||
| 40 | } |
||
| 41 | #else |
||
| 42 | { |
||
| 43 | *pix = ((tex>>9)&0x7c00)|((tex>>6)&0x03e0)|((tex>>3)&0x001f); |
||
| 44 | } |
||
| 45 | #endif |
||
| 46 | } |
||
| 47 | } |
||
| 48 | #elif defined(MOD_ARGB) |
||
| 49 | { |
||
| 50 | if (a > 0xf00000) |
||
| 51 | { |
||
| 52 | *pix = ((r>>9)&0x7c00)|((g>>14)&0x03e0)|((b>>19)&0x001f); |
||
| 53 | } |
||
| 54 | else if (a > 0x080000) |
||
| 55 | { |
||
| 56 | unsigned int alpha = a >> 16; |
||
| 57 | unsigned int _rb = ((((r&0xff0000) | (b>>16)) * alpha)>> 8)&0xff00ff; |
||
| 58 | unsigned int _g = (((g&0xff0000) * alpha)>>16)&0x00ff00; |
||
| 59 | _rb = ((_rb>>9)&0x7c00)|((_rb>>3)&0x001f); |
||
| 60 | _g = ((_g>>6)&0x03e0); |
||
| 61 | unsigned int p = *pix; |
||
| 62 | alpha = (0xff - alpha)>>3; |
||
| 63 | unsigned int prb = (((p&0x7c1f) * alpha) >> 5) & 0x7c1f; |
||
| 64 | unsigned int pg = (((p&0x03e0) * alpha) >> 5) & 0x03e0; |
||
| 65 | *pix = (_rb|_g)+(prb|pg); |
||
| 66 | } |
||
| 67 | } |
||
| 68 | #endif |
||
| 69 |