| 4056 | } |
| 4057 | |
| 4058 | void Scene::getMeshVerticesAndIndices(MeshID meshID, const std::map<std::string, ref<Buffer>>& buffers) |
| 4059 | { |
| 4060 | if (!mpLoadMeshPass) |
| 4061 | mpLoadMeshPass = ComputePass::create(mpDevice, kMeshIOShaderFilename, "getMeshVerticesAndIndices", getSceneDefines()); |
| 4062 | const auto& meshDesc = getMesh(meshID); |
| 4063 | |
| 4064 | // Bind variables. |
| 4065 | auto var = mpLoadMeshPass->getRootVar()["meshLoader"]; |
| 4066 | var["vertexCount"] = meshDesc.vertexCount; |
| 4067 | var["vbOffset"] = meshDesc.vbOffset; |
| 4068 | var["triangleCount"] = meshDesc.getTriangleCount(); |
| 4069 | var["ibOffset"] = meshDesc.ibOffset; |
| 4070 | var["use16BitIndices"] = meshDesc.use16BitIndices(); |
| 4071 | bindShaderData(var["scene"]); |
| 4072 | for (const auto& name : kMeshLoaderRequiredBufferNames) |
| 4073 | { |
| 4074 | FALCOR_CHECK(buffers.find(name) != buffers.end(), "Mesh data buffer '{}' is missing.", name); |
| 4075 | var[name] = buffers.at(name); |
| 4076 | } |
| 4077 | |
| 4078 | mpLoadMeshPass->execute(mpDevice->getRenderContext(), std::max(meshDesc.vertexCount, meshDesc.getTriangleCount()), 1, 1); |
| 4079 | } |
| 4080 | |
| 4081 | void Scene::setMeshVertices(MeshID meshID, const std::map<std::string, ref<Buffer>>& buffers) |
| 4082 | { |
no test coverage detected