softgpu: Use vertType prim override for flags.
These parameters are a real shame, was so clean before...
This commit is contained in:
parent
f274267143
commit
7a83f8bab5
9 changed files with 22 additions and 19 deletions
|
@ -202,11 +202,11 @@ struct TransformState {
|
|||
};
|
||||
|
||||
void ComputeTransformState(TransformState *state, const VertexReader &vreader) {
|
||||
state->enableTransform = !gstate.isModeThrough();
|
||||
state->enableTransform = !vreader.isThrough();
|
||||
state->enableLighting = gstate.isLightingEnabled();
|
||||
state->enableFog = gstate.isFogEnabled();
|
||||
state->readUV = !gstate.isModeClear() && gstate.isTextureMapEnabled() && vreader.hasUV();
|
||||
state->readWeights = vertTypeIsSkinningEnabled(gstate.vertType) && state->enableTransform;
|
||||
state->readWeights = vreader.skinningEnabled() && state->enableTransform;
|
||||
state->negateNormals = gstate.areNormalsReversed();
|
||||
|
||||
state->uvGenMode = gstate.getUVGenMode();
|
||||
|
@ -302,7 +302,7 @@ VertexData TransformUnit::ReadVertex(VertexReader &vreader, const TransformState
|
|||
Vec3<float> tmppos(0.f, 0.f, 0.f);
|
||||
Vec3<float> tmpnrm(0.f, 0.f, 0.f);
|
||||
|
||||
for (int i = 0; i < vertTypeGetNumBoneWeights(gstate.vertType); ++i) {
|
||||
for (int i = 0; i < vreader.numBoneWeights(); ++i) {
|
||||
Vec3<float> step = Vec3ByMatrix43(pos, gstate.boneMatrix + i * 12);
|
||||
tmppos += step * W[i];
|
||||
if (vreader.hasNormal()) {
|
||||
|
@ -506,7 +506,7 @@ void TransformUnit::SubmitPrimitive(const void* vertices, const void* indices, G
|
|||
// TODO: Do this in two passes - first process the vertices (before indexing/stripping),
|
||||
// then resolve the indices. This lets us avoid transforming shared vertices twice.
|
||||
|
||||
binner_->UpdateState();
|
||||
binner_->UpdateState(vreader.isThrough());
|
||||
|
||||
static TransformState transformState;
|
||||
if (binner_->HasDirty(SoftDirty::LIGHT_ALL | SoftDirty::TRANSFORM_ALL)) {
|
||||
|
@ -595,7 +595,7 @@ void TransformUnit::SubmitPrimitive(const void* vertices, const void* indices, G
|
|||
}
|
||||
}
|
||||
|
||||
if (data_index == 4 && gstate.isModeThrough() && cullType == CullType::OFF) {
|
||||
if (data_index == 4 && vreader.isThrough() && cullType == CullType::OFF) {
|
||||
if (Rasterizer::DetectRectangleThroughModeSlices(binner_->State(), data)) {
|
||||
data[1] = data[3];
|
||||
data_index = 2;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue