mirror of
https://github.com/blawar/GLideN64.git
synced 2024-07-04 10:03:36 +00:00
Fix fog for F3DSWRS
This commit is contained in:
parent
a0c2b39a65
commit
089dd2df0e
|
@ -30,6 +30,8 @@
|
|||
#define F3DSWRS_TRI1 0xBF
|
||||
|
||||
#define F3DSWRS_MV_TEXSCALE 0x82
|
||||
#define F3DSWRS_MW_FOG_MULTIPLIER 0x08
|
||||
#define F3DSWRS_MW_FOG_OFFSET 0x0A
|
||||
|
||||
void F3DSWRS_VertexColor(u32, u32 _w1)
|
||||
{
|
||||
|
@ -181,11 +183,13 @@ void F3DSWRS_MoveWord(u32 _w0, u32 _w1)
|
|||
case G_MW_SEGMENT:
|
||||
gSPSegment( _SHIFTR( _w0, 8, 16 ) >> 2, _w1 & 0x00FFFFFF );
|
||||
break;
|
||||
case G_MW_FOG:
|
||||
gSPFogFactor( (s16)_SHIFTR( _w1, 16, 16 ), (s16)_SHIFTR( _w1, 0, 16 ) );
|
||||
case F3DSWRS_MW_FOG_MULTIPLIER:
|
||||
gSP.fog.multiplierf = _FIXED2FLOAT((s32)_w1, 16);
|
||||
gSP.changed |= CHANGED_FOGPOSITION;
|
||||
break;
|
||||
case G_MW_LIGHTCOL:
|
||||
gSPLightColor((_SHIFTR( _w0, 8, 8 ) / 32) + 1, _w1 );
|
||||
case F3DSWRS_MW_FOG_OFFSET:
|
||||
gSP.fog.offsetf = _FIXED2FLOAT((s32)_w1, 16);
|
||||
gSP.changed |= CHANGED_FOGPOSITION;
|
||||
break;
|
||||
case G_MW_PERSPNORM:
|
||||
gSPPerspNormalize( _w1 );
|
||||
|
|
|
@ -261,7 +261,7 @@ public:
|
|||
nFogUsage = 2;
|
||||
}
|
||||
uFogUsage.set(nFogUsage, _force);
|
||||
uFogScale.set((float)gSP.fog.multiplier / 256.0f, (float)gSP.fog.offset / 256.0f, _force);
|
||||
uFogScale.set(gSP.fog.multiplierf, gSP.fog.offsetf, _force);
|
||||
}
|
||||
|
||||
private:
|
||||
|
|
|
@ -511,11 +511,12 @@ void ZSort_MoveMem( u32 _w0, u32 _w1 )
|
|||
const f32 scale_x = _FIXED2FLOAT( *(s16*)&RDRAM[(a+0)^1], 2 );
|
||||
const f32 scale_y = _FIXED2FLOAT( *(s16*)&RDRAM[(a+1)^1], 2 );
|
||||
const f32 scale_z = _FIXED2FLOAT( *(s16*)&RDRAM[(a+2)^1], 10 );
|
||||
gSP.fog.multiplier = ((s16*)RDRAM)[(a+3)^1];
|
||||
const s16 fm = ((s16*)RDRAM)[(a+3)^1];
|
||||
const f32 trans_x = _FIXED2FLOAT( *(s16*)&RDRAM[(a+4)^1], 2 );
|
||||
const f32 trans_y = _FIXED2FLOAT( *(s16*)&RDRAM[(a+5)^1], 2 );
|
||||
const f32 trans_z = _FIXED2FLOAT( *(s16*)&RDRAM[(a+6)^1], 10 );
|
||||
gSP.fog.offset = ((s16*)RDRAM)[(a+7)^1];
|
||||
const s16 fo = ((s16*)RDRAM)[(a+7)^1];
|
||||
gSPFogFactor(fm, fo);
|
||||
|
||||
gSP.viewport.vscale[0] = scale_x;
|
||||
gSP.viewport.vscale[1] = scale_y;
|
||||
|
|
|
@ -1899,6 +1899,8 @@ void gSPFogFactor( s16 fm, s16 fo )
|
|||
{
|
||||
gSP.fog.multiplier = fm;
|
||||
gSP.fog.offset = fo;
|
||||
gSP.fog.multiplierf = _FIXED2FLOAT(fm, 8);
|
||||
gSP.fog.offsetf = _FIXED2FLOAT(fo, 8);
|
||||
|
||||
gSP.changed |= CHANGED_FOGPOSITION;
|
||||
DebugMsg(DEBUG_NORMAL, "gSPFogFactor( %i, %i );\n", fm, fo);
|
||||
|
|
Loading…
Reference in New Issue
Block a user