mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
Add some useful accessors to GPUState (backported from a work-in-progress branch)
This commit is contained in:
parent
6fee2b456c
commit
07b17560f4
1 changed files with 32 additions and 15 deletions
|
@ -209,11 +209,13 @@ struct GPUgstate
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
float worldMatrix[12];
|
// These are not directly mapped, instead these are loaded one-by-one through special commands.
|
||||||
float viewMatrix[12];
|
// However, these are actual state, and can be read back.
|
||||||
float projMatrix[16];
|
float worldMatrix[12]; // 4x3
|
||||||
float tgenMatrix[12];
|
float viewMatrix[12]; // 4x3
|
||||||
float boneMatrix[12 * 8]; // Eight bone matrices.
|
float projMatrix[16]; // 4x4
|
||||||
|
float tgenMatrix[12]; // 4x3
|
||||||
|
float boneMatrix[12 * 8]; // Eight 4x3 bone matrices.
|
||||||
|
|
||||||
// We ignore the high bits of the framebuffer in fbwidth - even 0x08000000 renders to vRAM.
|
// We ignore the high bits of the framebuffer in fbwidth - even 0x08000000 renders to vRAM.
|
||||||
u32 getFrameBufRawAddress() const { return (fbptr & 0xFFFFFF); }
|
u32 getFrameBufRawAddress() const { return (fbptr & 0xFFFFFF); }
|
||||||
|
@ -228,6 +230,8 @@ struct GPUgstate
|
||||||
// Pixel Pipeline
|
// Pixel Pipeline
|
||||||
bool isModeClear() const { return clearmode & 1; }
|
bool isModeClear() const { return clearmode & 1; }
|
||||||
bool isFogEnabled() const { return fogEnable & 1; }
|
bool isFogEnabled() const { return fogEnable & 1; }
|
||||||
|
float getFogCoef1() const { return getFloat24(fog1); }
|
||||||
|
float getFogCoef2() const { return getFloat24(fog2); }
|
||||||
|
|
||||||
// Cull
|
// Cull
|
||||||
bool isCullEnabled() const { return cullfaceEnable & 1; }
|
bool isCullEnabled() const { return cullfaceEnable & 1; }
|
||||||
|
@ -335,6 +339,8 @@ struct GPUgstate
|
||||||
unsigned int getAmbientG() const { return (ambientcolor>>8)&0xFF; }
|
unsigned int getAmbientG() const { return (ambientcolor>>8)&0xFF; }
|
||||||
unsigned int getAmbientB() const { return (ambientcolor>>16)&0xFF; }
|
unsigned int getAmbientB() const { return (ambientcolor>>16)&0xFF; }
|
||||||
unsigned int getAmbientA() const { return ambientalpha&0xFF; }
|
unsigned int getAmbientA() const { return ambientalpha&0xFF; }
|
||||||
|
unsigned int getAmbientRGBA() const { return (ambientcolor&0xFFFFFF) | ((ambientalpha&0xFF)<<24); }
|
||||||
|
unsigned int getMaterialUpdate() const { return materialupdate&0xFFFFFF; }
|
||||||
unsigned int getMaterialAmbientR() const { return materialambient&0xFF; }
|
unsigned int getMaterialAmbientR() const { return materialambient&0xFF; }
|
||||||
unsigned int getMaterialAmbientG() const { return (materialambient>>8)&0xFF; }
|
unsigned int getMaterialAmbientG() const { return (materialambient>>8)&0xFF; }
|
||||||
unsigned int getMaterialAmbientB() const { return (materialambient>>16)&0xFF; }
|
unsigned int getMaterialAmbientB() const { return (materialambient>>16)&0xFF; }
|
||||||
|
@ -343,21 +349,28 @@ struct GPUgstate
|
||||||
unsigned int getMaterialDiffuseR() const { return materialdiffuse&0xFF; }
|
unsigned int getMaterialDiffuseR() const { return materialdiffuse&0xFF; }
|
||||||
unsigned int getMaterialDiffuseG() const { return (materialdiffuse>>8)&0xFF; }
|
unsigned int getMaterialDiffuseG() const { return (materialdiffuse>>8)&0xFF; }
|
||||||
unsigned int getMaterialDiffuseB() const { return (materialdiffuse>>16)&0xFF; }
|
unsigned int getMaterialDiffuseB() const { return (materialdiffuse>>16)&0xFF; }
|
||||||
|
unsigned int getMaterialDiffuse() const { return materialdiffuse & 0xffffff; }
|
||||||
unsigned int getMaterialEmissiveR() const { return materialemissive&0xFF; }
|
unsigned int getMaterialEmissiveR() const { return materialemissive&0xFF; }
|
||||||
unsigned int getMaterialEmissiveG() const { return (materialemissive>>8)&0xFF; }
|
unsigned int getMaterialEmissiveG() const { return (materialemissive>>8)&0xFF; }
|
||||||
unsigned int getMaterialEmissiveB() const { return (materialemissive>>16)&0xFF; }
|
unsigned int getMaterialEmissiveB() const { return (materialemissive>>16)&0xFF; }
|
||||||
|
unsigned int getMaterialEmissive() const { return materialemissive & 0xffffff; }
|
||||||
unsigned int getMaterialSpecularR() const { return materialspecular&0xFF; }
|
unsigned int getMaterialSpecularR() const { return materialspecular&0xFF; }
|
||||||
unsigned int getMaterialSpecularG() const { return (materialspecular>>8)&0xFF; }
|
unsigned int getMaterialSpecularG() const { return (materialspecular>>8)&0xFF; }
|
||||||
unsigned int getMaterialSpecularB() const { return (materialspecular>>16)&0xFF; }
|
unsigned int getMaterialSpecularB() const { return (materialspecular>>16)&0xFF; }
|
||||||
|
unsigned int getMaterialSpecular() const { return materialspecular & 0xffffff; }
|
||||||
|
float getMaterialSpecularCoef() const { return getFloat24(materialspecularcoef); }
|
||||||
unsigned int getLightAmbientColorR(int chan) const { return lcolor[chan*3]&0xFF; }
|
unsigned int getLightAmbientColorR(int chan) const { return lcolor[chan*3]&0xFF; }
|
||||||
unsigned int getLightAmbientColorG(int chan) const { return (lcolor[chan*3]>>8)&0xFF; }
|
unsigned int getLightAmbientColorG(int chan) const { return (lcolor[chan*3]>>8)&0xFF; }
|
||||||
unsigned int getLightAmbientColorB(int chan) const { return (lcolor[chan*3]>>16)&0xFF; }
|
unsigned int getLightAmbientColorB(int chan) const { return (lcolor[chan*3]>>16)&0xFF; }
|
||||||
|
unsigned int getLightAmbientColor(int chan) const { return lcolor[chan*3]&0xFFFFFF; }
|
||||||
unsigned int getDiffuseColorR(int chan) const { return lcolor[1+chan*3]&0xFF; }
|
unsigned int getDiffuseColorR(int chan) const { return lcolor[1+chan*3]&0xFF; }
|
||||||
unsigned int getDiffuseColorG(int chan) const { return (lcolor[1+chan*3]>>8)&0xFF; }
|
unsigned int getDiffuseColorG(int chan) const { return (lcolor[1+chan*3]>>8)&0xFF; }
|
||||||
unsigned int getDiffuseColorB(int chan) const { return (lcolor[1+chan*3]>>16)&0xFF; }
|
unsigned int getDiffuseColorB(int chan) const { return (lcolor[1+chan*3]>>16)&0xFF; }
|
||||||
|
unsigned int getDiffuseColor(int chan) const { return lcolor[1+chan*3]&0xFFFFFF; }
|
||||||
unsigned int getSpecularColorR(int chan) const { return lcolor[2+chan*3]&0xFF; }
|
unsigned int getSpecularColorR(int chan) const { return lcolor[2+chan*3]&0xFF; }
|
||||||
unsigned int getSpecularColorG(int chan) const { return (lcolor[2+chan*3]>>8)&0xFF; }
|
unsigned int getSpecularColorG(int chan) const { return (lcolor[2+chan*3]>>8)&0xFF; }
|
||||||
unsigned int getSpecularColorB(int chan) const { return (lcolor[2+chan*3]>>16)&0xFF; }
|
unsigned int getSpecularColorB(int chan) const { return (lcolor[2+chan*3]>>16)&0xFF; }
|
||||||
|
unsigned int getSpecularColor(int chan) const { return lcolor[2+chan*3]&0xFFFFFF; }
|
||||||
|
|
||||||
int getPatchDivisionU() const { return patchdivision & 0x7F; }
|
int getPatchDivisionU() const { return patchdivision & 0x7F; }
|
||||||
int getPatchDivisionV() const { return (patchdivision >> 8) & 0x7F; }
|
int getPatchDivisionV() const { return (patchdivision >> 8) & 0x7F; }
|
||||||
|
@ -379,8 +392,12 @@ struct GPUgstate
|
||||||
int getRegionY1() const { return (region1 >> 10) & 0x3FF; }
|
int getRegionY1() const { return (region1 >> 10) & 0x3FF; }
|
||||||
int getRegionX2() const { return (region2 & 0x3FF); }
|
int getRegionX2() const { return (region2 & 0x3FF); }
|
||||||
int getRegionY2() const { return (region2 >> 10) & 0x3FF; }
|
int getRegionY2() const { return (region2 >> 10) & 0x3FF; }
|
||||||
float getViewportX1() const { return fabsf(getFloat24(viewportx1) * 2.0f); }
|
float getViewportX1() const { return getFloat24(viewportx1); }
|
||||||
float getViewportY1() const { return fabsf(getFloat24(viewporty1) * 2.0f); }
|
float getViewportY1() const { return getFloat24(viewporty1); }
|
||||||
|
float getViewportZ1() const { return getFloat24(viewportz1); }
|
||||||
|
float getViewportX2() const { return getFloat24(viewportx2); }
|
||||||
|
float getViewportY2() const { return getFloat24(viewporty2); }
|
||||||
|
float getViewportZ2() const { return getFloat24(viewportz2); }
|
||||||
// Fixed 16 point.
|
// Fixed 16 point.
|
||||||
int getOffsetX16() const { return offsetx & 0xFFFF; }
|
int getOffsetX16() const { return offsetx & 0xFFFF; }
|
||||||
// Fixed 16 point.
|
// Fixed 16 point.
|
||||||
|
|
Loading…
Add table
Reference in a new issue