mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
Use gstate.getNumBoneWeights()
This commit is contained in:
parent
3bae3c8cd7
commit
0bc3fd58d2
1 changed files with 9 additions and 7 deletions
|
@ -502,9 +502,7 @@ void TransformDrawEngine::SoftwareTransformAndDraw(
|
|||
// Skinning
|
||||
Vec3f psum(0,0,0);
|
||||
Vec3f nsum(0,0,0);
|
||||
int nweights = ((vertType & GE_VTYPE_WEIGHTCOUNT_MASK) >> GE_VTYPE_WEIGHTCOUNT_SHIFT) + 1;
|
||||
for (int i = 0; i < nweights; i++)
|
||||
{
|
||||
for (int i = 0; i < gstate.getNumBoneWeights(); i++) {
|
||||
if (weights[i] != 0.0f) {
|
||||
Vec3ByMatrix43(out, pos, gstate.boneMatrix+i*12);
|
||||
Vec3f tpos(out);
|
||||
|
@ -578,8 +576,7 @@ void TransformDrawEngine::SoftwareTransformAndDraw(
|
|||
reader.ReadUV(ruv);
|
||||
|
||||
// Perform texture coordinate generation after the transform and lighting - one style of UV depends on lights.
|
||||
switch (gstate.getUVGenMode())
|
||||
{
|
||||
switch (gstate.getUVGenMode()) {
|
||||
case GE_TEXMAP_TEXTURE_COORDS: // UV mapping
|
||||
case GE_TEXMAP_UNKNOWN: // Seen in Riviera. Unsure of meaning, but this works.
|
||||
// Texture scale/offset is only performed in this mode.
|
||||
|
@ -587,18 +584,20 @@ void TransformDrawEngine::SoftwareTransformAndDraw(
|
|||
uv[1] = vscale * (ruv[1]*gstate_c.uv.vScale + gstate_c.uv.vOff);
|
||||
uv[2] = 1.0f;
|
||||
break;
|
||||
|
||||
case GE_TEXMAP_TEXTURE_MATRIX:
|
||||
{
|
||||
// Projection mapping
|
||||
Vec3f source;
|
||||
switch (gstate.getUVProjMode())
|
||||
{
|
||||
switch (gstate.getUVProjMode()) {
|
||||
case GE_PROJMAP_POSITION: // Use model space XYZ as source
|
||||
source = pos;
|
||||
break;
|
||||
|
||||
case GE_PROJMAP_UV: // Use unscaled UV as source
|
||||
source = Vec3f(ruv[0], ruv[1], 0.0f);
|
||||
break;
|
||||
|
||||
case GE_PROJMAP_NORMALIZED_NORMAL: // Use normalized normal as source
|
||||
if (reader.hasNormal()) {
|
||||
source = Vec3f(norm).Normalized();
|
||||
|
@ -607,6 +606,7 @@ void TransformDrawEngine::SoftwareTransformAndDraw(
|
|||
source = Vec3f(0.0f, 0.0f, 1.0f);
|
||||
}
|
||||
break;
|
||||
|
||||
case GE_PROJMAP_NORMAL: // Use non-normalized normal as source!
|
||||
if (reader.hasNormal()) {
|
||||
source = Vec3f(norm);
|
||||
|
@ -624,6 +624,7 @@ void TransformDrawEngine::SoftwareTransformAndDraw(
|
|||
uv[2] = uvw[2];
|
||||
}
|
||||
break;
|
||||
|
||||
case GE_TEXMAP_ENVIRONMENT_MAP:
|
||||
// Shade mapping - use two light sources to generate U and V.
|
||||
{
|
||||
|
@ -635,6 +636,7 @@ void TransformDrawEngine::SoftwareTransformAndDraw(
|
|||
uv[2] = 1.0f;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
// Illegal
|
||||
ERROR_LOG_REPORT(G3D, "Impossible UV gen mode? %d", gstate.getUVGenMode());
|
||||
|
|
Loading…
Add table
Reference in a new issue