mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 09:08:47 +02:00
working on getting the Model payload to use model::Mesh
This commit is contained in:
parent
b8ea83099a
commit
edb485cb0f
4 changed files with 40 additions and 17 deletions
|
@ -415,29 +415,34 @@ void FBXReader::buildModelMesh(ExtractedMesh& extracted, const QString& url) {
|
||||||
|
|
||||||
if (normalsSize) {
|
if (normalsSize) {
|
||||||
mesh->addAttribute(gpu::Stream::NORMAL,
|
mesh->addAttribute(gpu::Stream::NORMAL,
|
||||||
model::BufferView(attribBuffer, normalsOffset, normalsSize,
|
model::BufferView(attribBuffer, normalsOffset, normalsSize,
|
||||||
gpu::Element(gpu::VEC3, gpu::FLOAT, gpu::XYZ)));
|
gpu::Element(gpu::VEC3, gpu::FLOAT, gpu::XYZ)));
|
||||||
}
|
}
|
||||||
if (tangentsSize) {
|
if (tangentsSize) {
|
||||||
mesh->addAttribute(gpu::Stream::TANGENT,
|
mesh->addAttribute(gpu::Stream::TANGENT,
|
||||||
model::BufferView(attribBuffer, tangentsOffset, tangentsSize,
|
model::BufferView(attribBuffer, tangentsOffset, tangentsSize,
|
||||||
gpu::Element(gpu::VEC3, gpu::FLOAT, gpu::XYZ)));
|
gpu::Element(gpu::VEC3, gpu::FLOAT, gpu::XYZ)));
|
||||||
}
|
}
|
||||||
if (colorsSize) {
|
if (colorsSize) {
|
||||||
mesh->addAttribute(gpu::Stream::COLOR,
|
mesh->addAttribute(gpu::Stream::COLOR,
|
||||||
model::BufferView(attribBuffer, colorsOffset, colorsSize,
|
model::BufferView(attribBuffer, colorsOffset, colorsSize,
|
||||||
gpu::Element(gpu::VEC3, gpu::FLOAT, gpu::RGB)));
|
gpu::Element(gpu::VEC3, gpu::FLOAT, gpu::RGB)));
|
||||||
}
|
}
|
||||||
if (texCoordsSize) {
|
if (texCoordsSize) {
|
||||||
mesh->addAttribute(gpu::Stream::TEXCOORD,
|
mesh->addAttribute(gpu::Stream::TEXCOORD,
|
||||||
model::BufferView( attribBuffer, texCoordsOffset, texCoordsSize,
|
model::BufferView( attribBuffer, texCoordsOffset, texCoordsSize,
|
||||||
gpu::Element(gpu::VEC2, gpu::FLOAT, gpu::UV)));
|
gpu::Element(gpu::VEC2, gpu::FLOAT, gpu::UV)));
|
||||||
}
|
}
|
||||||
if (texCoords1Size) {
|
if (texCoords1Size) {
|
||||||
|
mesh->addAttribute( gpu::Stream::TEXCOORD1,
|
||||||
|
model::BufferView(attribBuffer, texCoords1Offset, texCoords1Size,
|
||||||
|
gpu::Element(gpu::VEC2, gpu::FLOAT, gpu::UV)));
|
||||||
|
} else if (texCoordsSize) {
|
||||||
mesh->addAttribute(gpu::Stream::TEXCOORD1,
|
mesh->addAttribute(gpu::Stream::TEXCOORD1,
|
||||||
model::BufferView(attribBuffer, texCoords1Offset, texCoords1Size,
|
model::BufferView(attribBuffer, texCoordsOffset, texCoordsSize,
|
||||||
gpu::Element(gpu::VEC2, gpu::FLOAT, gpu::UV)));
|
gpu::Element(gpu::VEC2, gpu::FLOAT, gpu::UV)));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (clusterIndicesSize) {
|
if (clusterIndicesSize) {
|
||||||
mesh->addAttribute(gpu::Stream::SKIN_CLUSTER_INDEX,
|
mesh->addAttribute(gpu::Stream::SKIN_CLUSTER_INDEX,
|
||||||
model::BufferView(attribBuffer, clusterIndicesOffset, clusterIndicesSize,
|
model::BufferView(attribBuffer, clusterIndicesOffset, clusterIndicesSize,
|
||||||
|
|
|
@ -92,3 +92,16 @@ void BufferStream::addBuffer(const BufferPointer& buffer, Offset offset, Offset
|
||||||
_offsets.push_back(offset);
|
_offsets.push_back(offset);
|
||||||
_strides.push_back(stride);
|
_strides.push_back(stride);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BufferStream BufferStream::makeRangedStream(uint32 offset, uint32 count) const {
|
||||||
|
if ((offset < _buffers.size())) {
|
||||||
|
auto rangeSize = std::min(count, (uint32)(_buffers.size() - offset));
|
||||||
|
BufferStream newStream;
|
||||||
|
newStream._buffers.insert(newStream._buffers.begin(), _buffers.begin() + offset, _buffers.begin() + offset + rangeSize);
|
||||||
|
newStream._offsets.insert(newStream._offsets.begin(), _offsets.begin() + offset, _offsets.begin() + offset + rangeSize);
|
||||||
|
newStream._strides.insert(newStream._strides.begin(), _strides.begin() + offset, _strides.begin() + offset + rangeSize);
|
||||||
|
return newStream;
|
||||||
|
}
|
||||||
|
|
||||||
|
return BufferStream();
|
||||||
|
}
|
||||||
|
|
|
@ -139,7 +139,9 @@ public:
|
||||||
const Buffers& getBuffers() const { return _buffers; }
|
const Buffers& getBuffers() const { return _buffers; }
|
||||||
const Offsets& getOffsets() const { return _offsets; }
|
const Offsets& getOffsets() const { return _offsets; }
|
||||||
const Strides& getStrides() const { return _strides; }
|
const Strides& getStrides() const { return _strides; }
|
||||||
uint8 getNumBuffers() const { return _buffers.size(); }
|
uint32 getNumBuffers() const { return _buffers.size(); }
|
||||||
|
|
||||||
|
BufferStream makeRangedStream(uint32 offset, uint32 count = -1) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
Buffers _buffers;
|
Buffers _buffers;
|
||||||
|
|
|
@ -1573,14 +1573,17 @@ void Model::renderPart(RenderArgs* args, int meshIndex, int partIndex, int shape
|
||||||
// batch.setInputFormat(networkMesh._vertexFormat);
|
// batch.setInputFormat(networkMesh._vertexFormat);
|
||||||
// batch.setInputStream(0, *networkMesh._vertexStream);
|
// batch.setInputStream(0, *networkMesh._vertexStream);
|
||||||
} else {
|
} else {
|
||||||
return;
|
batch.setIndexBuffer(gpu::UINT32, (networkMesh._indexBuffer), 0);
|
||||||
batch.setIndexBuffer(gpu::UINT32, (networkMesh._indexBuffer), 0);
|
batch.setInputFormat((drawMesh->getVertexFormat()));
|
||||||
batch.setInputFormat((drawMesh->getVertexFormat()));
|
|
||||||
auto inputStream = drawMesh->makeBufferStream();
|
|
||||||
|
|
||||||
batch.setInputStream(0, inputStream);
|
batch.setInputBuffer(0, _blendedVertexBuffers[meshIndex], 0, sizeof(glm::vec3));
|
||||||
|
batch.setInputBuffer(1, _blendedVertexBuffers[meshIndex], vertexCount * sizeof(glm::vec3), sizeof(glm::vec3));
|
||||||
|
|
||||||
|
auto inputStream = drawMesh->makeBufferStream().makeRangedStream(2);
|
||||||
|
|
||||||
/* batch.setInputFormat(networkMesh._vertexFormat);
|
batch.setInputStream(2, inputStream);
|
||||||
|
|
||||||
|
/* batch.setInputFormat(networkMesh._vertexFormat);
|
||||||
|
|
||||||
batch.setInputBuffer(0, _blendedVertexBuffers[meshIndex], 0, sizeof(glm::vec3));
|
batch.setInputBuffer(0, _blendedVertexBuffers[meshIndex], 0, sizeof(glm::vec3));
|
||||||
batch.setInputBuffer(1, _blendedVertexBuffers[meshIndex], vertexCount * sizeof(glm::vec3), sizeof(glm::vec3));
|
batch.setInputBuffer(1, _blendedVertexBuffers[meshIndex], vertexCount * sizeof(glm::vec3), sizeof(glm::vec3));
|
||||||
|
|
Loading…
Reference in a new issue