[Scummvm-cvs-logs] CVS: residual/tinygl README.residual,1.4,1.5 ztriangle.cpp,1.7,1.8

Pawel Kolodziejski aquadran at users.sourceforge.net
Wed Aug 10 14:44:10 CEST 2005


Update of /cvsroot/scummvm/residual/tinygl
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30401/tinygl

Modified Files:
	README.residual ztriangle.cpp 
Log Message:
experimental texture light shading mode in tinygl

Index: README.residual
===================================================================
RCS file: /cvsroot/scummvm/residual/tinygl/README.residual,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- README.residual	14 Jan 2005 09:16:52 -0000	1.4
+++ README.residual	10 Aug 2005 21:41:59 -0000	1.5
@@ -6,3 +6,4 @@
 * Changed includes paths in source files.
 * Added needed type cast and fixes for proper compile.
 * Added 't/T' prefix to prevent OpenGl names duplication.
+* Added light shading texture mapping mode.

Index: ztriangle.cpp
===================================================================
RCS file: /cvsroot/scummvm/residual/tinygl/ztriangle.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- ztriangle.cpp	10 Aug 2005 21:11:24 -0000	1.7
+++ ztriangle.cpp	10 Aug 2005 21:41:59 -0000	1.8
@@ -238,12 +238,16 @@
 {
     PIXEL *texture;
     float fdzdx,fndzdx,ndszdx,ndtzdx;
+    int _drgbdx;
 
 #define INTERP_Z
+#define INTERP_RGB
 #define INTERP_STZ
 
 #define NB_INTERP 8
 
+#define SAR_RND_TO_ZERO(v,n) (v / (1<<n))
+
 #define DRAW_INIT()				\
 {						\
   texture=zb->current_texture;\
@@ -251,6 +255,9 @@
   fndzdx=NB_INTERP * fdzdx;\
   ndszdx=NB_INTERP * dszdx;\
   ndtzdx=NB_INTERP * dtzdx;\
+  _drgbdx=(SAR_RND_TO_ZERO(drdx,6) << 22) & 0xFFC00000;		\
+  _drgbdx|=SAR_RND_TO_ZERO(dgdx,5) & 0x000007FF;		\
+  _drgbdx|=(SAR_RND_TO_ZERO(dbdx,7) << 12) & 0x001FF000; 	\
 }
 
 
@@ -278,14 +285,19 @@
 {						\
    zz=z >> ZB_POINT_Z_FRAC_BITS;		\
      if (ZCMP(zz,pz[_a])) {				\
+       tmp=rgb & 0xF81F07E0;			\
+	   unsigned int light = tmp | (tmp >> 16); \
        PIXEL pixel = *(PIXEL *)((char *)texture+ \
           (((t & 0x3FC00000) | (s & 0x003FC000)) >> (17 - PSZSH)));\
        unsigned int c_r = (pixel & 0xF800) >> 9;    \
        unsigned int c_g = (pixel & 0x07E0) >> 4;    \
        unsigned int c_b = (pixel & 0x001F) << 2;    \
-       c_r = (c_r + (p2->r>>9)); \
-       c_g = (c_g + (p2->g>>9)); \
-       c_b = (c_b + (p2->b>>9)); \
+       unsigned int l_r = (light & 0xF800) >> 9;    \
+       unsigned int l_g = (light & 0x07E0) >> 4;    \
+       unsigned int l_b = (light & 0x001F) << 2;    \
+       c_r = (c_r + l_r); \
+       c_g = (c_g + l_g); \
+       c_b = (c_b + l_b); \
        pixel = ((c_r & 0xF8) << 8) | ((c_g & 0xFC) << 3) | (c_b >> 3); \
        pp[_a]=pixel;            \
        pz[_a]=zz;				\
@@ -293,6 +305,7 @@
     z+=dzdx;					\
     s+=dsdx;					\
     t+=dtdx;					\
+    rgb=(rgb+drgbdx) & ( ~ 0x00200800);		\
 }
 
 #endif
@@ -301,7 +314,7 @@
 {						\
   register unsigned short *pz;		\
   register PIXEL *pp;		\
-  register unsigned int s,t,z,zz;	\
+  register unsigned int s,t,z,zz,rgb,drgbdx;	\
   register int n,dsdx,dtdx;		\
   float sz,tz,fz,zinv; \
   n=(x2>>16)-x1;                             \
@@ -312,6 +325,10 @@
   z=z1;						\
   sz=sz1;\
   tz=tz1;\
+  rgb=(r1 << 16) & 0xFFC00000;						   \
+  rgb|=(g1 >> 5) & 0x000007FF;						   \
+  rgb|=(b1 << 5) & 0x001FF000;						   \
+  drgbdx=_drgbdx;							   \
   while (n>=(NB_INTERP-1)) {						   \
     {\
       float ss,tt;\





More information about the Scummvm-git-logs mailing list