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];
|
||||
float viewMatrix[12];
|
||||
float projMatrix[16];
|
||||
float tgenMatrix[12];
|
||||
float boneMatrix[12 * 8]; // Eight bone matrices.
|
||||
// These are not directly mapped, instead these are loaded one-by-one through special commands.
|
||||
// However, these are actual state, and can be read back.
|
||||
float worldMatrix[12]; // 4x3
|
||||
float viewMatrix[12]; // 4x3
|
||||
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.
|
||||
u32 getFrameBufRawAddress() const { return (fbptr & 0xFFFFFF); }
|
||||
|
@ -228,6 +230,8 @@ struct GPUgstate
|
|||
// Pixel Pipeline
|
||||
bool isModeClear() const { return clearmode & 1; }
|
||||
bool isFogEnabled() const { return fogEnable & 1; }
|
||||
float getFogCoef1() const { return getFloat24(fog1); }
|
||||
float getFogCoef2() const { return getFloat24(fog2); }
|
||||
|
||||
// Cull
|
||||
bool isCullEnabled() const { return cullfaceEnable & 1; }
|
||||
|
@ -335,6 +339,8 @@ struct GPUgstate
|
|||
unsigned int getAmbientG() const { return (ambientcolor>>8)&0xFF; }
|
||||
unsigned int getAmbientB() const { return (ambientcolor>>16)&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 getMaterialAmbientG() const { return (materialambient>>8)&0xFF; }
|
||||
unsigned int getMaterialAmbientB() const { return (materialambient>>16)&0xFF; }
|
||||
|
@ -343,21 +349,28 @@ struct GPUgstate
|
|||
unsigned int getMaterialDiffuseR() const { return materialdiffuse&0xFF; }
|
||||
unsigned int getMaterialDiffuseG() const { return (materialdiffuse>>8)&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 getMaterialEmissiveG() const { return (materialemissive>>8)&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 getMaterialSpecularG() const { return (materialspecular>>8)&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 getLightAmbientColorG(int chan) const { return (lcolor[chan*3]>>8)&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 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 getDiffuseColor(int chan) const { return lcolor[1+chan*3]&0xFFFFFF; }
|
||||
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 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 getPatchDivisionV() const { return (patchdivision >> 8) & 0x7F; }
|
||||
|
@ -379,8 +392,12 @@ struct GPUgstate
|
|||
int getRegionY1() const { return (region1 >> 10) & 0x3FF; }
|
||||
int getRegionX2() const { return (region2 & 0x3FF); }
|
||||
int getRegionY2() const { return (region2 >> 10) & 0x3FF; }
|
||||
float getViewportX1() const { return fabsf(getFloat24(viewportx1) * 2.0f); }
|
||||
float getViewportY1() const { return fabsf(getFloat24(viewporty1) * 2.0f); }
|
||||
float getViewportX1() const { return getFloat24(viewportx1); }
|
||||
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.
|
||||
int getOffsetX16() const { return offsetx & 0xFFFF; }
|
||||
// Fixed 16 point.
|
||||
|
|
Loading…
Add table
Reference in a new issue