mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-23 06:09:50 -06:00
a little optimization in shaders constants setting , based on the same idea of nodchip changes.
a MAYORRRRRR change in pixel shader generation, please review all games you can and leave comments this must improve accuracy in graphic emulation a lot. for example: mario eyes in super mario galaxy, water pod transparency an water transparency on game intro in super mario sunshine, etc. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5457 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
@ -53,24 +53,32 @@ void SetPSConstant4f(int const_number, float f1, float f2, float f3, float f4)
|
||||
if (lastPSconstants[const_number][0] != f1 || lastPSconstants[const_number][1] != f2 ||
|
||||
lastPSconstants[const_number][2] != f3 || lastPSconstants[const_number][3] != f4)
|
||||
{
|
||||
glProgramEnvParameter4fARB(GL_FRAGMENT_PROGRAM_ARB, const_number, f1, f2, f3, f4);
|
||||
lastPSconstants[const_number][0] = f1;
|
||||
lastPSconstants[const_number][1] = f2;
|
||||
lastPSconstants[const_number][2] = f3;
|
||||
lastPSconstants[const_number][3] = f4;
|
||||
glProgramEnvParameter4fvARB(GL_FRAGMENT_PROGRAM_ARB, const_number, lastPSconstants[const_number]);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void SetPSConstant4fv(int const_number, const float *f)
|
||||
{
|
||||
if (lastPSconstants[const_number][0] != f[0] || lastPSconstants[const_number][1] != f[1] ||
|
||||
lastPSconstants[const_number][2] != f[2] || lastPSconstants[const_number][3] != f[3])
|
||||
{
|
||||
if (memcmp(&lastPSconstants[const_number], f, sizeof(float) * 4)) {
|
||||
memcpy(&lastPSconstants[const_number], f, sizeof(float) * 4);
|
||||
glProgramEnvParameter4fvARB(GL_FRAGMENT_PROGRAM_ARB, const_number, f);
|
||||
lastPSconstants[const_number][0] = f[0];
|
||||
lastPSconstants[const_number][1] = f[1];
|
||||
lastPSconstants[const_number][2] = f[2];
|
||||
lastPSconstants[const_number][3] = f[3];
|
||||
}
|
||||
}
|
||||
|
||||
void SetMultiPSConstant4fv(int const_number, int count, const float *f)
|
||||
{
|
||||
const float *f0 = f;
|
||||
for (int i = 0; i < count ;i++,f0+=4)
|
||||
{
|
||||
if (memcmp(&lastPSconstants[const_number + i], f0, sizeof(float) * 4)) {
|
||||
memcpy(&lastPSconstants[const_number + i], f0, sizeof(float) * 4);
|
||||
glProgramEnvParameter4fvARB(GL_FRAGMENT_PROGRAM_ARB, const_number + i, lastPSconstants[const_number + i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user