More fog emulation groundwork both in OpenGL and DX9. Needs more fog format researching.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@586 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
XTra.KrazzY 2008-09-20 14:43:10 +00:00
parent a5488ccf58
commit 7c3f715f19
3 changed files with 24 additions and 5 deletions

View File

@ -39,6 +39,7 @@
#define BPMEM_CLEARBBOX2 0x56 // TODO(ector): add something that watches bboxes #define BPMEM_CLEARBBOX2 0x56 // TODO(ector): add something that watches bboxes
#define BPMEM_TEXMODE0_1 0x80 #define BPMEM_TEXMODE0_1 0x80
#define BPMEM_TEXMODE0_2 0xA0 #define BPMEM_TEXMODE0_2 0xA0
#define BPMEM_FOGRANGE 0xE8
#define BPMEM_FOGPARAM0 0xEE #define BPMEM_FOGPARAM0 0xEE
#define BPMEM_FOGBMAGNITUDE 0xEF #define BPMEM_FOGBMAGNITUDE 0xEF
#define BPMEM_FOGBEXPONENT 0xF0 #define BPMEM_FOGBEXPONENT 0xF0

View File

@ -311,6 +311,14 @@ void BPWritten(int addr, int changes, int newval)
} }
break; break;
case BPMEM_FOGRANGE:
if(changes) {
// TODO(XK): Fog range format
//Renderer::SetRenderState(D3DRS_FOGSTART, ...
//Renderer::SetRenderState(D3DRS_FOGEND, ...
}
break;
case BPMEM_FOGPARAM0: case BPMEM_FOGPARAM0:
{ {
// u32 fogATemp = bpmem.fog.a<<12; // u32 fogATemp = bpmem.fog.a<<12;
@ -341,11 +349,7 @@ void BPWritten(int addr, int changes, int newval)
/// u32 fogCTemp = bpmem.fog.c_proj_fsel.cShifted12 << 12; /// u32 fogCTemp = bpmem.fog.c_proj_fsel.cShifted12 << 12;
// float fogC = *(float*)(&fogCTemp); // float fogC = *(float*)(&fogCTemp);
if(bpmem.fog.c_proj_fsel.fsel > 0 && !bFog) {
Renderer::SetRenderState(D3DRS_FOGENABLE, true);
bFog = true;
}
//printf("%f %f magnitude: %x\n", bpmem.fog.a.GetA(),bpmem.fog.c_proj_fsel.GetC(), bpmem.fog.b_magnitude); //printf("%f %f magnitude: %x\n", bpmem.fog.a.GetA(),bpmem.fog.c_proj_fsel.GetC(), bpmem.fog.b_magnitude);
switch(bpmem.fog.c_proj_fsel.fsel) switch(bpmem.fog.c_proj_fsel.fsel)
{ {
@ -373,6 +377,12 @@ void BPWritten(int addr, int changes, int newval)
PanicAlert("Non-Emulated Fog selection %d\n", bpmem.fog.c_proj_fsel.fsel); PanicAlert("Non-Emulated Fog selection %d\n", bpmem.fog.c_proj_fsel.fsel);
break; break;
} }
if(bpmem.fog.c_proj_fsel.fsel > 0 && !bFog) {
Renderer::SetRenderState(D3DRS_FOGENABLE, true);
bFog = true;
}
} }
break; break;

View File

@ -256,6 +256,14 @@ void BPWritten(int addr, int changes, int newval)
} }
break; break;
case BPMEM_FOGRANGE:
if(changes) {
// TODO(XK): Fog range format
//glFogi(GL_FOG_START, ...
//glFogi(GL_FOG_END, ...
}
break;
case BPMEM_FOGPARAM0: case BPMEM_FOGPARAM0:
case BPMEM_FOGBEXPONENT: case BPMEM_FOGBEXPONENT:
case BPMEM_FOGBMAGNITUDE: case BPMEM_FOGBMAGNITUDE: