mirror of https://github.com/bjornbytes/lovr.git
Fix vertex format binding;
This commit is contained in:
parent
7e5221492d
commit
3b33f4917e
|
@ -4011,25 +4011,7 @@ static void bindPipeline(Pass* pass, Draw* draw, Shader* shader) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Vertex formats
|
// Vertex formats
|
||||||
if (pipeline->formatHash != 1 + draw->vertex.format) {
|
if (draw->vertex.buffer && pipeline->formatHash != draw->vertex.buffer->hash) {
|
||||||
if (!draw->vertex.buffer) {
|
|
||||||
pipeline->formatHash = 1 + draw->vertex.format;
|
|
||||||
pipeline->info.vertex = state.vertexFormats[draw->vertex.format];
|
|
||||||
pipeline->dirty = true;
|
|
||||||
|
|
||||||
if (shader->hasCustomAttributes) {
|
|
||||||
for (uint32_t i = 0; i < shader->attributeCount; i++) {
|
|
||||||
if (shader->attributes[i].location < 10) {
|
|
||||||
pipeline->info.vertex.attributes[pipeline->info.vertex.attributeCount++] = (gpu_attribute) {
|
|
||||||
.buffer = 1,
|
|
||||||
.location = shader->attributes[i].location,
|
|
||||||
.type = GPU_TYPE_F32x4,
|
|
||||||
.offset = shader->attributes[i].location == LOCATION_COLOR ? 16 : 0
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
pipeline->formatHash = draw->vertex.buffer->hash;
|
pipeline->formatHash = draw->vertex.buffer->hash;
|
||||||
pipeline->info.vertex.bufferCount = 2;
|
pipeline->info.vertex.bufferCount = 2;
|
||||||
pipeline->info.vertex.attributeCount = shader->attributeCount;
|
pipeline->info.vertex.attributeCount = shader->attributeCount;
|
||||||
|
@ -4065,6 +4047,22 @@ static void bindPipeline(Pass* pass, Draw* draw, Shader* shader) {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (!draw->vertex.buffer && pipeline->formatHash != 1 + draw->vertex.format) {
|
||||||
|
pipeline->formatHash = 1 + draw->vertex.format;
|
||||||
|
pipeline->info.vertex = state.vertexFormats[draw->vertex.format];
|
||||||
|
pipeline->dirty = true;
|
||||||
|
|
||||||
|
if (shader->hasCustomAttributes) {
|
||||||
|
for (uint32_t i = 0; i < shader->attributeCount; i++) {
|
||||||
|
if (shader->attributes[i].location < 10) {
|
||||||
|
pipeline->info.vertex.attributes[pipeline->info.vertex.attributeCount++] = (gpu_attribute) {
|
||||||
|
.buffer = 1,
|
||||||
|
.location = shader->attributes[i].location,
|
||||||
|
.type = GPU_TYPE_F32x4,
|
||||||
|
.offset = shader->attributes[i].location == LOCATION_COLOR ? 16 : 0
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue