MCPcopy Create free account
hub / github.com/RenderKit/embree / compact_vertices

Method compact_vertices

tutorials/common/scenegraph/scenegraph.cpp:824–866  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

822 }
823
824 void SceneGraph::HairSetNode::compact_vertices()
825 {
826 std::vector<avector<Vec3ff>> positions_o(positions.size());
827 for (size_t i=0; i<positions.size(); i++)
828 positions_o.reserve(positions[i].size());
829
830 for (size_t i=0; i<hairs.size(); i++)
831 {
832 unsigned idx = hairs[i].vertex;
833 if (test_location(positions,idx,positions_o,positions_o[0].size()-1))
834 {
835 hairs[i].vertex = (unsigned) positions_o[0].size()-1;
836 for (size_t k=0; k<positions.size(); k++) {
837 positions_o[k].push_back(positions[k][idx+1]);
838 positions_o[k].push_back(positions[k][idx+2]);
839 positions_o[k].push_back(positions[k][idx+3]);
840 }
841 }
842
843 else if (test_location(positions,idx,positions_o,positions_o[0].size()-3))
844 {
845 hairs[i].vertex = (unsigned) positions_o[0].size()-3;
846 for (size_t k=0; k<positions.size(); k++)
847 positions_o[k].push_back(positions[k][idx+3]);
848 }
849
850 else
851 {
852 hairs[i].vertex = (unsigned) positions_o[0].size();
853 for (size_t k=0; k<positions.size(); k++) {
854 positions_o[k].push_back(positions[k][idx+0]);
855 positions_o[k].push_back(positions[k][idx+1]);
856 positions_o[k].push_back(positions[k][idx+2]);
857 positions_o[k].push_back(positions[k][idx+3]);
858 }
859 }
860 }
861
862 for (auto& v : positions_o)
863 v.shrink_to_fit();
864
865 positions = std::move(positions_o);
866 }
867
868 void SceneGraph::extend_animation(Ref<SceneGraph::Node> node0, Ref<SceneGraph::Node> node1)
869 {

Callers

nothing calls this directly

Calls 5

test_locationFunction · 0.85
shrink_to_fitMethod · 0.80
sizeMethod · 0.45
reserveMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected