diff --git a/MechoSoma/VisGeneric/Graph3d/Graph3d_Software.cpp b/MechoSoma/VisGeneric/Graph3d/Graph3d_Software.cpp deleted file mode 100644 index abf9869..0000000 --- a/MechoSoma/VisGeneric/Graph3d/Graph3d_Software.cpp +++ /dev/null @@ -1,591 +0,0 @@ -#include "BaseDefine.h" -#include "xgraph.h" -#include "Graph3d_Software.h" -#include "Software16.h" - -inline int ReturnBit(int a) -{ - int count=0; - while((a>>=1)>=1) count++; - return count; -} - -sTextureSoftware::sTextureSoftware(int id,eTextureFormat fmtTex,int xTex,int yTex) -{ - ID=id; - _x=ReturnBit(xTex); _y=ReturnBit(yTex); - switch(format=fmtTex) - { - case TEXFMT_PAL8: - bpl=sizeof(unsigned char)<<_x; - break; - case TEXFMT_RGB565: - case TEXFMT_RGB555: - case TEXFMT_ARGB4444: - case TEXFMT_ARGB1555: - bpl=sizeof(unsigned short)<<_x; - break; - case TEXFMT_ARGB8888: - bpl=sizeof(unsigned int)<<_x; - break; - default: - assert(0); - } - buf=new unsigned char[bpl<<_y]; -} - -cGraph3dSoftware::cGraph3dSoftware() -{ - scr=0; - zBuffer=0; - GraphMode=GRAPH3D_MODE_NULL; - xScr=yScr=0; - xScrMin=yScrMin=xScrMax=yScrMax=0; - AlfaRef=1; - rPal16=gPal16=bPal16=0; - RenderState_zwrite=0; -} -cGraph3dSoftware::~cGraph3dSoftware() -{ - assert(TextureLibrary.BaseList==0); -} - -int cGraph3dSoftware::Init(int xscr,int yscr,int mode,HINSTANCE hInst,TCHAR *szTitle,HICON hIcon) -{ - int XGR_flag=0; - GraphMode=eModeGraph3d(mode); - xScr=xscr; yScr=yscr; - if(GraphMode&GRAPH3D_MODE_RGB16) XGR_flag|=XGR_HICOLOR; - else if(GraphMode&GRAPH3D_MODE_RGB32) XGR_flag|=XGR_HICOLOR; - if((GraphMode&GRAPH3D_MODE_WINDOW)==0) XGR_flag|=XGR_EXCLUSIVE; - if(XGR_Obj.ScreenBuf==0) - XGR_Init(xScr,yScr,XGR_flag); - scr=(unsigned short*)XGR_VIDEOBUF; - assert(GraphMode&GRAPH3D_MODE_Z16); - zBuffer=new unsigned short[xScr*yScr]; - if(GraphMode&GRAPH3D_MODE_Z16) InitColor16(); - SwitchRenderScene=-1; - SetRenderState(RENDERSTATE_ZWRITE,TRUE); - Fill(0,0,0); - return 0; -} -int cGraph3dSoftware::ReInit(int xscr,int yscr,int mode,HINSTANCE hInst,TCHAR *szTitle,HICON hIcon) -{ - int XGR_flag=0; - GraphMode=eModeGraph3d(mode); - xScr=xscr; yScr=yscr; - if(GraphMode&GRAPH3D_MODE_RGB16) XGR_flag|=XGR_HICOLOR; - else if(GraphMode&GRAPH3D_MODE_RGB32) XGR_flag|=XGR_HICOLOR; - if((GraphMode&GRAPH3D_MODE_WINDOW)==0) XGR_flag|=XGR_EXCLUSIVE; - XGR_Finit(); - if(XGR_Obj.ScreenBuf==0) - XGR_Init(xScr,yScr,XGR_flag); - scr=(unsigned short*)XGR_VIDEOBUF; - assert(GraphMode&GRAPH3D_MODE_Z16); - zBuffer=new unsigned short[xScr*yScr]; - if(GraphMode&GRAPH3D_MODE_Z16) InitColor16(); - SwitchRenderScene=-1; - SetRenderState(RENDERSTATE_ZWRITE,TRUE); - Fill(0,0,0); - return 0; -} -int cGraph3dSoftware::GetClipRect(int *xmin,int *ymin,int *xmax,int *ymax) -{ - *xmin=xScrMin; *ymin=yScrMin; - *xmax=xScrMax; *ymax=yScrMax; - return 0; -} -int cGraph3dSoftware::SetClipRect(int xmin,int ymin,int xmax,int ymax) -{ - assert((xmin<=xmax)&&(ymin<=ymax)&&(xmin>=0)&&(ymin>=0)&&(xmaxBase); - } - delete this; - return 0; -} -int cGraph3dSoftware::IsActive() -{ - return 1; -} - -int cGraph3dSoftware::BeginScene() -{ - if(SwitchRenderScene>0) return 1; - SwitchRenderScene=1; - return 0; -} -int cGraph3dSoftware::EndScene() -{ - if(SwitchRenderScene==0) return 1; - SwitchRenderScene=0; - MaterialMode=MAT_NULL; - return 0; -} -int cGraph3dSoftware::Fill(int r,int g,int b) -{ - if(SwitchRenderScene>0) EndScene(); - XGR_Fill16(GetColor(r,g,b)); - if(zBuffer) - { - unsigned long *tmp=(unsigned long*)zBuffer,*end=0; - if(GraphMode&GRAPH3D_MODE_Z32) end=tmp+xScr*yScr; - if(GraphMode&GRAPH3D_MODE_Z16) end=tmp+xScr*yScr/2; - while(tmp0) EndScene(); - XGR_Flush(0,0,xScr,yScr); - return 0; -} - -int cGraph3dSoftware::PolygonFan(void *vertex,int NumberVertex,int VertexFormat) -{ - if(!SwitchRenderScene) return 1; - return 0; -} -int cGraph3dSoftware::PolygonStrip(void *vertex,int NumberVertex,int VertexFormat) -{ - if(!SwitchRenderScene) return 1; - return 0; -} -int cGraph3dSoftware::PolygonIndexed(void *polygon,int NumberPolygon,void *vertex,int NumberVertex,int VertexFormat) -{ - if(!SwitchRenderScene) return 1; - assert(polygon&&vertex); - assert(VertexFormat==VERTEXFMT_FIX); - assert((NumberVertex<65536)&&(NumberVertex>0)&&(NumberPolygon>0)); - sVertexFix *vFix=(sVertexFix*)vertex; - sPolygonFix *pFix=(sPolygonFix*)polygon,*pFixEnd=&pFix[NumberPolygon]; - switch(MaterialMode) - { - case MAT_COLOR_MOD_DIFFUSE: - for(;pFixp1],&b=vFix[pFix->p2],&c=vFix[pFix->p3]; - SOFTWARE_DRAW_FIX(a,b,c,R16_ZTW_CMD,L16_ZTW_CMD); - } - break; - case MAT_COLOR_MOD_DIFFUSE_ALPHA_MOD_DIFFUSE: - for(;pFixp1],&b=vFix[pFix->p2],&c=vFix[pFix->p3]; - SOFTWARE_DRAW_FIX(a,b,c,R16_ZT_CMD_AMD,L16_ZT_CMD_AMD); - } - break; - case MAT_COLOR_MOD_TEXTURE1: - for(;pFixp1],&b=vFix[pFix->p2],&c=vFix[pFix->p3]; - SOFTWARE_DRAW_FIX(a,b,c,R16_ZTW_CMT1,L16_ZTW_CMT1); - } - break; - case MAT_COLOR_MOD_DIFFUSE_TEXTURE1: - for(;pFixp1],&b=vFix[pFix->p2],&c=vFix[pFix->p3]; - SOFTWARE_DRAW_FIX(a,b,c,R16_ZTW_CMDT1,L16_ZTW_CMDT1); - } - break; - case MAT_COLOR_MOD_DIFFUSE_TEXTURE1_ALPHA_MOD_DIFFUSE: - case MAT_COLOR_MOD_DIFFUSE_TEXTURE1_ALPHA_MOD_TEXTURE1: - case MAT_COLOR_MOD_DIFFUSE_TEXTURE1_ALPHA_MOD_DIFFUSE_TEXTURE1: - case MAT_COLOR_MOD_DIFFUSE_TEXTURE1_ALPHA_MASK_TEXTURE1: - case MAT_COLOR_MOD_DIFFUSE_TEXTURE1_ALPHA_MOD_DIFFUSE_MASK_TEXTURE1: - for(;pFixp1],&b=vFix[pFix->p2],&c=vFix[pFix->p3]; - SOFTWARE_DRAW_FIX(a,b,c,R16_ZT_CMDT1_AMDT1,L16_ZT_CMDT1_AMDT1); - } - break; - case MAT_COLOR_MOD_TEXTURE1|MAT_ALPHA_MOD_TEXTURE1: - for(;pFixp1],&b=vFix[pFix->p2],&c=vFix[pFix->p3]; - SOFTWARE_DRAW_FIX(a,b,c,R16_ZT_CMT1_AMT1,L16_ZT_CMT1_AMT1); - } - break; - case MAT_COLOR_MOD_DIFFUSE_TEXTURE1_ADD_SPECULAR: - for(;pFixp1],&b=vFix[pFix->p2],&c=vFix[pFix->p3]; - SOFTWARE_DRAW_FIX(a,b,c,R16_ZTW_CMDT1AS,L16_ZTW_CMDT1AS); - } - break; - case MAT_COLOR_MOD_DIFFUSE_ADD_SPECULAR: - for(;pFixp1],&b=vFix[pFix->p2],&c=vFix[pFix->p3]; - SOFTWARE_DRAW_FIX(a,b,c,R16_ZTW_CMDAS,L16_ZTW_CMDAS); - } - break; - case MAT_COLOR_MOD_DIFFUSE_TEXTURE1_ALPHA_MOD_DIFFUSE|MAT_COLOR_ADD_SPECULAR: - case MAT_COLOR_MOD_DIFFUSE_TEXTURE1_ALPHA_MOD_TEXTURE1|MAT_COLOR_ADD_SPECULAR: - case MAT_COLOR_MOD_DIFFUSE_TEXTURE1_ALPHA_MOD_DIFFUSE_TEXTURE1|MAT_COLOR_ADD_SPECULAR: - case MAT_COLOR_MOD_DIFFUSE_TEXTURE1_ALPHA_MASK_TEXTURE1|MAT_COLOR_ADD_SPECULAR: - case MAT_COLOR_MOD_DIFFUSE_TEXTURE1_ALPHA_MOD_DIFFUSE_MASK_TEXTURE1|MAT_COLOR_ADD_SPECULAR: - for(;pFixp1],&b=vFix[pFix->p2],&c=vFix[pFix->p3]; - SOFTWARE_DRAW_FIX(a,b,c,R16_ZT_CMDT1AS_AMDT1,L16_ZT_CMDT1AS_AMDT1); - } - break; - case MAT_COLOR_MOD_DIFFUSE_ALPHA_MOD_DIFFUSE|MAT_COLOR_ADD_SPECULAR: - for(;pFixp1],&b=vFix[pFix->p2],&c=vFix[pFix->p3]; - SOFTWARE_DRAW_FIX(a,b,c,R16_ZT_CMDAS_AMD,L16_ZT_CMDAS_AMD); - } - break; - default: - assert(0); - } - return 0; -} -int cGraph3dSoftware::PolygonIndexed2(void *polygon,int NumberPolygon,void *vertex,int NumberVertex,int hTexture,int hLightMap,int VertexFormat) -{ - return -1; -} - -int cGraph3dSoftware::SetTexture(int hTexture) -{ - assert(hTexture); - if(!SwitchRenderScene) return 1; - sTextureSoftware *Texture=GetTexture(hTexture)->Base; - texture=Texture->buf; - _xt1=Texture->_x; xst1_=(1<<_xt1)<_y; yst1_=(1<<_yt1)<Base; - *TextureBuffer=Texture->buf; - *BytePerLine=Texture->bpl; - return 0; -} -int cGraph3dSoftware::UnlockTexture(int hTexture) -{ - assert(hTexture); - sTextureSoftware *Texture=GetTexture(hTexture)->Base; - return 0; -} -int cGraph3dSoftware::CreateTexture(int x,int y,eTextureFormat TextureFormat) -{ - TextureLibrary.Attach(new sTextureSoftware(++TextureLibrary.NumberID,TextureFormat,x,y)); - return TextureLibrary.NumberID; -} -int cGraph3dSoftware::DeleteTexture(int hTexture) -{ - sTextureSoftwareList *TextureList=GetTexture(hTexture); - delete TextureList->Base; - TextureList->Base=0; - TextureLibrary.Detach(TextureList); - return 0; -} -int cGraph3dSoftware::SetMaterial(eMaterialMode material) -{ - if(!SwitchRenderScene) return 1; - MaterialMode=material; - return 0; -} -int cGraph3dSoftware::SetRenderState(eRenderStateOption option,int value) -{ - if(!SwitchRenderScene) return 1; - switch(option) - { - case RENDERSTATE_NULL: - return 1; - case RENDERSTATE_ZTEST: - break; - case RENDERSTATE_ZWRITE: - RenderState_zwrite=value; - break; - case RENDERSTATE_DITHER: - break; - case RENDERSTATE_SPECULAR: - break; - case RENDERSTATE_TEXTUREPERSPECTIVE: - break; - case RENDERSTATE_ZFUNC: - break; - case RENDERSTATE_ZBIAS: - break; - case RENDERSTATE_FILLMODE: - break; - case RENDERSTATE_CULLMODE: - break; - case RENDERSTATE_SHADEMODE: - break; - case RENDERSTATE_SUBPIXEL: - break; - case RENDERSTATE_ALPHATEST: - break; - case RENDERSTATE_ALPHAFUNC: - break; - case RENDERSTATE_ALPHAREF: - AlfaRef=value; - break; - case RENDERSTATE_ALPHABLEND: - break; - case RENDERSTATE_SRCBLEND: - break; - case RENDERSTATE_DESTBLEND: - break; - case RENDERSTATE_TEXTUREADDRESS: - break; - case RENDERSTATE_TEXTUREPOINT: - break; - case RENDERSTATE_TEXTURELINEAR: - break; - default: - assert(0); - }; - return 0; -} -int cGraph3dSoftware::GetTextureFormatData(sTextureFormatData &TexFmtData) -{ - switch(TexFmtData.TextureFormat) - { -/* case TEXFMT_PAL8: - return 1; - break; - case TEXFMT_RGB565: - TexFmtData.Set(5,6,5,0,11,5,0,0); - break; - case TEXFMT_RGB555: - TexFmtData.Set(5,5,5,0,10,5,0,0); - break; - case TEXFMT_ARGB1555: - TexFmtData.Set(5,5,5,1,10,5,0,15); - break; - case TEXFMT_ARGB4444: - TexFmtData.Set(4,4,4,4,8,4,0,12); - break; - case TEXFMT_ARGB8888: - TexFmtData.Set(8,8,8,8,16,8,0,24); - break; -*/ - case TEXFMT_RGB565: - case TEXFMT_RGB555: - case TEXFMT_ARGB4444: - case TEXFMT_ARGB1555: - case TEXFMT_ARGB8888: - TexFmtData.Set(TEXFMT_ARGB4444,4,4,4,4,8,4,0,12); - break; - default: - assert(0); - } - return 0; -} - -void* cGraph3dSoftware::GetZBuffer() -{ - return zBuffer; -} -void* cGraph3dSoftware::GetScrBuffer() -{ - return scr; -} -void* cGraph3dSoftware::GetInfo(int *graph3d) -{ - *graph3d=GRAPH3D_SOFTWARE; - return &GraphMode; -} -int cGraph3dSoftware::DrawLine(int x1,int y1,int x2,int y2,int r,int g,int b,int a) -{ - if((xScrMin<=x1)&&(x1>(8-rBitCount))<>(8-gBitCount))<>(8-bBitCount))<left,lprcRect->top,lprcRect->right-lprcRect->left,lprcRect->bottom-lprcRect->top); - return 0; -} -int cGraph3dSoftware::SetBackBufferColorKey(DWORD dwColor) -{ - return 0; -} -int cGraph3dSoftware::EnableBackBufferColorKey(BOOL bEnable) -{ - return 0; -} -int cGraph3dSoftware::QueryGammaSupport( MD3DGAMMASUPPORT *gmGammaSupport ) -{ - return 0; -} -int cGraph3dSoftware::CalibrateGamma( DDGAMMARAMP *lpRampData ) -{ - return 0; -} -int cGraph3dSoftware::SetAdjustedGamma( float fRGamma, float fGGamma, float fBGamma ) -{ - return 0; -} -int cGraph3dSoftware::GetAdjustedGamma( float *pfRGamma, float *pfGGamma, float *pfBGamma ) -{ - return 0; -} -int cGraph3dSoftware::SetGammaFxHighlight( float fRHilight, float fGHilight, float fBHilight ) -{ - return 0; -} -int cGraph3dSoftware::GetGammaFxHighlight( float *pfRHilight, float *pfGHilight, float *pfBHilight ) -{ - return 0; -} -int cGraph3dSoftware::SetGammaFxShadow( float fRShadow, float fGShadow, float fBShadow ) -{ - return 0; -} -int cGraph3dSoftware::GetGammaFxShadow( float *pfRShadow, float *pfGShadow, float *pfBShadow ) -{ - return 0; -} -int cGraph3dSoftware::GetWindowHandle( HWND *hWnd ) -{ - *hWnd=(HWND)xtGet_hWnd(); - return 0; -} -int cGraph3dSoftware::OutText(int x,int y,char *string,int r,int g,int b,int a) -{ - XGR_OutText(x,y,GetColor(r,g,b),string); - return 1; -} -int cGraph3dSoftware::SetViewColor(int r,int g,int b,int a) -{ - return 1; -} -int cGraph3dSoftware::NullClipRect() -{ - return 1; -} diff --git a/MechoSoma/VisGeneric/Graph3d/Graph3d_Software.h b/MechoSoma/VisGeneric/Graph3d/Graph3d_Software.h deleted file mode 100644 index 83200cf..0000000 --- a/MechoSoma/VisGeneric/Graph3d/Graph3d_Software.h +++ /dev/null @@ -1,177 +0,0 @@ -#ifndef __SOFTWARE_H__ -#define __SOFTWARE_H__ - -#include "IGraph3d.h" -#include "BaseClass.h" - -#define GRAPH3D_SOFTWARE_TONE_MIN -32 -#define GRAPH3D_SOFTWARE_TONE_MAX 512 - -struct sTextureSoftware -{ - unsigned int ID; - eTextureFormat format; - int _x,_y; // битовый размер текстуры - int bpl; // байт на строку текстуры - void *buf; - - sTextureSoftware(int id,eTextureFormat fmtTex,int xTex,int yTex); - sTextureSoftware() { buf=0; format=TEXFMT_NULL; } - ~sTextureSoftware() { if(buf) delete buf; buf=0; } -}; - -typedef cBaseList sTextureSoftwareList; -typedef cBaseDispatcher sTextureSoftwareLibrary; - -class cGraph3dSoftware : public cInterfaceGraph3d -{ -public: - cGraph3dSoftware(); - ~cGraph3dSoftware(); - - virtual int Init(int xScr,int yScr,int mode,HINSTANCE hInst,TCHAR *szTitle,HICON hIcon=NULL); - virtual int ReInit(int xScr,int yScr,int mode,HINSTANCE hInst,TCHAR *szTitle,HICON hIcon=NULL); - virtual int GetClipRect(int *xmin,int *ymin,int *xmax,int *ymax); - virtual int SetClipRect(int xmin,int ymin,int xmax,int ymax); - virtual int NullClipRect(); - virtual int Release(); - virtual int IsActive(); - - virtual int BeginScene(); - virtual int EndScene(); - virtual int Fill(int r,int g,int b); - virtual int Flush(); - - virtual int SetMaterial(eMaterialMode material); - virtual int SetRenderState(eRenderStateOption option,int value); - virtual int GetTextureFormatData(sTextureFormatData &TexFmtData); - - virtual int PolygonFan(void *vertex,int NumberVertex,int VertexFormat=VERTEXFMT_FIX); - virtual int PolygonStrip(void *vertex,int NumberVertex,int VertexFormat=VERTEXFMT_FIX); - virtual int PolygonIndexed(void *polygon,int NumberPolygon,void *vertex,int NumberVertex,int VertexFormat=VERTEXFMT_FIX); - virtual int PolygonIndexed2(void *polygon,int NumberPolygon,void *vertex,int NumberVertex,int hTexture,int hLightMap,int VertexFormat=VERTEXFMT_FIX); - - virtual int SetTexture(int hTexture); - virtual int LockTexture(int hTexture,void **TextureBuffer,int *BytePerLine); - virtual int UnlockTexture(int hTexture); - virtual int CreateTexture(int x,int y,eTextureFormat TextureFormat); - virtual int DeleteTexture(int hTexture); - - // начало прочие функции - virtual int CreateSprite(DWORD dwWidth,DWORD dwHeight,DWORD dwFormat, - DWORD dwFlags,DWORD* lpdwHandle ); - virtual int CreateChildSprite(DWORD dwParentHandle,DWORD dwLeft,DWORD dwTop, - DWORD dwWidth,DWORD dwHeight,DWORD* lpdwHandle ); - virtual int DeleteSprite(DWORD dwHandle ); - virtual int LockSprite(DWORD dwHandle,void **lplpSprite,DWORD *lplpPitch ); - virtual int UnlockSprite(DWORD dwHandle ); - virtual int SetSpriteMode(DWORD dwHandle,DWORD dwMode,DWORD dwValue ); - virtual int DrawSprite(DWORD dwHandle,float dvX,float dvY,DWORD dwOrigin, - float dvScaleX,float dvScaleY,float dvRotate ); - virtual int DrawSpriteZ(DWORD dwHandle,float dvX,float dvY,float dvZ, - DWORD dwOrigin,float dvScaleX,float dvScaleY, - float dvRotate ); - - virtual int CreateBackBuffer(); - virtual int ReleaseBackBuffer(); - virtual int GetBackBufferFormat(DWORD *dwFormat); - virtual int LockBackBuffer(void **lplpSurface,DWORD *lpdwPitch); - virtual int UnlockBackBuffer(); - virtual int FlushBackBuffer(RECT *lprcRect); - virtual int SetBackBufferColorKey(DWORD dwColor); - virtual int EnableBackBufferColorKey(BOOL bEnable); - - virtual int QueryGammaSupport( MD3DGAMMASUPPORT *gmGammaSupport); - virtual int CalibrateGamma( DDGAMMARAMP *lpRampData); - virtual int SetAdjustedGamma( float fRGamma, float fGGamma, float fBGamma); - virtual int GetAdjustedGamma( float *pfRGamma, float *pfGGamma, float *pfBGamma); - virtual int SetGammaFxHighlight( float fRHilight, float fGHilight, float fBHilight); - virtual int GetGammaFxHighlight( float *pfRHilight, float *pfGHilight, float *pfBHilight); - virtual int SetGammaFxShadow( float fRShadow, float fGShadow, float fBShadow); - virtual int GetGammaFxShadow( float *pfRShadow, float *pfGShadow, float *pfBShadow); - - virtual int ScreenShot(VOID *lpBuffer,DWORD dwSize); - virtual int GetWindowHandle( HWND *hWnd ); - // конец прочие функции - virtual int SetViewColor(int r,int g,int b,int a); - - virtual int GetSizeX() { return xScr; } - virtual int GetSizeY() { return yScr; } - virtual void* GetZBuffer(); - virtual void* GetScrBuffer(); - virtual void* GetInfo(int *graph3d); - virtual int GetInfo(int *xScr,int *yScr,int *mode) { *xScr=this->xScr, *yScr=this->yScr; *mode=GraphMode; return 0; } - virtual int DrawLine(int x1,int y1,int x2,int y2,int r,int g,int b,int a); - virtual int DrawPixel(int x1,int y1,int r,int g,int b,int a); - virtual int DrawRectangle(int x,int y,int dx,int dy,int r,int g,int b,int a,int flag); - virtual int OutText(int x,int y,char *string,int r,int g,int b,int a); - virtual int DrawLine(float x1,float y1,float z1,float x2,float y2,float z2,int r,int g,int b,int a); -private: - eModeGraph3d GraphMode; - void *scr,*zBuffer; - int xScr,yScr; - int xScrMin,yScrMin,xScrMax,yScrMax; - int rBitShift,gBitShift,bBitShift; - int rBitCount,gBitCount,bBitCount; - int SwitchRenderScene; - eMaterialMode MaterialMode; - sTextureSoftwareLibrary TextureLibrary; - int RenderState_zwrite; - - inline sTextureSoftwareList* GetTexture(unsigned int hTexture) { for(sTextureSoftwareList *start=TextureLibrary.BaseList;start;start=start->next) if(start->Base->ID==hTexture) return start; assert(0); return 0; } - inline int GetColor(int r,int g,int b) { if(r>255) r=255; if(g>255) g=255; if(b>255) b=255; return ((r>>(8-rBitCount))<>(8-gBitCount))<>(8-bBitCount))<=yScrMax) - yec=(yScrMax-1)*xScr; - if(ye3=yScrMax) - yee=(yScrMax-1)*xScr; - else yee=ye3*xScr; - for(;yeb>PREC_DRAW,xee=xee_>>PREC_DRAW; - int l=yeb+xeb, l_end=yeb+xee, z_=zb_; - int r_=rb_, g_=gb_, b_=bb_; - int dxe=xee-xeb; if(dxe==0) dxe=1; - int dz_=(ze_-zb_)/dxe; - if(xebxScrMax) l_end=yeb+xScrMax; - - for(;l>PREC_DRAW)<=zBuffer[l]) - { - scr[l]=rPal16[r_>>PREC_DRAW]+gPal16[g_>>PREC_DRAW]+bPal16[b_>>PREC_DRAW];; - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - r_+=dr_,g_+=dg_,b_+=db_; - } - rb_+=dr31_,gb_+=dg31_,bb_+=db31_; - } - dr_=dr1_,dg_=dg1_,db_=db1_; - } -} -void cGraph3dSoftware::L16_ZTW_CMD(void *pscr,void *pzBuffer) -{ - SET_COORD_MDRGBA(v1,v2,v3); - unsigned short *scr=(unsigned short*)pscr,*zBuffer=(unsigned short*)pzBuffer; - long dye31=ye3-ye1, dye21=ye2-ye1, dye32=ye3-ye2; - long dxe31_=xe3-xe1, dz31_=z3-z1, dxe21_=xe2-xe1, dz21_=z2-z1, dxe32_=xe3-xe2, dz32_=z3-z2, - xeb_,xec_,xee_, dxee_,l, zb_,ze_,zc_,dze_; - long dr31_=mr3-mr1, dg31_=mg3-mg1, db31_=mb3-mb1, - dr21_=mr2-mr1, dg21_=mg2-mg1, db21_=mb2-mb1, - dr32_=mr3-mr2, dg32_=mg3-mg2, db32_=mb3-mb2, - dr_,dg_,db_,dr1_,dg1_,db1_; - l=dxe31_*dye32-dxe32_*dye31; - dr1_=((dr32_*dye31-dr31_*dye32)/l); - dg1_=((dg32_*dye31-dg31_*dye32)/l); - db1_=((db32_*dye31-db31_*dye32)/l); - l=dxe31_*dye21-dxe21_*dye31; - dr_=((dr21_*dye31-dr31_*dye21)/l); - dg_=((dg21_*dye31-dg31_*dye21)/l); - db_=((db21_*dye31-db31_*dye21)/l); - if(dye31) { dxe31_=(dxe31_<=yScrMax) - yec=(yScrMax-1)*xScr; - if(ye3=yScrMax) - yee=(yScrMax-1)*xScr; - else yee=ye3*xScr; - for(;yeb>PREC_DRAW)-1,xee=xee_>>PREC_DRAW; - int l=yeb+xeb, l_end=yeb+xee, z_=zb_; - long r_=rb_, g_=gb_, b_=bb_; - int dxe=xee-xeb; if(dxe==0) dxe=1; - int dz_=(zb_-ze_)/dxe; - if(xeb>(xScrMax-1)) //--- - { - z_+=(xeb-xScrMax+1)*dz_; //--- - r_+=(xeb-xScrMax+1)*dr_; - g_+=(xeb-xScrMax+1)*dg_; - b_+=(xeb-xScrMax+1)*db_; - l=yeb+(xScrMax-1); //--- - } - if(xee=l_end; z_+=dz_,l--) //--- - { - if((unsigned short)(z_>>PREC_DRAW)<=zBuffer[l]) - { - scr[l]=rPal16[r_>>PREC_DRAW]+gPal16[g_>>PREC_DRAW]+bPal16[b_>>PREC_DRAW];; - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - r_+=dr_,g_+=dg_,b_+=db_; - } - rb_+=dr31_,gb_+=dg31_,bb_+=db31_; - } - dr_=dr1_,dg_=dg1_,db_=db1_; - } -} - -void cGraph3dSoftware::R16_ZTW_CMDAS(void *pscr,void *pzBuffer) -{ - SET_COORD_MDRGBA_SRGBA(v1,v2,v3); - unsigned short *scr=(unsigned short*)pscr,*zBuffer=(unsigned short*)pzBuffer; - long dye31=ye3-ye1, dye21=ye2-ye1, dye32=ye3-ye2; - long dxe31_=xe3-xe1, dz31_=z3-z1, dxe21_=xe2-xe1, dz21_=z2-z1, dxe32_=xe3-xe2, dz32_=z3-z2, - xeb_,xec_,xee_, dxee_,l, zb_,ze_,zc_,dze_; - long dr31_=mr3-mr1+(ar3-ar1), dg31_=mg3-mg1+(ag3-ag1), db31_=mb3-mb1+(ab3-ab1), - dr21_=mr2-mr1+(ar2-ar1), dg21_=mg2-mg1+(ag2-ag1), db21_=mb2-mb1+(ab2-ab1), - dr32_=mr3-mr2+(ar3-ar2), dg32_=mg3-mg2+(ag3-ag2), db32_=mb3-mb2+(ab3-ab2), - dr_,dg_,db_,dr1_,dg1_,db1_; - l=dxe32_*dye31-dxe31_*dye32; - dr1_=((dr32_*dye31-dr31_*dye32)/l); - dg1_=((dg32_*dye31-dg31_*dye32)/l); - db1_=((db32_*dye31-db31_*dye32)/l); - l=dxe21_*dye31-dxe31_*dye21; - dr_=((dr21_*dye31-dr31_*dye21)/l); - dg_=((dg21_*dye31-dg31_*dye21)/l); - db_=((db21_*dye31-db31_*dye21)/l); - if(dye31) { dxe31_=(dxe31_<=yScrMax) - yec=(yScrMax-1)*xScr; - if(ye3=yScrMax) - yee=(yScrMax-1)*xScr; - else yee=ye3*xScr; - for(;yeb>PREC_DRAW,xee=xee_>>PREC_DRAW; - int l=yeb+xeb, l_end=yeb+xee, z_=zb_; - int r_=rb_, g_=gb_, b_=bb_; - int dxe=xee-xeb; if(dxe==0) dxe=1; - int dz_=(ze_-zb_)/dxe; - if(xebxScrMax) l_end=yeb+xScrMax; - - for(;l>PREC_DRAW)<=zBuffer[l]) - { - unsigned int aa=rPal16[r_>>PREC_DRAW]+gPal16[g_>>PREC_DRAW]+bPal16[b_>>PREC_DRAW];; - assert(aa<=65535); - scr[l]=aa; - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - r_+=dr_,g_+=dg_,b_+=db_; - } - rb_+=dr31_,gb_+=dg31_,bb_+=db31_; - } - dr_=dr1_,dg_=dg1_,db_=db1_; - } -} -void cGraph3dSoftware::L16_ZTW_CMDAS(void *pscr,void *pzBuffer) -{ - SET_COORD_MDRGBA_SRGBA(v1,v2,v3); - unsigned short *scr=(unsigned short*)pscr,*zBuffer=(unsigned short*)pzBuffer; - long dye31=ye3-ye1, dye21=ye2-ye1, dye32=ye3-ye2; - long dxe31_=xe3-xe1, dz31_=z3-z1, dxe21_=xe2-xe1, dz21_=z2-z1, dxe32_=xe3-xe2, dz32_=z3-z2, - xeb_,xec_,xee_, dxee_,l, zb_,ze_,zc_,dze_; - long dr31_=mr3-mr1+(ar3-ar1), dg31_=mg3-mg1+(ag3-ag1), db31_=mb3-mb1+(ab3-ab1), - dr21_=mr2-mr1+(ar2-ar1), dg21_=mg2-mg1+(ag2-ag1), db21_=mb2-mb1+(ab2-ab1), - dr32_=mr3-mr2+(ar3-ar2), dg32_=mg3-mg2+(ag3-ag2), db32_=mb3-mb2+(ab3-ab2), - dr_,dg_,db_,dr1_,dg1_,db1_; - l=dxe31_*dye32-dxe32_*dye31; - dr1_=((dr32_*dye31-dr31_*dye32)/l); - dg1_=((dg32_*dye31-dg31_*dye32)/l); - db1_=((db32_*dye31-db31_*dye32)/l); - l=dxe31_*dye21-dxe21_*dye31; - dr_=((dr21_*dye31-dr31_*dye21)/l); - dg_=((dg21_*dye31-dg31_*dye21)/l); - db_=((db21_*dye31-db31_*dye21)/l); - if(dye31) { dxe31_=(dxe31_<=yScrMax) - yec=(yScrMax-1)*xScr; - if(ye3=yScrMax) - yee=(yScrMax-1)*xScr; - else yee=ye3*xScr; - for(;yeb>PREC_DRAW)-1,xee=xee_>>PREC_DRAW; - int l=yeb+xeb, l_end=yeb+xee, z_=zb_; - long r_=rb_, g_=gb_, b_=bb_; - int dxe=xee-xeb; if(dxe==0) dxe=1; - int dz_=(zb_-ze_)/dxe; - if(xeb>(xScrMax-1)) //--- - { - z_+=(xeb-xScrMax+1)*dz_; //--- - r_+=(xeb-xScrMax+1)*dr_; - g_+=(xeb-xScrMax+1)*dg_; - b_+=(xeb-xScrMax+1)*db_; - l=yeb+(xScrMax-1); //--- - } - if(xee=l_end; z_+=dz_,l--) //--- - { - if((unsigned short)(z_>>PREC_DRAW)<=zBuffer[l]) - { - scr[l]=rPal16[r_>>PREC_DRAW]+gPal16[g_>>PREC_DRAW]+bPal16[b_>>PREC_DRAW];; - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - r_+=dr_,g_+=dg_,b_+=db_; - } - rb_+=dr31_,gb_+=dg31_,bb_+=db31_; - } - dr_=dr1_,dg_=dg1_,db_=db1_; - } -} - -void cGraph3dSoftware::R16_ZT_CMD_AMD(void *pscr,void *pzBuffer) -{ - SET_COORD_MDRGBA(v1,v2,v3); - unsigned short *scr=(unsigned short*)pscr,*zBuffer=(unsigned short*)pzBuffer; - long dye31=ye3-ye1, dye21=ye2-ye1, dye32=ye3-ye2; - long dxe31_=xe3-xe1, dz31_=z3-z1, dxe21_=xe2-xe1, dz21_=z2-z1, dxe32_=xe3-xe2, dz32_=z3-z2, - xeb_,xec_,xee_, dxee_,l, zb_,ze_,zc_,dze_; - long dr31_=mr3-mr1, dg31_=mg3-mg1, db31_=mb3-mb1, da31_=ma3-ma1, - dr21_=mr2-mr1, dg21_=mg2-mg1, db21_=mb2-mb1, da21_=ma2-ma1, - dr32_=mr3-mr2, dg32_=mg3-mg2, db32_=mb3-mb2, da32_=ma3-ma2, - dr_,dg_,db_,da_,dr1_,dg1_,db1_,da1_; - l=dxe32_*dye31-dxe31_*dye32; - dr1_=((dr32_*dye31-dr31_*dye32)/l); - dg1_=((dg32_*dye31-dg31_*dye32)/l); - db1_=((db32_*dye31-db31_*dye32)/l); - da1_=((da32_*dye31-da31_*dye32)/l); - l=dxe21_*dye31-dxe31_*dye21; - dr_=((dr21_*dye31-dr31_*dye21)/l); - dg_=((dg21_*dye31-dg31_*dye21)/l); - db_=((db21_*dye31-db31_*dye21)/l); - da_=((da21_*dye31-da31_*dye21)/l); - if(dye31) { dxe31_=(dxe31_<=yScrMax) yec=(yScrMax-1)*xScr; - if(ye3=yScrMax) yee=(yScrMax-1)*xScr; - else yee=ye3*xScr; - for(;yeb>PREC_DRAW,xee=xee_>>PREC_DRAW; - int l=yeb+xeb, l_end=yeb+xee, z_=zb_; - int r_=rb_,g_=gb_,b_=bb_,a_=ab_; - int dxe=xee-xeb; if(dxe==0) dxe=1; - int dz_=(ze_-zb_)/dxe; - if(xebxScrMax) l_end=yeb+xScrMax; - - switch(ScrTextureFormat) - { - case TEXFMT_RGB565: - for(;l>PREC_DRAW)<=zBuffer[l]) - { - int Alfa=a_>>PREC_DRAW; - int ColorScr=scr[l]; - int rScr=(ColorScr&(31<<11))>>8; - int gScr=(ColorScr&(63<<5))>>3; - int bScr=(ColorScr&(31<<0))<<3; - int r=rScr+((Alfa*((r_>>PREC_DRAW)-rScr))>>8); - int g=gScr+((Alfa*((g_>>PREC_DRAW)-gScr))>>8); - int b=bScr+((Alfa*((b_>>PREC_DRAW)-bScr))>>8); - scr[l]=rPal16[r]+gPal16[g]+bPal16[b]; - if(RenderState_zwrite) - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - r_+=dr_,g_+=dg_,b_+=db_,a_+=da_; - } - break; - case TEXFMT_RGB555: - for(;l>PREC_DRAW)<=zBuffer[l]) - { - int Alfa=a_>>PREC_DRAW; - int ColorScr=scr[l]; - int rScr=(ColorScr&(31<<10))>>7; - int gScr=(ColorScr&(31<<5))>>2; - int bScr=(ColorScr&(31<<0))<<3; - int r=rScr+((Alfa*((r_>>PREC_DRAW)-rScr))>>8); - int g=gScr+((Alfa*((g_>>PREC_DRAW)-gScr))>>8); - int b=bScr+((Alfa*((b_>>PREC_DRAW)-bScr))>>8); - scr[l]=rPal16[r]+gPal16[g]+bPal16[b]; - if(RenderState_zwrite) - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - r_+=dr_,g_+=dg_,b_+=db_,a_+=da_; - } - break; - default: - assert(0); - } - rb_+=dr31_,gb_+=dg31_,bb_+=db31_,ab_+=da31_; - } - dr_=dr1_,dg_=dg1_,db_=db1_,da_=da1_; - } -} -void cGraph3dSoftware::L16_ZT_CMD_AMD(void *pscr,void *pzBuffer) -{ - SET_COORD_MDRGBA(v1,v2,v3); - unsigned short *scr=(unsigned short*)pscr,*zBuffer=(unsigned short*)pzBuffer; - long dye31=ye3-ye1, dye21=ye2-ye1, dye32=ye3-ye2; - long dxe31_=xe3-xe1, dz31_=z3-z1, dxe21_=xe2-xe1, dz21_=z2-z1, dxe32_=xe3-xe2, dz32_=z3-z2, - xeb_,xec_,xee_, dxee_,l, zb_,ze_,zc_,dze_; - long dr31_=mr3-mr1, dg31_=mg3-mg1, db31_=mb3-mb1, da31_=ma3-ma1, - dr21_=mr2-mr1, dg21_=mg2-mg1, db21_=mb2-mb1, da21_=ma2-ma1, - dr32_=mr3-mr2, dg32_=mg3-mg2, db32_=mb3-mb2, da32_=ma3-ma2, - dr_,dg_,db_,da_,dr1_,dg1_,db1_,da1_; - l=dxe31_*dye32-dxe32_*dye31; - dr1_=((dr32_*dye31-dr31_*dye32)/l); - dg1_=((dg32_*dye31-dg31_*dye32)/l); - db1_=((db32_*dye31-db31_*dye32)/l); - da1_=((da32_*dye31-da31_*dye32)/l); - l=dxe31_*dye21-dxe21_*dye31; - dr_=((dr21_*dye31-dr31_*dye21)/l); - dg_=((dg21_*dye31-dg31_*dye21)/l); - db_=((db21_*dye31-db31_*dye21)/l); - da_=((da21_*dye31-da31_*dye21)/l); - if(dye31) { dxe31_=(dxe31_<=yScrMax) yec=(yScrMax-1)*xScr; - if(ye3=yScrMax) yee=(yScrMax-1)*xScr; - else yee=ye3*xScr; - for(;yeb>PREC_DRAW)-1,xee=xee_>>PREC_DRAW; - int l=yeb+xeb, l_end=yeb+xee, z_=zb_; - long r_=rb_,g_=gb_,b_=bb_,a_=ab_; - int dxe=xee-xeb; if(dxe==0) dxe=1; - int dz_=(zb_-ze_)/dxe; - if(xeb>(xScrMax-1)) //--- - { - z_+=(xeb-xScrMax+1)*dz_; //--- - r_+=(xeb-xScrMax+1)*dr_; - g_+=(xeb-xScrMax+1)*dg_; - b_+=(xeb-xScrMax+1)*db_; - a_+=(xeb-xScrMax+1)*da_; - l=yeb+(xScrMax-1); //--- - } - if(xee=l_end; z_+=dz_,l--) //--- - { - if((unsigned short)(z_>>PREC_DRAW)<=zBuffer[l]) - { - int Alfa=a_>>PREC_DRAW; - int ColorScr=scr[l]; - int rScr=(ColorScr&(31<<11))>>8; - int gScr=(ColorScr&(63<<5))>>3; - int bScr=(ColorScr&(31<<0))<<3; - int r=rScr+((Alfa*((r_>>PREC_DRAW)-rScr))>>8); - int g=gScr+((Alfa*((g_>>PREC_DRAW)-gScr))>>8); - int b=bScr+((Alfa*((b_>>PREC_DRAW)-bScr))>>8); - scr[l]=rPal16[r]+gPal16[g]+bPal16[b]; - if(RenderState_zwrite) - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - r_+=dr_,g_+=dg_,b_+=db_,a_+=da_; - } - break; - case TEXFMT_RGB555: - for(;l>=l_end; z_+=dz_,l--) //--- - { - if((unsigned short)(z_>>PREC_DRAW)<=zBuffer[l]) - { - int Alfa=a_>>PREC_DRAW; - int ColorScr=scr[l]; - int rScr=(ColorScr&(31<<10))>>7; - int gScr=(ColorScr&(31<<5))>>2; - int bScr=(ColorScr&(31<<0))<<3; - int r=rScr+((Alfa*((r_>>PREC_DRAW)-rScr))>>8); - int g=gScr+((Alfa*((g_>>PREC_DRAW)-gScr))>>8); - int b=bScr+((Alfa*((b_>>PREC_DRAW)-bScr))>>8); - scr[l]=rPal16[r]+gPal16[g]+bPal16[b]; - if(RenderState_zwrite) - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - r_+=dr_,g_+=dg_,b_+=db_,a_+=da_; - } - break; - default: - assert(0); - } - rb_+=dr31_,gb_+=dg31_,bb_+=db31_,ab_+=da31_; - } - dr_=dr1_,dg_=dg1_,db_=db1_,da_=da1_; - } -} -void cGraph3dSoftware::R16_ZT_CAD(void *pscr,void *pzBuffer) -{ - SET_COORD_MDRGBA(v1,v2,v3); - unsigned short *scr=(unsigned short*)pscr,*zBuffer=(unsigned short*)pzBuffer; - long dye31=ye3-ye1, dye21=ye2-ye1, dye32=ye3-ye2; - long dxe31_=xe3-xe1, dz31_=z3-z1, dxe21_=xe2-xe1, dz21_=z2-z1, dxe32_=xe3-xe2, dz32_=z3-z2, - xeb_,xec_,xee_, dxee_,l, zb_,ze_,zc_,dze_; - long dr31_=mr3-mr1, dg31_=mg3-mg1, db31_=mb3-mb1, - dr21_=mr2-mr1, dg21_=mg2-mg1, db21_=mb2-mb1, - dr32_=mr3-mr2, dg32_=mg3-mg2, db32_=mb3-mb2, - dr_,dg_,db_,dr1_,dg1_,db1_; - l=dxe32_*dye31-dxe31_*dye32; - dr1_=((dr32_*dye31-dr31_*dye32)/l); - dg1_=((dg32_*dye31-dg31_*dye32)/l); - db1_=((db32_*dye31-db31_*dye32)/l); - l=dxe21_*dye31-dxe31_*dye21; - dr_=((dr21_*dye31-dr31_*dye21)/l); - dg_=((dg21_*dye31-dg31_*dye21)/l); - db_=((db21_*dye31-db31_*dye21)/l); - if(dye31) { dxe31_=(dxe31_<=yScrMax) yec=(yScrMax-1)*xScr; - if(ye3=yScrMax) yee=(yScrMax-1)*xScr; - else yee=ye3*xScr; - for(;yeb>PREC_DRAW,xee=xee_>>PREC_DRAW; - int l=yeb+xeb, l_end=yeb+xee, z_=zb_; - int r_=rb_,g_=gb_,b_=bb_; - int dxe=xee-xeb; if(dxe==0) dxe=1; - int dz_=(ze_-zb_)/dxe; - if(xebxScrMax) l_end=yeb+xScrMax; - - switch(ScrTextureFormat) - { - case TEXFMT_RGB565: - for(;l>PREC_DRAW)<=zBuffer[l]) - { - int ColorScr=scr[l]; - int rScr=(ColorScr&(31<<11))>>8; - int gScr=(ColorScr&(63<<5))>>3; - int bScr=(ColorScr&(31<<0))<<3; - int r=rScr+(r_>>PREC_DRAW); - int g=gScr+(g_>>PREC_DRAW); - int b=bScr+(b_>>PREC_DRAW); - scr[l]=rPal16[r]+gPal16[g]+bPal16[b]; - if(RenderState_zwrite) - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - r_+=dr_,g_+=dg_,b_+=db_; - } - break; - case TEXFMT_RGB555: - for(;l>PREC_DRAW)<=zBuffer[l]) - { - int ColorScr=scr[l]; - int rScr=(ColorScr&(31<<10))>>7; - int gScr=(ColorScr&(31<<5))>>2; - int bScr=(ColorScr&(31<<0))<<3; - int r=rScr+(r_>>PREC_DRAW); - int g=gScr+(g_>>PREC_DRAW); - int b=bScr+(b_>>PREC_DRAW); - scr[l]=rPal16[r]+gPal16[g]+bPal16[b]; - if(RenderState_zwrite) - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - r_+=dr_,g_+=dg_,b_+=db_; - } - break; - default: - assert(0); - } - rb_+=dr31_,gb_+=dg31_,bb_+=db31_; - } - dr_=dr1_,dg_=dg1_,db_=db1_; - } -} -void cGraph3dSoftware::L16_ZT_CAD(void *pscr,void *pzBuffer) -{ - SET_COORD_MDRGBA(v1,v2,v3); - unsigned short *scr=(unsigned short*)pscr,*zBuffer=(unsigned short*)pzBuffer; - long dye31=ye3-ye1, dye21=ye2-ye1, dye32=ye3-ye2; - long dxe31_=xe3-xe1, dz31_=z3-z1, dxe21_=xe2-xe1, dz21_=z2-z1, dxe32_=xe3-xe2, dz32_=z3-z2, - xeb_,xec_,xee_, dxee_,l, zb_,ze_,zc_,dze_; - long dr31_=mr3-mr1, dg31_=mg3-mg1, db31_=mb3-mb1, - dr21_=mr2-mr1, dg21_=mg2-mg1, db21_=mb2-mb1, - dr32_=mr3-mr2, dg32_=mg3-mg2, db32_=mb3-mb2, - dr_,dg_,db_,dr1_,dg1_,db1_; - l=dxe31_*dye32-dxe32_*dye31; - dr1_=((dr32_*dye31-dr31_*dye32)/l); - dg1_=((dg32_*dye31-dg31_*dye32)/l); - db1_=((db32_*dye31-db31_*dye32)/l); - l=dxe31_*dye21-dxe21_*dye31; - dr_=((dr21_*dye31-dr31_*dye21)/l); - dg_=((dg21_*dye31-dg31_*dye21)/l); - db_=((db21_*dye31-db31_*dye21)/l); - if(dye31) { dxe31_=(dxe31_<=yScrMax) yec=(yScrMax-1)*xScr; - if(ye3=yScrMax) yee=(yScrMax-1)*xScr; - else yee=ye3*xScr; - for(;yeb>PREC_DRAW)-1,xee=xee_>>PREC_DRAW; - int l=yeb+xeb, l_end=yeb+xee, z_=zb_; - long r_=rb_,g_=gb_,b_=bb_; - int dxe=xee-xeb; if(dxe==0) dxe=1; - int dz_=(zb_-ze_)/dxe; - if(xeb>(xScrMax-1)) //--- - { - z_+=(xeb-xScrMax+1)*dz_; //--- - r_+=(xeb-xScrMax+1)*dr_; - g_+=(xeb-xScrMax+1)*dg_; - b_+=(xeb-xScrMax+1)*db_; - l=yeb+(xScrMax-1); //--- - } - if(xee=l_end; z_+=dz_,l--) //--- - { - if((unsigned short)(z_>>PREC_DRAW)<=zBuffer[l]) - { - int ColorScr=scr[l]; - int rScr=(ColorScr&(31<<11))>>8; - int gScr=(ColorScr&(63<<5))>>3; - int bScr=(ColorScr&(31<<0))<<3; - int r=rScr+(r_>>PREC_DRAW); - int g=gScr+(g_>>PREC_DRAW); - int b=bScr+(b_>>PREC_DRAW); - scr[l]=rPal16[r]+gPal16[g]+bPal16[b]; - if(RenderState_zwrite) - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - r_+=dr_,g_+=dg_,b_+=db_; - } - break; - case TEXFMT_RGB555: - for(;l>=l_end; z_+=dz_,l--) //--- - { - if((unsigned short)(z_>>PREC_DRAW)<=zBuffer[l]) - { - int ColorScr=scr[l]; - int rScr=(ColorScr&(31<<10))>>7; - int gScr=(ColorScr&(31<<5))>>2; - int bScr=(ColorScr&(31<<0))<<3; - int r=rScr+(r_>>PREC_DRAW); - int g=gScr+(g_>>PREC_DRAW); - int b=bScr+(b_>>PREC_DRAW); - scr[l]=rPal16[r]+gPal16[g]+bPal16[b]; - if(RenderState_zwrite) - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - r_+=dr_,g_+=dg_,b_+=db_; - } - break; - default: - assert(0); - } - rb_+=dr31_,gb_+=dg31_,bb_+=db31_; - } - dr_=dr1_,dg_=dg1_,db_=db1_; - } -} - -void cGraph3dSoftware::R16_ZT_CMDAS_AMD(void *pscr,void *pzBuffer) -{ - SET_COORD_MDRGBA_SRGBA(v1,v2,v3); - unsigned short *scr=(unsigned short*)pscr,*zBuffer=(unsigned short*)pzBuffer; - long dye31=ye3-ye1, dye21=ye2-ye1, dye32=ye3-ye2; - long dxe31_=xe3-xe1, dz31_=z3-z1, dxe21_=xe2-xe1, dz21_=z2-z1, dxe32_=xe3-xe2, dz32_=z3-z2, - xeb_,xec_,xee_, dxee_,l, zb_,ze_,zc_,dze_; - long dr31_=mr3-mr1+(ar3-ar1), dg31_=mg3-mg1+(ag3-ag1), db31_=mb3-mb1+(ab3-ab1), da31_=ma3-ma1, - dr21_=mr2-mr1+(ar2-ar1), dg21_=mg2-mg1+(ag2-ag1), db21_=mb2-mb1+(ab2-ab1), da21_=ma2-ma1, - dr32_=mr3-mr2+(ar3-ar2), dg32_=mg3-mg2+(ag3-ag2), db32_=mb3-mb2+(ab3-ab2), da32_=ma3-ma2, - dr_,dg_,db_,da_,dr1_,dg1_,db1_,da1_; - l=dxe32_*dye31-dxe31_*dye32; - dr1_=((dr32_*dye31-dr31_*dye32)/l); - dg1_=((dg32_*dye31-dg31_*dye32)/l); - db1_=((db32_*dye31-db31_*dye32)/l); - da1_=((da32_*dye31-da31_*dye32)/l); - l=dxe21_*dye31-dxe31_*dye21; - dr_=((dr21_*dye31-dr31_*dye21)/l); - dg_=((dg21_*dye31-dg31_*dye21)/l); - db_=((db21_*dye31-db31_*dye21)/l); - da_=((da21_*dye31-da31_*dye21)/l); - if(dye31) { dxe31_=(dxe31_<=yScrMax) yec=(yScrMax-1)*xScr; - if(ye3=yScrMax) yee=(yScrMax-1)*xScr; - else yee=ye3*xScr; - for(;yeb>PREC_DRAW,xee=xee_>>PREC_DRAW; - int l=yeb+xeb, l_end=yeb+xee, z_=zb_; - int r_=rb_,g_=gb_,b_=bb_,a_=ab_; - int dxe=xee-xeb; if(dxe==0) dxe=1; - int dz_=(ze_-zb_)/dxe; - if(xebxScrMax) l_end=yeb+xScrMax; - - switch(ScrTextureFormat) - { - case TEXFMT_RGB565: - for(;l>PREC_DRAW)<=zBuffer[l]) - { - int Alfa=a_>>PREC_DRAW; - int ColorScr=scr[l]; - int rScr=(ColorScr&(31<<11))>>8; - int gScr=(ColorScr&(63<<5))>>3; - int bScr=(ColorScr&(31<<0))<<3; - int r=rScr+((Alfa*((r_>>PREC_DRAW)-rScr))>>8); - int g=gScr+((Alfa*((g_>>PREC_DRAW)-gScr))>>8); - int b=bScr+((Alfa*((b_>>PREC_DRAW)-bScr))>>8); - scr[l]=rPal16[r]+gPal16[g]+bPal16[b]; - if(RenderState_zwrite) - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - r_+=dr_,g_+=dg_,b_+=db_,a_+=da_; - } - break; - case TEXFMT_RGB555: - for(;l>PREC_DRAW)<=zBuffer[l]) - { - int Alfa=a_>>PREC_DRAW; - int ColorScr=scr[l]; - int rScr=(ColorScr&(31<<10))>>7; - int gScr=(ColorScr&(31<<5))>>2; - int bScr=(ColorScr&(31<<0))<<3; - int r=rScr+((Alfa*((r_>>PREC_DRAW)-rScr))>>8); - int g=gScr+((Alfa*((g_>>PREC_DRAW)-gScr))>>8); - int b=bScr+((Alfa*((b_>>PREC_DRAW)-bScr))>>8); - scr[l]=rPal16[r]+gPal16[g]+bPal16[b]; - if(RenderState_zwrite) - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - r_+=dr_,g_+=dg_,b_+=db_,a_+=da_; - } - break; - default: - assert(0); - } - rb_+=dr31_,gb_+=dg31_,bb_+=db31_,ab_+=da31_; - } - dr_=dr1_,dg_=dg1_,db_=db1_,da_=da1_; - } -} -void cGraph3dSoftware::L16_ZT_CMDAS_AMD(void *pscr,void *pzBuffer) -{ - SET_COORD_MDRGBA_SRGBA(v1,v2,v3); - unsigned short *scr=(unsigned short*)pscr,*zBuffer=(unsigned short*)pzBuffer; - long dye31=ye3-ye1, dye21=ye2-ye1, dye32=ye3-ye2; - long dxe31_=xe3-xe1, dz31_=z3-z1, dxe21_=xe2-xe1, dz21_=z2-z1, dxe32_=xe3-xe2, dz32_=z3-z2, - xeb_,xec_,xee_, dxee_,l, zb_,ze_,zc_,dze_; - long dr31_=mr3-mr1+(ar3-ar1), dg31_=mg3-mg1+(ag3-ag1), db31_=mb3-mb1+(ab3-ab1), da31_=ma3-ma1, - dr21_=mr2-mr1+(ar2-ar1), dg21_=mg2-mg1+(ag2-ag1), db21_=mb2-mb1+(ab2-ab1), da21_=ma2-ma1, - dr32_=mr3-mr2+(ar3-ar2), dg32_=mg3-mg2+(ag3-ag2), db32_=mb3-mb2+(ab3-ab2), da32_=ma3-ma2, - dr_,dg_,db_,da_,dr1_,dg1_,db1_,da1_; - l=dxe31_*dye32-dxe32_*dye31; - dr1_=((dr32_*dye31-dr31_*dye32)/l); - dg1_=((dg32_*dye31-dg31_*dye32)/l); - db1_=((db32_*dye31-db31_*dye32)/l); - da1_=((da32_*dye31-da31_*dye32)/l); - l=dxe31_*dye21-dxe21_*dye31; - dr_=((dr21_*dye31-dr31_*dye21)/l); - dg_=((dg21_*dye31-dg31_*dye21)/l); - db_=((db21_*dye31-db31_*dye21)/l); - da_=((da21_*dye31-da31_*dye21)/l); - if(dye31) { dxe31_=(dxe31_<=yScrMax) yec=(yScrMax-1)*xScr; - if(ye3=yScrMax) yee=(yScrMax-1)*xScr; - else yee=ye3*xScr; - for(;yeb>PREC_DRAW)-1,xee=xee_>>PREC_DRAW; - int l=yeb+xeb, l_end=yeb+xee, z_=zb_; - long r_=rb_,g_=gb_,b_=bb_,a_=ab_; - int dxe=xee-xeb; if(dxe==0) dxe=1; - int dz_=(zb_-ze_)/dxe; - if(xeb>(xScrMax-1)) //--- - { - z_+=(xeb-xScrMax+1)*dz_; //--- - r_+=(xeb-xScrMax+1)*dr_; - g_+=(xeb-xScrMax+1)*dg_; - b_+=(xeb-xScrMax+1)*db_; - a_+=(xeb-xScrMax+1)*da_; - l=yeb+(xScrMax-1); //--- - } - if(xee=l_end; z_+=dz_,l--) //--- - { - if((unsigned short)(z_>>PREC_DRAW)<=zBuffer[l]) - { - int Alfa=a_>>PREC_DRAW; - int ColorScr=scr[l]; - int rScr=(ColorScr&(31<<11))>>8; - int gScr=(ColorScr&(63<<5))>>3; - int bScr=(ColorScr&(31<<0))<<3; - int r=rScr+((Alfa*((r_>>PREC_DRAW)-rScr))>>8); - int g=gScr+((Alfa*((g_>>PREC_DRAW)-gScr))>>8); - int b=bScr+((Alfa*((b_>>PREC_DRAW)-bScr))>>8); - scr[l]=rPal16[r]+gPal16[g]+bPal16[b]; - if(RenderState_zwrite) - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - r_+=dr_,g_+=dg_,b_+=db_,a_+=da_; - } - break; - case TEXFMT_RGB555: - for(;l>=l_end; z_+=dz_,l--) //--- - { - if((unsigned short)(z_>>PREC_DRAW)<=zBuffer[l]) - { - int Alfa=a_>>PREC_DRAW; - int ColorScr=scr[l]; - int rScr=(ColorScr&(31<<10))>>7; - int gScr=(ColorScr&(31<<5))>>2; - int bScr=(ColorScr&(31<<0))<<3; - int r=rScr+((Alfa*((r_>>PREC_DRAW)-rScr))>>8); - int g=gScr+((Alfa*((g_>>PREC_DRAW)-gScr))>>8); - int b=bScr+((Alfa*((b_>>PREC_DRAW)-bScr))>>8); - scr[l]=rPal16[r]+gPal16[g]+bPal16[b]; - if(RenderState_zwrite) - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - r_+=dr_,g_+=dg_,b_+=db_,a_+=da_; - } - break; - default: - assert(0); - } - rb_+=dr31_,gb_+=dg31_,bb_+=db31_,ab_+=da31_; - } - dr_=dr1_,dg_=dg1_,db_=db1_,da_=da1_; - } -} diff --git a/MechoSoma/VisGeneric/Graph3d/S16Texture1.cpp b/MechoSoma/VisGeneric/Graph3d/S16Texture1.cpp deleted file mode 100644 index 6826b4c..0000000 --- a/MechoSoma/VisGeneric/Graph3d/S16Texture1.cpp +++ /dev/null @@ -1,1486 +0,0 @@ -#include "Graph3d_Software.h" -#include "Software16.h" - -void cGraph3dSoftware::R16_ZTW_CMT1(void *pscr,void *pzBuffer) -{ - SET_COORD_UV1(v1,v2,v3); - unsigned short *scr=(unsigned short*)pscr,*zBuffer=(unsigned short*)pzBuffer,*Tex4444=(unsigned short*)texture; - long dye31=ye3-ye1, dye21=ye2-ye1, dye32=ye3-ye2; - long dxe31_=xe3-xe1,dz31_=z3-z1, dxe21_=xe2-xe1,dz21_=z2-z1, dxe32_=xe3-xe2,dz32_=z3-z2, - xeb_,xec_,xee_,dxee_, l, zb_,ze_,zc_,dze_; - long du31_=u13-u11,dv31_=v13-v11, du21_=u12-u11,dv21_=v12-v11, du32_=u13-u12,dv32_=v13-v12, - du_,dv_,du1_,dv1_; - if((dxe21_>(xScr<<1))||(dxe32_>(xScr<<1))||(dxe31_>(xScr<<1))) return; - l=dxe32_*dye31-dxe31_*dye32; - du1_=((du32_*dye31-du31_*dye32)/l); - dv1_=((dv32_*dye31-dv31_*dye32)/l)<<_xt1; - l=dxe21_*dye31-dxe31_*dye21; - du_=((du21_*dye31-du31_*dye21)/l); - dv_=((dv21_*dye31-dv31_*dye21)/l)<<_xt1; - if(dye31) { dxe31_=(dxe31_<=yScrMax) yec=(yScrMax-1)*xScr; - if(ye3=yScrMax) yee=(yScrMax-1)*xScr; - else yee=ye3*xScr; - for(;yeb>PREC_DRAW,xee=xee_>>PREC_DRAW; - int l=yeb+xeb,l_end=yeb+xee,z_=zb_; - long u_=ub_, v_=vb_<<_xt1; - int dxe=xee-xeb; if(dxe==0) dxe=1; - int dz_=(ze_-zb_)/dxe; - if(xebxScrMax) l_end=yeb+xScrMax; - u_&=xmt1+((1<>PREC_DRAW)<=zBuffer[l]) - { - unsigned short Color4444=Tex4444[((v_&ymt1)+(u_&xmt1))>>PREC_DRAW]; - int r=((Color4444>>8)&15)<<(8-4); - int g=((Color4444>>4)&15)<<(8-4); - int b=((Color4444>>0)&15)<<(8-4); - scr[l]=rPal16[r]+gPal16[g]+bPal16[b]; - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - u_+=du_,v_+=dv_; - } - ub_+=du31_,vb_+=dv31_; - } - du_=du1_,dv_=dv1_; - } -} -void cGraph3dSoftware::L16_ZTW_CMT1(void *pscr,void *pzBuffer) -{ - SET_COORD_UV1(v1,v2,v3); - unsigned short *scr=(unsigned short*)pscr,*zBuffer=(unsigned short*)pzBuffer,*Tex4444=(unsigned short*)texture; - long dye31=ye3-ye1, dye21=ye2-ye1, dye32=ye3-ye2; - long dxe31_=xe3-xe1,dz31_=z3-z1, dxe21_=xe2-xe1,dz21_=z2-z1, dxe32_=xe3-xe2,dz32_=z3-z2, - xeb_,xec_,xee_,dxee_, l, zb_,ze_,zc_,dze_; - long du31_=u13-u11,dv31_=v13-v11, du21_=u12-u11,dv21_=v12-v11, du32_=u13-u12, dv32_=v13-v12, - du_,dv_,du1_,dv1_; - l=dxe31_*dye32-dxe32_*dye31; - du1_=((du32_*dye31-du31_*dye32)/l); - dv1_=((dv32_*dye31-dv31_*dye32)/l)<<_xt1; - l=dxe31_*dye21-dxe21_*dye31; - du_=((du21_*dye31-du31_*dye21)/l); - dv_=((dv21_*dye31-dv31_*dye21)/l)<<_xt1; - if(dye31) { dxe31_=(dxe31_<=yScrMax) yec=(yScrMax-1)*xScr; - if(ye3=yScrMax) yee=(yScrMax-1)*xScr; - else yee=ye3*xScr; - for(;yeb>PREC_DRAW)-1,xee=xee_>>PREC_DRAW; - int l=yeb+xeb,l_end=yeb+xee,z_=zb_; - long u_=ub_, v_=vb_<<_xt1; - int dxe=xee-xeb; if(dxe==0) dxe=1; - int dz_=(zb_-ze_)/dxe; - if(xeb>(xScrMax-1)) //--- - { - z_+=(xeb-xScrMax+1)*dz_; //--- - u_+=(xeb-xScrMax+1)*du_; //--- - v_+=(xeb-xScrMax+1)*dv_; //--- - l=yeb+(xScrMax-1); //--- - } - if(xee=l_end; l--,z_+=dz_) //--- - { - if((unsigned short)(z_>>PREC_DRAW)<=zBuffer[l]) - { - unsigned short Color4444=Tex4444[((v_&ymt1)+(u_&xmt1))>>PREC_DRAW]; - int r=((Color4444>>8)&15)<<(8-4); - int g=((Color4444>>4)&15)<<(8-4); - int b=((Color4444>>0)&15)<<(8-4); - scr[l]=rPal16[r]+gPal16[g]+bPal16[b]; - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - u_+=du_,v_+=dv_; - } - ub_+=du31_,vb_+=dv31_; - } - du_=du1_,dv_=dv1_; - } -} - -void cGraph3dSoftware::R16_ZT_CMT1_AMT1(void *pscr,void *pzBuffer) -{ - SET_COORD_UV1(v1,v2,v3); - unsigned short *scr=(unsigned short*)pscr,*zBuffer=(unsigned short*)pzBuffer,*Tex4444=(unsigned short*)texture; - long dye31=ye3-ye1, dye21=ye2-ye1, dye32=ye3-ye2; - long dxe31_=xe3-xe1,dz31_=z3-z1, dxe21_=xe2-xe1,dz21_=z2-z1, dxe32_=xe3-xe2,dz32_=z3-z2, - xeb_,xec_,xee_,dxee_, l, zb_,ze_,zc_,dze_; - long du31_=u13-u11,dv31_=v13-v11, du21_=u12-u11,dv21_=v12-v11, du32_=u13-u12,dv32_=v13-v12, - du_,dv_,du1_,dv1_; - if((dxe21_>(xScr<<1))||(dxe32_>(xScr<<1))||(dxe31_>(xScr<<1))) return; - l=dxe32_*dye31-dxe31_*dye32; - du1_=((du32_*dye31-du31_*dye32)/l); - dv1_=((dv32_*dye31-dv31_*dye32)/l)<<_xt1; - l=dxe21_*dye31-dxe31_*dye21; - du_=((du21_*dye31-du31_*dye21)/l); - dv_=((dv21_*dye31-dv31_*dye21)/l)<<_xt1; - if(dye31) { dxe31_=(dxe31_<=yScrMax) yec=(yScrMax-1)*xScr; - if(ye3=yScrMax) yee=(yScrMax-1)*xScr; - else yee=ye3*xScr; - for(;yeb>PREC_DRAW,xee=xee_>>PREC_DRAW; - int l=yeb+xeb,l_end=yeb+xee,z_=zb_; - long u_=ub_, v_=vb_<<_xt1; - int dxe=xee-xeb; if(dxe==0) dxe=1; - int dz_=(ze_-zb_)/dxe; - if(xebxScrMax) l_end=yeb+xScrMax; - u_&=xmt1+((1<>PREC_DRAW)<=zBuffer[l]) - { - unsigned short Color4444=Tex4444[((v_&ymt1)+(u_&xmt1))>>PREC_DRAW]; - int Alfa=((Color4444>>12)&15)<<(8-4); - if(Alfa>=AlfaRef) - { - int rSrc=((Color4444>>8)&15)<<(8-4); - int gSrc=((Color4444>>4)&15)<<(8-4); - int bSrc=((Color4444>>0)&15)<<(8-4); - int ColorDest=scr[l]; - int rDest=(ColorDest&(31<<11))>>8; - int gDest=(ColorDest&(63<<5))>>3; - int bDest=(ColorDest&(31<<0))<<3; - int r=rDest+((Alfa*(rSrc-rDest))>>8); - int g=gDest+((Alfa*(gSrc-gDest))>>8); - int b=bDest+((Alfa*(bSrc-bDest))>>8); - scr[l]=rPal16[r]+gPal16[g]+bPal16[b]; - if(RenderState_zwrite) - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - } - u_+=du_,v_+=dv_; - } - break; - case TEXFMT_RGB555: - for(;l>PREC_DRAW)<=zBuffer[l]) - { - unsigned short Color4444=Tex4444[((v_&ymt1)+(u_&xmt1))>>PREC_DRAW]; - int Alfa=((Color4444>>12)&15)<<(8-4); - if(Alfa>=AlfaRef) - { - int rSrc=((Color4444>>8)&15)<<(8-4); - int gSrc=((Color4444>>4)&15)<<(8-4); - int bSrc=((Color4444>>0)&15)<<(8-4); - int ColorDest=scr[l]; - int rDest=(ColorDest&(31<<10))>>7; - int gDest=(ColorDest&(63<<5))>>2; - int bDest=(ColorDest&(31<<0))<<3; - int r=rDest+((Alfa*(rSrc-rDest))>>8); - int g=gDest+((Alfa*(gSrc-gDest))>>8); - int b=bDest+((Alfa*(bSrc-bDest))>>8); - scr[l]=rPal16[r]+gPal16[g]+bPal16[b]; - if(RenderState_zwrite) - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - } - u_+=du_,v_+=dv_; - } - break; - default: - assert(0); - } - ub_+=du31_,vb_+=dv31_; - } - du_=du1_,dv_=dv1_; - } -} -void cGraph3dSoftware::L16_ZT_CMT1_AMT1(void *pscr,void *pzBuffer) -{ - SET_COORD_UV1(v1,v2,v3); - unsigned short *scr=(unsigned short*)pscr,*zBuffer=(unsigned short*)pzBuffer,*Tex4444=(unsigned short*)texture; - long dye31=ye3-ye1, dye21=ye2-ye1, dye32=ye3-ye2; - long dxe31_=xe3-xe1,dz31_=z3-z1, dxe21_=xe2-xe1,dz21_=z2-z1, dxe32_=xe3-xe2,dz32_=z3-z2, - xeb_,xec_,xee_,dxee_, l, zb_,ze_,zc_,dze_; - long du31_=u13-u11,dv31_=v13-v11, du21_=u12-u11,dv21_=v12-v11, du32_=u13-u12, dv32_=v13-v12, - du_,dv_,du1_,dv1_; - l=dxe31_*dye32-dxe32_*dye31; - du1_=((du32_*dye31-du31_*dye32)/l); - dv1_=((dv32_*dye31-dv31_*dye32)/l)<<_xt1; - l=dxe31_*dye21-dxe21_*dye31; - du_=((du21_*dye31-du31_*dye21)/l); - dv_=((dv21_*dye31-dv31_*dye21)/l)<<_xt1; - if(dye31) { dxe31_=(dxe31_<=yScrMax) yec=(yScrMax-1)*xScr; - if(ye3=yScrMax) yee=(yScrMax-1)*xScr; - else yee=ye3*xScr; - for(;yeb>PREC_DRAW)-1,xee=xee_>>PREC_DRAW; - int l=yeb+xeb,l_end=yeb+xee,z_=zb_; - long u_=ub_, v_=vb_<<_xt1; - int dxe=xee-xeb; if(dxe==0) dxe=1; - int dz_=(zb_-ze_)/dxe; - if(xeb>(xScrMax-1)) //--- - { - z_+=(xeb-xScrMax+1)*dz_; //--- - u_+=(xeb-xScrMax+1)*du_; //--- - v_+=(xeb-xScrMax+1)*dv_; //--- - l=yeb+(xScrMax-1); //--- - } - if(xee=l_end; l--,z_+=dz_) //--- - { - if((unsigned short)(z_>>PREC_DRAW)<=zBuffer[l]) - { - unsigned short Color4444=Tex4444[((v_&ymt1)+(u_&xmt1))>>PREC_DRAW]; - int Alfa=((Color4444>>12)&15)<<(8-4); - if(Alfa>=AlfaRef) - { - int rSrc=((Color4444>>8)&15)<<(8-4); - int gSrc=((Color4444>>4)&15)<<(8-4); - int bSrc=((Color4444>>0)&15)<<(8-4); - int ColorDest=scr[l]; - int rDest=(ColorDest&(31<<11))>>8; - int gDest=(ColorDest&(63<<5))>>3; - int bDest=(ColorDest&(31<<0))<<3; - int r=rDest+((Alfa*(rSrc-rDest))>>8); - int g=gDest+((Alfa*(gSrc-gDest))>>8); - int b=bDest+((Alfa*(bSrc-bDest))>>8); - scr[l]=rPal16[r]+gPal16[g]+bPal16[b]; - if(RenderState_zwrite) - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - } - u_+=du_,v_+=dv_; - } - break; - case TEXFMT_RGB555: - for(;l>=l_end; l--,z_+=dz_) //--- - { - if((unsigned short)(z_>>PREC_DRAW)<=zBuffer[l]) - { - unsigned short Color4444=Tex4444[((v_&ymt1)+(u_&xmt1))>>PREC_DRAW]; - int Alfa=((Color4444>>12)&15)<<(8-4); - if(Alfa>=AlfaRef) - { - int rSrc=((Color4444>>8)&15)<<(8-4); - int gSrc=((Color4444>>4)&15)<<(8-4); - int bSrc=((Color4444>>0)&15)<<(8-4); - int ColorDest=scr[l]; - int rDest=(ColorDest&(31<<10))>>7; - int gDest=(ColorDest&(63<<5))>>2; - int bDest=(ColorDest&(31<<0))<<3; - int r=rDest+((Alfa*(rSrc-rDest))>>8); - int g=gDest+((Alfa*(gSrc-gDest))>>8); - int b=bDest+((Alfa*(bSrc-bDest))>>8); - scr[l]=rPal16[r]+gPal16[g]+bPal16[b]; - if(RenderState_zwrite) - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - } - u_+=du_,v_+=dv_; - } - break; - default: - assert(0); - } - ub_+=du31_,vb_+=dv31_; - } - du_=du1_,dv_=dv1_; - } -} - -void cGraph3dSoftware::R16_ZTW_CMDT1(void *pscr,void *pzBuffer) -{ - SET_COORD_MDRGBA_UV1(v1,v2,v3); - unsigned short *scr=(unsigned short*)pscr,*zBuffer=(unsigned short*)pzBuffer,*Tex4444=(unsigned short*)texture; - long dye31=ye3-ye1, dye21=ye2-ye1, dye32=ye3-ye2; - long dxe31_=xe3-xe1,dz31_=z3-z1, dxe21_=xe2-xe1,dz21_=z2-z1, dxe32_=xe3-xe2,dz32_=z3-z2, - xeb_,xec_,xee_,dxee_, l, zb_,ze_,zc_,dze_; - long du31_=u13-u11,dv31_=v13-v11, du21_=u12-u11,dv21_=v12-v11, du32_=u13-u12,dv32_=v13-v12, - du_,dv_,du1_,dv1_; - long dr31_=mr3-mr1, dg31_=mg3-mg1, db31_=mb3-mb1, - dr21_=mr2-mr1, dg21_=mg2-mg1, db21_=mb2-mb1, - dr32_=mr3-mr2, dg32_=mg3-mg2, db32_=mb3-mb2, - dr_,dg_,db_,dr1_,dg1_,db1_; - if((dxe21_>(xScr<<1))||(dxe32_>(xScr<<1))||(dxe31_>(xScr<<1))) return; - l=dxe32_*dye31-dxe31_*dye32; - du1_=((du32_*dye31-du31_*dye32)/l); - dv1_=((dv32_*dye31-dv31_*dye32)/l)<<_xt1; - dr1_=((dr32_*dye31-dr31_*dye32)/l); - dg1_=((dg32_*dye31-dg31_*dye32)/l); - db1_=((db32_*dye31-db31_*dye32)/l); - l=dxe21_*dye31-dxe31_*dye21; - du_=((du21_*dye31-du31_*dye21)/l); - dv_=((dv21_*dye31-dv31_*dye21)/l)<<_xt1; - dr_=((dr21_*dye31-dr31_*dye21)/l); - dg_=((dg21_*dye31-dg31_*dye21)/l); - db_=((db21_*dye31-db31_*dye21)/l); - if(dye31) { dxe31_=(dxe31_<=yScrMax) yec=(yScrMax-1)*xScr; - if(ye3=yScrMax) yee=(yScrMax-1)*xScr; - else yee=ye3*xScr; - for(;yeb>PREC_DRAW,xee=xee_>>PREC_DRAW; - int l=yeb+xeb, l_end=yeb+xee, z_=zb_; - long u_=ub_,v_=vb_<<_xt1; - long r_=rb_,g_=gb_,b_=bb_; - int dxe=xee-xeb; if(dxe==0) dxe=1; - int dz_=(ze_-zb_)/dxe; - if(xebxScrMax) l_end=yeb+xScrMax; - u_&=xmt1+((1<>PREC_DRAW)<=zBuffer[l]) - { - unsigned short Color4444=Tex4444[((v_&ymt1)+(u_&xmt1))>>PREC_DRAW]; - int r=(((Color4444>>8)&15)*r_)>>(PREC_DRAW-8+4+8); - int g=(((Color4444>>4)&15)*g_)>>(PREC_DRAW-8+4+8); - int b=(((Color4444>>0)&15)*b_)>>(PREC_DRAW-8+4+8); - scr[l]=rPal16[r]+gPal16[g]+bPal16[b]; - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - u_+=du_,v_+=dv_; r_+=dr_,g_+=dg_,b_+=db_; - } - ub_+=du31_,vb_+=dv31_; rb_+=dr31_,gb_+=dg31_,bb_+=db31_; - } - du_=du1_,dv_=dv1_; dr_=dr1_,dg_=dg1_,db_=db1_; - } -} -void cGraph3dSoftware::L16_ZTW_CMDT1(void *pscr,void *pzBuffer) -{ - SET_COORD_MDRGBA_UV1(v1,v2,v3); - unsigned short *scr=(unsigned short*)pscr,*zBuffer=(unsigned short*)pzBuffer,*Tex4444=(unsigned short*)texture; - long dye31=ye3-ye1, dye21=ye2-ye1, dye32=ye3-ye2; - long dxe31_=xe3-xe1,dz31_=z3-z1, dxe21_=xe2-xe1,dz21_=z2-z1, dxe32_=xe3-xe2,dz32_=z3-z2, - xeb_,xec_,xee_,dxee_, l, zb_,ze_,zc_,dze_; - long du31_=u13-u11,dv31_=v13-v11, du21_=u12-u11,dv21_=v12-v11, du32_=u13-u12, dv32_=v13-v12, - du_,dv_,du1_,dv1_; - long dr31_=mr3-mr1, dg31_=mg3-mg1, db31_=mb3-mb1, - dr21_=mr2-mr1, dg21_=mg2-mg1, db21_=mb2-mb1, - dr32_=mr3-mr2, dg32_=mg3-mg2, db32_=mb3-mb2, - dr_,dg_,db_,dr1_,dg1_,db1_; - l=dxe31_*dye32-dxe32_*dye31; - du1_=((du32_*dye31-du31_*dye32)/l); - dv1_=((dv32_*dye31-dv31_*dye32)/l)<<_xt1; - dr1_=((dr32_*dye31-dr31_*dye32)/l); - dg1_=((dg32_*dye31-dg31_*dye32)/l); - db1_=((db32_*dye31-db31_*dye32)/l); - l=dxe31_*dye21-dxe21_*dye31; - du_=((du21_*dye31-du31_*dye21)/l); - dv_=((dv21_*dye31-dv31_*dye21)/l)<<_xt1; - dr_=((dr21_*dye31-dr31_*dye21)/l); - dg_=((dg21_*dye31-dg31_*dye21)/l); - db_=((db21_*dye31-db31_*dye21)/l); - if(dye31) { dxe31_=(dxe31_<=yScrMax) yec=(yScrMax-1)*xScr; - if(ye3=yScrMax) yee=(yScrMax-1)*xScr; - else yee=ye3*xScr; - for(;yeb>PREC_DRAW)-1,xee=xee_>>PREC_DRAW; - int l=yeb+xeb,l_end=yeb+xee, z_=zb_; - long u_=ub_,v_=vb_<<_xt1; - long r_=rb_,g_=gb_,b_=bb_; - int dxe=xee-xeb; if(dxe==0) dxe=1; - int dz_=(zb_-ze_)/dxe; - if(xeb>(xScrMax-1)) //--- - { - z_+=(xeb-xScrMax+1)*dz_; //--- - u_+=(xeb-xScrMax+1)*du_; //--- - v_+=(xeb-xScrMax+1)*dv_; //--- - r_+=(xeb-xScrMax+1)*dr_; - g_+=(xeb-xScrMax+1)*dg_; - b_+=(xeb-xScrMax+1)*db_; - l=yeb+(xScrMax-1); //--- - } - if(xee=l_end; l--,z_+=dz_) //--- - { - if((unsigned short)(z_>>PREC_DRAW)<=zBuffer[l]) - { - unsigned short Color4444=Tex4444[((v_&ymt1)+(u_&xmt1))>>PREC_DRAW]; - int r=(((Color4444>>8)&15)*r_)>>(PREC_DRAW-8+4+8); - int g=(((Color4444>>4)&15)*g_)>>(PREC_DRAW-8+4+8); - int b=(((Color4444>>0)&15)*b_)>>(PREC_DRAW-8+4+8); - scr[l]=rPal16[r]+gPal16[g]+bPal16[b]; - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - r_+=dr_,g_+=dg_,b_+=db_; - u_+=du_,v_+=dv_; - } - rb_+=dr31_,gb_+=dg31_,bb_+=db31_; - ub_+=du31_,vb_+=dv31_; - } - dr_=dr1_,dg_=dg1_,db_=db1_; - du_=du1_,dv_=dv1_; - } -} - -void cGraph3dSoftware::R16_ZTW_CMDT1AS(void *pscr,void *pzBuffer) -{ - SET_COORD_MDRGBA_UV1_SRGBA(v1,v2,v3); - unsigned short *scr=(unsigned short*)pscr,*zBuffer=(unsigned short*)pzBuffer,*Tex4444=(unsigned short*)texture; - long dye31=ye3-ye1, dye21=ye2-ye1, dye32=ye3-ye2; - long dxe31_=xe3-xe1,dz31_=z3-z1, dxe21_=xe2-xe1,dz21_=z2-z1, dxe32_=xe3-xe2,dz32_=z3-z2, - xeb_,xec_,xee_,dxee_, l, zb_,ze_,zc_,dze_; - long du31_=u13-u11,dv31_=v13-v11, du21_=u12-u11,dv21_=v12-v11, du32_=u13-u12,dv32_=v13-v12, - du_,dv_,du1_,dv1_; - long dr31_=mr3-mr1, dg31_=mg3-mg1, db31_=mb3-mb1, - dr21_=mr2-mr1, dg21_=mg2-mg1, db21_=mb2-mb1, - dr32_=mr3-mr2, dg32_=mg3-mg2, db32_=mb3-mb2, - dr_,dg_,db_,dr1_,dg1_,db1_; - long dar31_=ar3-ar1, dag31_=ag3-ag1, dab31_=ab3-ab1, - dar21_=ar2-ar1, dag21_=ag2-ag1, dab21_=ab2-ab1, - dar32_=ar3-ar2, dag32_=ag3-ag2, dab32_=ab3-ab2, - dar_,dag_,dab_,dar1_,dag1_,dab1_; - if((dxe21_>(xScr<<1))||(dxe32_>(xScr<<1))||(dxe31_>(xScr<<1))) return; - l=dxe32_*dye31-dxe31_*dye32; - du1_=((du32_*dye31-du31_*dye32)/l); - dv1_=((dv32_*dye31-dv31_*dye32)/l)<<_xt1; - dr1_=((dr32_*dye31-dr31_*dye32)/l); - dg1_=((dg32_*dye31-dg31_*dye32)/l); - db1_=((db32_*dye31-db31_*dye32)/l); - dar1_=((dar32_*dye31-dar31_*dye32)/l); - dag1_=((dag32_*dye31-dag31_*dye32)/l); - dab1_=((dab32_*dye31-dab31_*dye32)/l); - l=dxe21_*dye31-dxe31_*dye21; - du_=((du21_*dye31-du31_*dye21)/l); - dv_=((dv21_*dye31-dv31_*dye21)/l)<<_xt1; - dr_=((dr21_*dye31-dr31_*dye21)/l); - dg_=((dg21_*dye31-dg31_*dye21)/l); - db_=((db21_*dye31-db31_*dye21)/l); - dar_=((dar21_*dye31-dar31_*dye21)/l); - dag_=((dag21_*dye31-dag31_*dye21)/l); - dab_=((dab21_*dye31-dab31_*dye21)/l); - if(dye31) { dxe31_=(dxe31_<=yScrMax) yec=(yScrMax-1)*xScr; - if(ye3=yScrMax) yee=(yScrMax-1)*xScr; - else yee=ye3*xScr; - for(;yeb>PREC_DRAW,xee=xee_>>PREC_DRAW; - int l=yeb+xeb, l_end=yeb+xee, z_=zb_; - long u_=ub_,v_=vb_<<_xt1; - long r_=rb_,g_=gb_,b_=bb_; - long ar_=arb_,ag_=agb_,ab_=abb_; - int dxe=xee-xeb; if(dxe==0) dxe=1; - int dz_=(ze_-zb_)/dxe; - if(xebxScrMax) l_end=yeb+xScrMax; - u_&=xmt1+((1<>PREC_DRAW)<=zBuffer[l]) - { - unsigned short Color4444=Tex4444[((v_&ymt1)+(u_&xmt1))>>PREC_DRAW]; - int r=((((Color4444>>8)&15)*r_)>>(PREC_DRAW-8+4+8))+(ar_>>PREC_DRAW); - int g=((((Color4444>>4)&15)*g_)>>(PREC_DRAW-8+4+8))+(ag_>>PREC_DRAW); - int b=((((Color4444>>0)&15)*b_)>>(PREC_DRAW-8+4+8))+(ab_>>PREC_DRAW); - scr[l]=rPal16[r]+gPal16[g]+bPal16[b]; - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - u_+=du_,v_+=dv_; r_+=dr_,g_+=dg_,b_+=db_; ar_+=dar_,ag_+=dag_,ab_+=dab_; - } - ub_+=du31_,vb_+=dv31_; rb_+=dr31_,gb_+=dg31_,bb_+=db31_; arb_+=dr31_,agb_+=dag31_,abb_+=dab31_; - } - du_=du1_,dv_=dv1_; dr_=dr1_,dg_=dg1_,db_=db1_; dar_=dar1_,dag_=dag1_,dab_=dab1_; - } -} -void cGraph3dSoftware::L16_ZTW_CMDT1AS(void *pscr,void *pzBuffer) -{ - SET_COORD_MDRGBA_UV1_SRGBA(v1,v2,v3); - unsigned short *scr=(unsigned short*)pscr,*zBuffer=(unsigned short*)pzBuffer,*Tex4444=(unsigned short*)texture; - long dye31=ye3-ye1, dye21=ye2-ye1, dye32=ye3-ye2; - long dxe31_=xe3-xe1,dz31_=z3-z1, dxe21_=xe2-xe1,dz21_=z2-z1, dxe32_=xe3-xe2,dz32_=z3-z2, - xeb_,xec_,xee_,dxee_, l, zb_,ze_,zc_,dze_; - long du31_=u13-u11,dv31_=v13-v11, du21_=u12-u11,dv21_=v12-v11, du32_=u13-u12, dv32_=v13-v12, - du_,dv_,du1_,dv1_; - long dr31_=mr3-mr1, dg31_=mg3-mg1, db31_=mb3-mb1, - dr21_=mr2-mr1, dg21_=mg2-mg1, db21_=mb2-mb1, - dr32_=mr3-mr2, dg32_=mg3-mg2, db32_=mb3-mb2, - dr_,dg_,db_,dr1_,dg1_,db1_; - long dar31_=ar3-ar1, dag31_=ag3-ag1, dab31_=ab3-ab1, - dar21_=ar2-ar1, dag21_=ag2-ag1, dab21_=ab2-ab1, - dar32_=ar3-ar2, dag32_=ag3-ag2, dab32_=ab3-ab2, - dar_,dag_,dab_,dar1_,dag1_,dab1_; - l=dxe31_*dye32-dxe32_*dye31; - du1_=((du32_*dye31-du31_*dye32)/l); - dv1_=((dv32_*dye31-dv31_*dye32)/l)<<_xt1; - dr1_=((dr32_*dye31-dr31_*dye32)/l); - dg1_=((dg32_*dye31-dg31_*dye32)/l); - db1_=((db32_*dye31-db31_*dye32)/l); - dar1_=((dar32_*dye31-dar31_*dye32)/l); - dag1_=((dag32_*dye31-dag31_*dye32)/l); - dab1_=((dab32_*dye31-dab31_*dye32)/l); - l=dxe31_*dye21-dxe21_*dye31; - du_=((du21_*dye31-du31_*dye21)/l); - dv_=((dv21_*dye31-dv31_*dye21)/l)<<_xt1; - dr_=((dr21_*dye31-dr31_*dye21)/l); - dg_=((dg21_*dye31-dg31_*dye21)/l); - db_=((db21_*dye31-db31_*dye21)/l); - dar_=((dar21_*dye31-dar31_*dye21)/l); - dag_=((dag21_*dye31-dag31_*dye21)/l); - dab_=((dab21_*dye31-dab31_*dye21)/l); - if(dye31) { dxe31_=(dxe31_<=yScrMax) yec=(yScrMax-1)*xScr; - if(ye3=yScrMax) yee=(yScrMax-1)*xScr; - else yee=ye3*xScr; - for(;yeb>PREC_DRAW)-1,xee=xee_>>PREC_DRAW; - int l=yeb+xeb,l_end=yeb+xee, z_=zb_; - long u_=ub_,v_=vb_<<_xt1; - long r_=rb_,g_=gb_,b_=bb_; - long ar_=arb_,ag_=agb_,ab_=abb_; - int dxe=xee-xeb; if(dxe==0) dxe=1; - int dz_=(zb_-ze_)/dxe; - if(xeb>(xScrMax-1)) //--- - { - z_+=(xeb-xScrMax+1)*dz_; //--- - u_+=(xeb-xScrMax+1)*du_; //--- - v_+=(xeb-xScrMax+1)*dv_; //--- - r_+=(xeb-xScrMax+1)*dr_; - g_+=(xeb-xScrMax+1)*dg_; - b_+=(xeb-xScrMax+1)*db_; - ar_+=(xeb-xScrMax+1)*dar_; - ag_+=(xeb-xScrMax+1)*dag_; - ab_+=(xeb-xScrMax+1)*dab_; - l=yeb+(xScrMax-1); //--- - } - if(xee=l_end; l--,z_+=dz_) //--- - { - if((unsigned short)(z_>>PREC_DRAW)<=zBuffer[l]) - { - unsigned short Color4444=Tex4444[((v_&ymt1)+(u_&xmt1))>>PREC_DRAW]; - int r=((((Color4444>>8)&15)*r_)>>(PREC_DRAW-8+4+8))+(ar_>>PREC_DRAW); - int g=((((Color4444>>4)&15)*g_)>>(PREC_DRAW-8+4+8))+(ag_>>PREC_DRAW); - int b=((((Color4444>>0)&15)*b_)>>(PREC_DRAW-8+4+8))+(ab_>>PREC_DRAW); - scr[l]=rPal16[r]+gPal16[g]+bPal16[b]; - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - r_+=dr_,g_+=dg_,b_+=db_; - ar_+=dar_,ag_+=dag_,ab_+=dab_; - u_+=du_,v_+=dv_; - } - rb_+=dr31_,gb_+=dg31_,bb_+=db31_; - arb_+=dar31_,agb_+=dag31_,abb_+=dab31_; - ub_+=du31_,vb_+=dv31_; - } - dr_=dr1_,dg_=dg1_,db_=db1_; - dar_=dar1_,dag_=dag1_,dab_=dab1_; - du_=du1_,dv_=dv1_; - } -} -void cGraph3dSoftware::R16_ZT_CMDT1_AMDT1(void *pscr,void *pzBuffer) -{ - SET_COORD_MDRGBA_UV1(v1,v2,v3); - unsigned short *scr=(unsigned short*)pscr,*zBuffer=(unsigned short*)pzBuffer,*Tex4444=(unsigned short*)texture; - long dye31=ye3-ye1, dye21=ye2-ye1, dye32=ye3-ye2; - long dxe31_=xe3-xe1,dz31_=z3-z1, dxe21_=xe2-xe1,dz21_=z2-z1, dxe32_=xe3-xe2,dz32_=z3-z2, - xeb_,xec_,xee_,dxee_, l, zb_,ze_,zc_,dze_; - long du31_=u13-u11,dv31_=v13-v11, du21_=u12-u11,dv21_=v12-v11, du32_=u13-u12,dv32_=v13-v12, - du_,dv_,du1_,dv1_; - long dr31_=mr3-mr1, dg31_=mg3-mg1, db31_=mb3-mb1, da31_=ma3-ma1, - dr21_=mr2-mr1, dg21_=mg2-mg1, db21_=mb2-mb1, da21_=ma2-ma1, - dr32_=mr3-mr2, dg32_=mg3-mg2, db32_=mb3-mb2, da32_=ma3-ma2, - dr_,dg_,db_,da_,dr1_,dg1_,db1_,da1_; - if((dxe21_>(xScr<<1))||(dxe32_>(xScr<<1))||(dxe31_>(xScr<<1))) return; - l=dxe32_*dye31-dxe31_*dye32; - du1_=((du32_*dye31-du31_*dye32)/l); - dv1_=((dv32_*dye31-dv31_*dye32)/l)<<_xt1; - dr1_=((dr32_*dye31-dr31_*dye32)/l); - dg1_=((dg32_*dye31-dg31_*dye32)/l); - db1_=((db32_*dye31-db31_*dye32)/l); - da1_=((da32_*dye31-da31_*dye32)/l); - l=dxe21_*dye31-dxe31_*dye21; - du_=((du21_*dye31-du31_*dye21)/l); - dv_=((dv21_*dye31-dv31_*dye21)/l)<<_xt1; - dr_=((dr21_*dye31-dr31_*dye21)/l); - dg_=((dg21_*dye31-dg31_*dye21)/l); - db_=((db21_*dye31-db31_*dye21)/l); - da_=((da21_*dye31-da31_*dye21)/l); - if(dye31) { dxe31_=(dxe31_<=yScrMax) yec=(yScrMax-1)*xScr; - if(ye3=yScrMax) yee=(yScrMax-1)*xScr; - else yee=ye3*xScr; - for(;yeb>PREC_DRAW,xee=xee_>>PREC_DRAW; - int l=yeb+xeb, l_end=yeb+xee, z_=zb_; - long u_=ub_,v_=vb_<<_xt1; - long r_=rb_,g_=gb_,b_=bb_,a_=ab_; - int dxe=xee-xeb; if(dxe==0) dxe=1; - int dz_=(ze_-zb_)/dxe; - if(xebxScrMax) l_end=yeb+xScrMax; - u_&=xmt1+((1<>PREC_DRAW)<=zBuffer[l]) - { - unsigned short Color4444=Tex4444[((v_&ymt1)+(u_&xmt1))>>PREC_DRAW]; - int Alfa=(((Color4444>>12)&15)*a_)>>(PREC_DRAW-8+4+8); - if(Alfa>=AlfaRef) - { - int rSrc=(((Color4444>>8)&15)*r_)>>(PREC_DRAW-8+4+8); - int gSrc=(((Color4444>>4)&15)*g_)>>(PREC_DRAW-8+4+8); - int bSrc=(((Color4444>>0)&15)*b_)>>(PREC_DRAW-8+4+8); - int ColorDest=scr[l]; - int rDest=(ColorDest&(31<<11))>>8; - int gDest=(ColorDest&(63<<5))>>3; - int bDest=(ColorDest&(31<<0))<<3; - int r=rDest+((Alfa*(rSrc-rDest))>>8); - int g=gDest+((Alfa*(gSrc-gDest))>>8); - int b=bDest+((Alfa*(bSrc-bDest))>>8); - scr[l]=rPal16[r]+gPal16[g]+bPal16[b]; - if(RenderState_zwrite) - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - } - r_+=dr_,g_+=dg_,b_+=db_,a_+=da_; - u_+=du_,v_+=dv_; - } - break; - case TEXFMT_RGB555: - for(;l>PREC_DRAW)<=zBuffer[l]) - { - unsigned short Color4444=Tex4444[((v_&ymt1)+(u_&xmt1))>>PREC_DRAW]; - int Alfa=(((Color4444>>12)&15)*a_)>>(PREC_DRAW-8+4+8); - if(Alfa>=AlfaRef) - { - int rSrc=(((Color4444>>8)&15)*r_)>>(PREC_DRAW-8+4+8); - int gSrc=(((Color4444>>4)&15)*g_)>>(PREC_DRAW-8+4+8); - int bSrc=(((Color4444>>0)&15)*b_)>>(PREC_DRAW-8+4+8); - int ColorDest=scr[l]; - int rDest=(ColorDest&(31<<10))>>7; - int gDest=(ColorDest&(63<<5))>>2; - int bDest=(ColorDest&(31<<0))<<3; - int r=rDest+((Alfa*(rSrc-rDest))>>8); - int g=gDest+((Alfa*(gSrc-gDest))>>8); - int b=bDest+((Alfa*(bSrc-bDest))>>8); - scr[l]=rPal16[r]+gPal16[g]+bPal16[b]; - if(RenderState_zwrite) - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - } - r_+=dr_,g_+=dg_,b_+=db_,a_+=da_; - u_+=du_,v_+=dv_; - } - break; - default: - assert(0); - } - rb_+=dr31_,gb_+=dg31_,bb_+=db31_,ab_+=da31_; - ub_+=du31_,vb_+=dv31_; - } - dr_=dr1_,dg_=dg1_,db_=db1_,da_=da1_; - du_=du1_,dv_=dv1_; - } -} -void cGraph3dSoftware::L16_ZT_CMDT1_AMDT1(void *pscr,void *pzBuffer) -{ - SET_COORD_MDRGBA_UV1(v1,v2,v3); - unsigned short *scr=(unsigned short*)pscr,*zBuffer=(unsigned short*)pzBuffer,*Tex4444=(unsigned short*)texture; - long dye31=ye3-ye1, dye21=ye2-ye1, dye32=ye3-ye2; - long dxe31_=xe3-xe1,dz31_=z3-z1, dxe21_=xe2-xe1,dz21_=z2-z1, dxe32_=xe3-xe2,dz32_=z3-z2, - xeb_,xec_,xee_,dxee_, l, zb_,ze_,zc_,dze_; - long du31_=u13-u11,dv31_=v13-v11, du21_=u12-u11,dv21_=v12-v11, du32_=u13-u12, dv32_=v13-v12, - du_,dv_,du1_,dv1_; - long dr31_=mr3-mr1, dg31_=mg3-mg1, db31_=mb3-mb1, da31_=ma3-ma1, - dr21_=mr2-mr1, dg21_=mg2-mg1, db21_=mb2-mb1, da21_=ma2-ma1, - dr32_=mr3-mr2, dg32_=mg3-mg2, db32_=mb3-mb2, da32_=ma3-ma2, - dr_,dg_,db_,da_,dr1_,dg1_,db1_,da1_; - l=dxe31_*dye32-dxe32_*dye31; - du1_=((du32_*dye31-du31_*dye32)/l); - dv1_=((dv32_*dye31-dv31_*dye32)/l)<<_xt1; - dr1_=((dr32_*dye31-dr31_*dye32)/l); - dg1_=((dg32_*dye31-dg31_*dye32)/l); - db1_=((db32_*dye31-db31_*dye32)/l); - da1_=((da32_*dye31-da31_*dye32)/l); - l=dxe31_*dye21-dxe21_*dye31; - du_=((du21_*dye31-du31_*dye21)/l); - dv_=((dv21_*dye31-dv31_*dye21)/l)<<_xt1; - dr_=((dr21_*dye31-dr31_*dye21)/l); - dg_=((dg21_*dye31-dg31_*dye21)/l); - db_=((db21_*dye31-db31_*dye21)/l); - da_=((da21_*dye31-da31_*dye21)/l); - if(dye31) { dxe31_=(dxe31_<=yScrMax) yec=(yScrMax-1)*xScr; - if(ye3=yScrMax) yee=(yScrMax-1)*xScr; - else yee=ye3*xScr; - for(;yeb>PREC_DRAW)-1,xee=xee_>>PREC_DRAW; - int l=yeb+xeb,l_end=yeb+xee, z_=zb_; - long u_=ub_,v_=vb_<<_xt1; - long r_=rb_,g_=gb_,b_=bb_,a_=ab_; - int dxe=xee-xeb; if(dxe==0) dxe=1; - int dz_=(zb_-ze_)/dxe; - if(xeb>(xScrMax-1)) //--- - { - z_+=(xeb-xScrMax+1)*dz_; //--- - u_+=(xeb-xScrMax+1)*du_; //--- - v_+=(xeb-xScrMax+1)*dv_; //--- - r_+=(xeb-xScrMax+1)*dr_; - g_+=(xeb-xScrMax+1)*dg_; - b_+=(xeb-xScrMax+1)*db_; - a_+=(xeb-xScrMax+1)*da_; - l=yeb+(xScrMax-1); //--- - } - if(xee=l_end; l--,z_+=dz_) //--- - { - if((unsigned short)(z_>>PREC_DRAW)<=zBuffer[l]) - { - unsigned short Color4444=Tex4444[((v_&ymt1)+(u_&xmt1))>>PREC_DRAW]; - int Alfa=(((Color4444>>12)&15)*a_)>>(PREC_DRAW-8+4+8); - if(Alfa>=AlfaRef) - { - int rSrc=(((Color4444>>8)&15)*r_)>>(PREC_DRAW-8+4+8); - int gSrc=(((Color4444>>4)&15)*g_)>>(PREC_DRAW-8+4+8); - int bSrc=(((Color4444>>0)&15)*b_)>>(PREC_DRAW-8+4+8); - int ColorDest=scr[l]; - int rDest=(ColorDest&(31<<11))>>8; - int gDest=(ColorDest&(63<<5))>>3; - int bDest=(ColorDest&(31<<0))<<3; - int r=rDest+((Alfa*(rSrc-rDest))>>8); - int g=gDest+((Alfa*(gSrc-gDest))>>8); - int b=bDest+((Alfa*(bSrc-bDest))>>8); - scr[l]=rPal16[r]+gPal16[g]+bPal16[b]; - if(RenderState_zwrite) - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - } - r_+=dr_,g_+=dg_,b_+=db_,a_+=da_; - u_+=du_,v_+=dv_; - } - break; - case TEXFMT_RGB555: - for(;l>=l_end; l--,z_+=dz_) //--- - { - if((unsigned short)(z_>>PREC_DRAW)<=zBuffer[l]) - { - unsigned short Color4444=Tex4444[((v_&ymt1)+(u_&xmt1))>>PREC_DRAW]; - int Alfa=(((Color4444>>12)&15)*a_)>>(PREC_DRAW-8+4+8); - if(Alfa>=AlfaRef) - { - int rSrc=(((Color4444>>8)&15)*r_)>>(PREC_DRAW-8+4+8); - int gSrc=(((Color4444>>4)&15)*g_)>>(PREC_DRAW-8+4+8); - int bSrc=(((Color4444>>0)&15)*b_)>>(PREC_DRAW-8+4+8); - int ColorDest=scr[l]; - int rDest=(ColorDest&(31<<10))>>7; - int gDest=(ColorDest&(63<<5))>>2; - int bDest=(ColorDest&(31<<0))<<3; - int r=rDest+((Alfa*(rSrc-rDest))>>8); - int g=gDest+((Alfa*(gSrc-gDest))>>8); - int b=bDest+((Alfa*(bSrc-bDest))>>8); - scr[l]=rPal16[r]+gPal16[g]+bPal16[b]; - if(RenderState_zwrite) - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - } - r_+=dr_,g_+=dg_,b_+=db_,a_+=da_; - u_+=du_,v_+=dv_; - } - break; - default: - assert(0); - } - rb_+=dr31_,gb_+=dg31_,bb_+=db31_,ab_+=da31_; - ub_+=du31_,vb_+=dv31_; - } - dr_=dr1_,dg_=dg1_,db_=db1_,da_=da1_; - du_=du1_,dv_=dv1_; - } -} - -void cGraph3dSoftware::R16_ZT_CMDT1AS_AMDT1(void *pscr,void *pzBuffer) -{ - SET_COORD_MDRGBA_UV1_SRGBA(v1,v2,v3); - unsigned short *scr=(unsigned short*)pscr,*zBuffer=(unsigned short*)pzBuffer,*Tex4444=(unsigned short*)texture; - long dye31=ye3-ye1, dye21=ye2-ye1, dye32=ye3-ye2; - long dxe31_=xe3-xe1,dz31_=z3-z1, dxe21_=xe2-xe1,dz21_=z2-z1, dxe32_=xe3-xe2,dz32_=z3-z2, - xeb_,xec_,xee_,dxee_, l, zb_,ze_,zc_,dze_; - long du31_=u13-u11,dv31_=v13-v11, du21_=u12-u11,dv21_=v12-v11, du32_=u13-u12,dv32_=v13-v12, - du_,dv_,du1_,dv1_; - long dr31_=mr3-mr1, dg31_=mg3-mg1, db31_=mb3-mb1, da31_=ma3-ma1, - dr21_=mr2-mr1, dg21_=mg2-mg1, db21_=mb2-mb1, da21_=ma2-ma1, - dr32_=mr3-mr2, dg32_=mg3-mg2, db32_=mb3-mb2, da32_=ma3-ma2, - dr_,dg_,db_,da_,dr1_,dg1_,db1_,da1_; - long dar31_=ar3-ar1, dag31_=ag3-ag1, dab31_=ab3-ab1, daa31_=aa3-aa1, - dar21_=ar2-ar1, dag21_=ag2-ag1, dab21_=ab2-ab1, daa21_=aa2-aa1, - dar32_=ar3-ar2, dag32_=ag3-ag2, dab32_=ab3-ab2, daa32_=aa3-aa2, - dar_,dag_,dab_,daa_,dar1_,dag1_,dab1_,daa1_; - if((dxe21_>(xScr<<1))||(dxe32_>(xScr<<1))||(dxe31_>(xScr<<1))) return; - l=dxe32_*dye31-dxe31_*dye32; - du1_=((du32_*dye31-du31_*dye32)/l); - dv1_=((dv32_*dye31-dv31_*dye32)/l)<<_xt1; - dr1_=((dr32_*dye31-dr31_*dye32)/l); - dg1_=((dg32_*dye31-dg31_*dye32)/l); - db1_=((db32_*dye31-db31_*dye32)/l); - da1_=((da32_*dye31-da31_*dye32)/l); - dar1_=((dar32_*dye31-dar31_*dye32)/l); - dag1_=((dag32_*dye31-dag31_*dye32)/l); - dab1_=((dab32_*dye31-dab31_*dye32)/l); - daa1_=((daa32_*dye31-daa31_*dye32)/l); - l=dxe21_*dye31-dxe31_*dye21; - du_=((du21_*dye31-du31_*dye21)/l); - dv_=((dv21_*dye31-dv31_*dye21)/l)<<_xt1; - dr_=((dr21_*dye31-dr31_*dye21)/l); - dg_=((dg21_*dye31-dg31_*dye21)/l); - db_=((db21_*dye31-db31_*dye21)/l); - da_=((da21_*dye31-da31_*dye21)/l); - dar_=((dar21_*dye31-dar31_*dye21)/l); - dag_=((dag21_*dye31-dag31_*dye21)/l); - dab_=((dab21_*dye31-dab31_*dye21)/l); - daa_=((daa21_*dye31-daa31_*dye21)/l); - if(dye31) { dxe31_=(dxe31_<=yScrMax) yec=(yScrMax-1)*xScr; - if(ye3=yScrMax) yee=(yScrMax-1)*xScr; - else yee=ye3*xScr; - for(;yeb>PREC_DRAW,xee=xee_>>PREC_DRAW; - int l=yeb+xeb, l_end=yeb+xee, z_=zb_; - long u_=ub_,v_=vb_<<_xt1; - long r_=rb_,g_=gb_,b_=bb_,a_=ab_; - long ar_=arb_,ag_=agb_,ab_=abb_,aa_=aab_; - int dxe=xee-xeb; if(dxe==0) dxe=1; - int dz_=(ze_-zb_)/dxe; - if(xebxScrMax) l_end=yeb+xScrMax; - u_&=xmt1+((1<>PREC_DRAW)<=zBuffer[l]) - { - unsigned short Color4444=Tex4444[((v_&ymt1)+(u_&xmt1))>>PREC_DRAW]; - int Alfa=(((Color4444>>12)&15)*a_)>>(PREC_DRAW-8+4+8); - if(Alfa>=AlfaRef) - { - int rSrc=((((Color4444>>8)&15)*r_)>>(PREC_DRAW-8+4+8))+(ar_>>PREC_DRAW); - int gSrc=((((Color4444>>4)&15)*g_)>>(PREC_DRAW-8+4+8))+(ag_>>PREC_DRAW); - int bSrc=((((Color4444>>0)&15)*b_)>>(PREC_DRAW-8+4+8))+(ab_>>PREC_DRAW); - int ColorDest=scr[l]; - int rDest=(ColorDest&(31<<11))>>8; - int gDest=(ColorDest&(63<<5))>>3; - int bDest=(ColorDest&(31<<0))<<3; - int r=rDest+((Alfa*(rSrc-rDest))>>8); - int g=gDest+((Alfa*(gSrc-gDest))>>8); - int b=bDest+((Alfa*(bSrc-bDest))>>8); - scr[l]=rPal16[r]+gPal16[g]+bPal16[b]; - if(RenderState_zwrite) - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - } - r_+=dr_,g_+=dg_,b_+=db_,a_+=da_; - ar_+=dar_,ag_+=dag_,ab_+=dab_,aa_+=daa_; - u_+=du_,v_+=dv_; - } - break; - case TEXFMT_RGB555: - for(;l>PREC_DRAW)<=zBuffer[l]) - { - unsigned short Color4444=Tex4444[((v_&ymt1)+(u_&xmt1))>>PREC_DRAW]; - int Alfa=(((Color4444>>12)&15)*a_)>>(PREC_DRAW-8+4+8); - if(Alfa>=AlfaRef) - { - int rSrc=((((Color4444>>8)&15)*r_)>>(PREC_DRAW-8+4+8))+(ar_>>PREC_DRAW); - int gSrc=((((Color4444>>4)&15)*g_)>>(PREC_DRAW-8+4+8))+(ag_>>PREC_DRAW); - int bSrc=((((Color4444>>0)&15)*b_)>>(PREC_DRAW-8+4+8))+(ab_>>PREC_DRAW); - int ColorDest=scr[l]; - int rDest=(ColorDest&(31<<10))>>7; - int gDest=(ColorDest&(63<<5))>>2; - int bDest=(ColorDest&(31<<0))<<3; - int r=rDest+((Alfa*(rSrc-rDest))>>8); - int g=gDest+((Alfa*(gSrc-gDest))>>8); - int b=bDest+((Alfa*(bSrc-bDest))>>8); - scr[l]=rPal16[r]+gPal16[g]+bPal16[b]; - if(RenderState_zwrite) - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - } - r_+=dr_,g_+=dg_,b_+=db_,a_+=da_; - ar_+=dar_,ag_+=dag_,ab_+=dab_,aa_+=daa_; - u_+=du_,v_+=dv_; - } - break; - default: - assert(0); - } - rb_+=dr31_,gb_+=dg31_,bb_+=db31_,ab_+=da31_; - arb_+=dar31_,agb_+=dag31_,abb_+=dab31_,aab_+=daa31_; - ub_+=du31_,vb_+=dv31_; - } - dr_=dr1_,dg_=dg1_,db_=db1_,da_=da1_; - dar_=dar1_,dag_=dag1_,dab_=dab1_,daa_=daa1_; - du_=du1_,dv_=dv1_; - } -} -void cGraph3dSoftware::L16_ZT_CMDT1AS_AMDT1(void *pscr,void *pzBuffer) -{ - SET_COORD_MDRGBA_UV1_SRGBA(v1,v2,v3); - unsigned short *scr=(unsigned short*)pscr,*zBuffer=(unsigned short*)pzBuffer,*Tex4444=(unsigned short*)texture; - long dye31=ye3-ye1, dye21=ye2-ye1, dye32=ye3-ye2; - long dxe31_=xe3-xe1,dz31_=z3-z1, dxe21_=xe2-xe1,dz21_=z2-z1, dxe32_=xe3-xe2,dz32_=z3-z2, - xeb_,xec_,xee_,dxee_, l, zb_,ze_,zc_,dze_; - long du31_=u13-u11,dv31_=v13-v11, du21_=u12-u11,dv21_=v12-v11, du32_=u13-u12, dv32_=v13-v12, - du_,dv_,du1_,dv1_; - long dr31_=mr3-mr1, dg31_=mg3-mg1, db31_=mb3-mb1, da31_=ma3-ma1, - dr21_=mr2-mr1, dg21_=mg2-mg1, db21_=mb2-mb1, da21_=ma2-ma1, - dr32_=mr3-mr2, dg32_=mg3-mg2, db32_=mb3-mb2, da32_=ma3-ma2, - dr_,dg_,db_,da_,dr1_,dg1_,db1_,da1_; - long dar31_=ar3-ar1, dag31_=ag3-ag1, dab31_=ab3-ab1, daa31_=aa3-aa1, - dar21_=ar2-ar1, dag21_=ag2-ag1, dab21_=ab2-ab1, daa21_=aa2-aa1, - dar32_=ar3-ar2, dag32_=ag3-ag2, dab32_=ab3-ab2, daa32_=aa3-aa2, - dar_,dag_,dab_,daa_,dar1_,dag1_,dab1_,daa1_; - l=dxe31_*dye32-dxe32_*dye31; - du1_=((du32_*dye31-du31_*dye32)/l); - dv1_=((dv32_*dye31-dv31_*dye32)/l)<<_xt1; - dr1_=((dr32_*dye31-dr31_*dye32)/l); - dg1_=((dg32_*dye31-dg31_*dye32)/l); - db1_=((db32_*dye31-db31_*dye32)/l); - da1_=((da32_*dye31-da31_*dye32)/l); - dar1_=((dar32_*dye31-dar31_*dye32)/l); - dag1_=((dag32_*dye31-dag31_*dye32)/l); - dab1_=((dab32_*dye31-dab31_*dye32)/l); - daa1_=((daa32_*dye31-daa31_*dye32)/l); - l=dxe31_*dye21-dxe21_*dye31; - du_=((du21_*dye31-du31_*dye21)/l); - dv_=((dv21_*dye31-dv31_*dye21)/l)<<_xt1; - dr_=((dr21_*dye31-dr31_*dye21)/l); - dg_=((dg21_*dye31-dg31_*dye21)/l); - db_=((db21_*dye31-db31_*dye21)/l); - da_=((da21_*dye31-da31_*dye21)/l); - dar_=((dar21_*dye31-dar31_*dye21)/l); - dag_=((dag21_*dye31-dag31_*dye21)/l); - dab_=((dab21_*dye31-dab31_*dye21)/l); - daa_=((daa21_*dye31-daa31_*dye21)/l); - if(dye31) { dxe31_=(dxe31_<=yScrMax) yec=(yScrMax-1)*xScr; - if(ye3=yScrMax) yee=(yScrMax-1)*xScr; - else yee=ye3*xScr; - for(;yeb>PREC_DRAW)-1,xee=xee_>>PREC_DRAW; - int l=yeb+xeb,l_end=yeb+xee, z_=zb_; - long u_=ub_,v_=vb_<<_xt1; - long r_=rb_,g_=gb_,b_=bb_,a_=ab_; - long ar_=arb_,ag_=agb_,ab_=abb_,aa_=aab_; - int dxe=xee-xeb; if(dxe==0) dxe=1; - int dz_=(zb_-ze_)/dxe; - if(xeb>(xScrMax-1)) //--- - { - z_+=(xeb-xScrMax+1)*dz_; //--- - u_+=(xeb-xScrMax+1)*du_; //--- - v_+=(xeb-xScrMax+1)*dv_; //--- - r_+=(xeb-xScrMax+1)*dr_; - g_+=(xeb-xScrMax+1)*dg_; - b_+=(xeb-xScrMax+1)*db_; - a_+=(xeb-xScrMax+1)*da_; - ar_+=(xeb-xScrMax+1)*dar_; - ag_+=(xeb-xScrMax+1)*dag_; - ab_+=(xeb-xScrMax+1)*dab_; - aa_+=(xeb-xScrMax+1)*daa_; - l=yeb+(xScrMax-1); //--- - } - if(xee=l_end; l--,z_+=dz_) //--- - { - if((unsigned short)(z_>>PREC_DRAW)<=zBuffer[l]) - { - unsigned short Color4444=Tex4444[((v_&ymt1)+(u_&xmt1))>>PREC_DRAW]; - int Alfa=(((Color4444>>12)&15)*a_)>>(PREC_DRAW-8+4+8); - if(Alfa>=AlfaRef) - { - int rSrc=((((Color4444>>8)&15)*r_)>>(PREC_DRAW-8+4+8))+(ar_>>PREC_DRAW); - int gSrc=((((Color4444>>4)&15)*g_)>>(PREC_DRAW-8+4+8))+(ag_>>PREC_DRAW); - int bSrc=((((Color4444>>0)&15)*b_)>>(PREC_DRAW-8+4+8))+(ab_>>PREC_DRAW); - int ColorDest=scr[l]; - int rDest=(ColorDest&(31<<11))>>8; - int gDest=(ColorDest&(63<<5))>>3; - int bDest=(ColorDest&(31<<0))<<3; - int r=rDest+((Alfa*(rSrc-rDest))>>8); - int g=gDest+((Alfa*(gSrc-gDest))>>8); - int b=bDest+((Alfa*(bSrc-bDest))>>8); - scr[l]=rPal16[r]+gPal16[g]+bPal16[b]; - if(RenderState_zwrite) - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - } - r_+=dr_,g_+=dg_,b_+=db_,a_+=da_; - ar_+=dar_,ag_+=dag_,ab_+=dab_,aa_+=daa_; - u_+=du_,v_+=dv_; - } - break; - case TEXFMT_RGB555: - for(;l>=l_end; l--,z_+=dz_) //--- - { - if((unsigned short)(z_>>PREC_DRAW)<=zBuffer[l]) - { - unsigned short Color4444=Tex4444[((v_&ymt1)+(u_&xmt1))>>PREC_DRAW]; - int Alfa=(((Color4444>>12)&15)*a_)>>(PREC_DRAW-8+4+8); - if(Alfa>=AlfaRef) - { - int rSrc=((((Color4444>>8)&15)*r_)>>(PREC_DRAW-8+4+8))+(ar_>>PREC_DRAW); - int gSrc=((((Color4444>>4)&15)*g_)>>(PREC_DRAW-8+4+8))+(ag_>>PREC_DRAW); - int bSrc=((((Color4444>>0)&15)*b_)>>(PREC_DRAW-8+4+8))+(ab_>>PREC_DRAW); - int ColorDest=scr[l]; - int rDest=(ColorDest&(31<<10))>>7; - int gDest=(ColorDest&(63<<5))>>2; - int bDest=(ColorDest&(31<<0))<<3; - int r=rDest+((Alfa*(rSrc-rDest))>>8); - int g=gDest+((Alfa*(gSrc-gDest))>>8); - int b=bDest+((Alfa*(bSrc-bDest))>>8); - scr[l]=rPal16[r]+gPal16[g]+bPal16[b]; - if(RenderState_zwrite) - zBuffer[l]=(unsigned short)(z_>>PREC_DRAW); - } - } - r_+=dr_,g_+=dg_,b_+=db_,a_+=da_; - ar_+=dar_,ag_+=dag_,ab_+=dab_,aa_+=daa_; - u_+=du_,v_+=dv_; - } - break; - default: - assert(0); - } - rb_+=dr31_,gb_+=dg31_,bb_+=db31_,ab_+=da31_; - arb_+=dar31_,agb_+=dag31_,abb_+=dab31_,aab_+=daa31_; - ub_+=du31_,vb_+=dv31_; - } - dr_=dr1_,dg_=dg1_,db_=db1_,da_=da1_; - dar_=dar1_,dag_=dag1_,dab_=dab1_,daa_=daa1_; - du_=du1_,dv_=dv1_; - } -} \ No newline at end of file diff --git a/MechoSoma/VisGeneric/Graph3d/Software16.h b/MechoSoma/VisGeneric/Graph3d/Software16.h deleted file mode 100644 index dad022a..0000000 --- a/MechoSoma/VisGeneric/Graph3d/Software16.h +++ /dev/null @@ -1,76 +0,0 @@ -#ifndef __SOFTWARE16_H__ -#define __SOFTWARE16_H__ - -#ifndef _MROUND_ -#define _MROUND_ -inline int mround(float x) -{ - int a; - _asm { - fld x - fistp dword ptr a - } - return a; -} -#endif //_MROUND_ - -#define PREC_DRAW 10 - -#define SET_XYZW(v1,v2,v3) \ - { \ - xe1=mround(v1->xe); ye1=mround(v1->ye); z1=mround(v1->z*65535)<xe); ye2=mround(v2->ye); z2=mround(v2->z*65535)<xe); ye3=mround(v3->ye); z3=mround(v3->z*65535)<dr()<dg()<db()<da()<dr()<dg()<db()<da()<dr()<dg()<db()<da()<sr()<sg()<sb()<sa()<sr()<sg()<sb()<sa()<sr()<sg()<sb()<sa()<u1()*xst1_); v11=mround(p1->v1()*yst1_); \ - u12=mround(p2->u1()*xst1_); v12=mround(p2->v1()*yst1_); \ - u13=mround(p3->u1()*xst1_); v13=mround(p3->v1()*yst1_); \ - } -#define SET_UV2(f_u11,f_v11,f_u21,f_v21, f_u12,f_v12,f_u22,f_v22, f_u13,f_v13,f_u23,f_v23)\ - { \ - u11=mround(f_u11*xst1_); v11=mround(f_v11*yst1_); \ - u12=mround(f_u12*xst1_); v12=mround(f_v12*yst1_); \ - u13=mround(f_u13*xst1_); v13=mround(f_v13*yst1_); \ - u21=mround(f_u21*xst2_); v21=mround(f_v21*yst2_); \ - u22=mround(f_u22*xst2_); v22=mround(f_v22*yst2_); \ - u23=mround(f_u23*xst2_); v23=mround(f_v23*yst2_); \ - } -#define SET_COORD_UV1(p1,p2,p3) { SET_XYZW(p1,p2,p3); SET_UV1(p1,p2,p3); } -#define SET_COORD_MDRGBA(p1,p2,p3) { SET_XYZW(p1,p2,p3); SET_MDRGBA(p1,p2,p3); } -#define SET_COORD_MDRGBA_SRGBA(p1,p2,p3) { SET_XYZW(p1,p2,p3); SET_MDRGBA(p1,p2,p3); SET_ASRGBA(p1,p2,p3); } -#define SET_COORD_MDRGBA_UV1(p1,p2,p3) { SET_XYZW(p1,p2,p3); SET_MDRGBA(p1,p2,p3); SET_UV1(p1,p2,p3); } -#define SET_COORD_MDRGBA_UV1_SRGBA(p1,p2,p3){ SET_XYZW(p1,p2,p3); SET_MDRGBA(p1,p2,p3); SET_ASRGBA(p1,p2,p3); SET_UV1(p1,p2,p3); } - -#define SOFTWARE_DRAW_FIX(p1,p2,p3,FunctionPolygonRight,FunctionPolygonLeft) \ - { \ - xe1=mround(p1.xe),ye1=mround(p1.ye), xe2=mround(p2.xe),ye2=mround(p2.ye), xe3=mround(p3.xe),ye3=mround(p3.ye); \ - if(((xe3-xe2)*(ye3-ye1)-(xe3-xe1)*(ye3-ye2))>0) \ - if (ye1<=ye2) \ - { \ - if(ye2<=ye3) { v1=&p1,v2=&p2,v3=&p3; FunctionPolygonLeft(scr,zBuffer); } \ - else if(ye1<=ye3) { v1=&p1,v2=&p3,v3=&p2; FunctionPolygonRight(scr,zBuffer);} \ - else { v1=&p3,v2=&p1,v3=&p2; FunctionPolygonLeft(scr,zBuffer); } \ - } \ - else \ - { \ - if(ye1<=ye3) { v1=&p2,v2=&p1,v3=&p3; FunctionPolygonRight(scr,zBuffer);} \ - else if(ye2<=ye3) { v1=&p2,v2=&p3,v3=&p1; FunctionPolygonLeft(scr,zBuffer); } \ - else { v1=&p3,v2=&p2,v3=&p1; FunctionPolygonRight(scr,zBuffer);} \ - } \ - } - -#endif // __SOFTWARE16_H__ \ No newline at end of file