| 4079 | } |
| 4080 | |
| 4081 | void Scene::setMeshVertices(MeshID meshID, const std::map<std::string, ref<Buffer>>& buffers) |
| 4082 | { |
| 4083 | if (!mpUpdateMeshPass) |
| 4084 | mpUpdateMeshPass = ComputePass::create(mpDevice, kMeshIOShaderFilename, "setMeshVertices", getSceneDefines()); |
| 4085 | const auto& meshDesc = getMesh(meshID); |
| 4086 | |
| 4087 | // Bind variables. |
| 4088 | auto var = mpUpdateMeshPass->getRootVar()["meshUpdater"]; |
| 4089 | var["vertexCount"] = meshDesc.vertexCount; |
| 4090 | var["vbOffset"].setBlob(meshDesc.vbOffset); |
| 4091 | mMeshStaticData.bindShaderData(var["vertexData"]); |
| 4092 | for (const auto& name : kMeshUpdaterRequiredBufferNames) |
| 4093 | { |
| 4094 | FALCOR_CHECK(buffers.find(name) != buffers.end(), "Mesh data buffer '{}' is missing.", name); |
| 4095 | var[name] = buffers.at(name); |
| 4096 | } |
| 4097 | |
| 4098 | mpUpdateMeshPass->execute(mpDevice->getRenderContext(), meshDesc.vertexCount, 1, 1); |
| 4099 | |
| 4100 | // Update BLAS/TLAS. |
| 4101 | updateForInverseRendering(mpDevice->getRenderContext(), false, true); |
| 4102 | } |
| 4103 | |
| 4104 | inline pybind11::dict toPython(const Scene::SceneStats& stats) |
| 4105 | { |
no test coverage detected