Commit: ca585aa4151f8715afc24e419d929b3d0ffcc3e5 Author: Sergey Sharybin Date: Tue May 19 11:36:06 2020 +0200 Branches: opensubdiv_compare https://developer.blender.org/rBca585aa4151f8715afc24e419d929b3d0ffcc3e5
OpenSubdiv: Refactor, pass higher level object through comparison =================================================================== M intern/opensubdiv/internal/topology/topology_refiner_capi.cc =================================================================== diff --git a/intern/opensubdiv/internal/topology/topology_refiner_capi.cc b/intern/opensubdiv/internal/topology/topology_refiner_capi.cc index 167d618804f..58c0ffbb7cf 100644 --- a/intern/opensubdiv/internal/topology/topology_refiner_capi.cc +++ b/intern/opensubdiv/internal/topology/topology_refiner_capi.cc @@ -35,10 +35,10 @@ const OpenSubdiv::Far::TopologyRefiner *getOSDTopologyRefiner( return topology_refiner->impl->topology_refiner; } -const OpenSubdiv::Far::TopologyLevel *getOSDTopologyBaseLevel( +const OpenSubdiv::Far::TopologyLevel &getOSDTopologyBaseLevel( const OpenSubdiv_TopologyRefiner *topology_refiner) { - return &getOSDTopologyRefiner(topology_refiner)->GetLevel(0); + return getOSDTopologyRefiner(topology_refiner)->GetLevel(0); } int getSubdivisionLevel(const OpenSubdiv_TopologyRefiner *topology_refiner) @@ -56,17 +56,17 @@ bool getIsAdaptive(const OpenSubdiv_TopologyRefiner *topology_refiner) int getNumVertices(const OpenSubdiv_TopologyRefiner *topology_refiner) { - return getOSDTopologyBaseLevel(topology_refiner)->GetNumVertices(); + return getOSDTopologyBaseLevel(topology_refiner).GetNumVertices(); } int getNumEdges(const OpenSubdiv_TopologyRefiner *topology_refiner) { - return getOSDTopologyBaseLevel(topology_refiner)->GetNumEdges(); + return getOSDTopologyBaseLevel(topology_refiner).GetNumEdges(); } int getNumFaces(const OpenSubdiv_TopologyRefiner *topology_refiner) { - return getOSDTopologyBaseLevel(topology_refiner)->GetNumFaces(); + return getOSDTopologyBaseLevel(topology_refiner).GetNumFaces(); } //////////////////////////////////////////////////////////////////////////////// @@ -81,31 +81,31 @@ static void convertArrayToRaw(const OpenSubdiv::Far::ConstIndexArray &array, int int getNumFaceVertices(const OpenSubdiv_TopologyRefiner *topology_refiner, const int face_index) { - const OpenSubdiv::Far::TopologyLevel *base_level = getOSDTopologyBaseLevel(topology_refiner); - return base_level->GetFaceVertices(face_index).size(); + const OpenSubdiv::Far::TopologyLevel &base_level = getOSDTopologyBaseLevel(topology_refiner); + return base_level.GetFaceVertices(face_index).size(); } void getFaceVertices(const OpenSubdiv_TopologyRefiner *topology_refiner, const int face_index, int *face_vertices_indices) { - const OpenSubdiv::Far::TopologyLevel *base_level = getOSDTopologyBaseLevel(topology_refiner); - OpenSubdiv::Far::ConstIndexArray array = base_level->GetFaceVertices(face_index); + const OpenSubdiv::Far::TopologyLevel &base_level = getOSDTopologyBaseLevel(topology_refiner); + OpenSubdiv::Far::ConstIndexArray array = base_level.GetFaceVertices(face_index); convertArrayToRaw(array, face_vertices_indices); } int getNumFaceEdges(const OpenSubdiv_TopologyRefiner *topology_refiner, const int face_index) { - const OpenSubdiv::Far::TopologyLevel *base_level = getOSDTopologyBaseLevel(topology_refiner); - return base_level->GetFaceEdges(face_index).size(); + const OpenSubdiv::Far::TopologyLevel &base_level = getOSDTopologyBaseLevel(topology_refiner); + return base_level.GetFaceEdges(face_index).size(); } void getFaceEdges(const OpenSubdiv_TopologyRefiner *topology_refiner, const int face_index, int *face_edges_indices) { - const OpenSubdiv::Far::TopologyLevel *base_level = getOSDTopologyBaseLevel(topology_refiner); - OpenSubdiv::Far::ConstIndexArray array = base_level->GetFaceEdges(face_index); + const OpenSubdiv::Far::TopologyLevel &base_level = getOSDTopologyBaseLevel(topology_refiner); + OpenSubdiv::Far::ConstIndexArray array = base_level.GetFaceEdges(face_index); convertArrayToRaw(array, face_edges_indices); } @@ -113,8 +113,8 @@ void getEdgeVertices(const OpenSubdiv_TopologyRefiner *topology_refiner, const int edge_index, int edge_vertices_indices[2]) { - const OpenSubdiv::Far::TopologyLevel *base_level = getOSDTopologyBaseLevel(topology_refiner); - OpenSubdiv::Far::ConstIndexArray array = base_level->GetEdgeVertices(edge_index); + const OpenSubdiv::Far::TopologyLevel &base_level = getOSDTopologyBaseLevel(topology_refiner); + OpenSubdiv::Far::ConstIndexArray array = base_level.GetEdgeVertices(edge_index); assert(array.size() == 2); edge_vertices_indices[0] = array[0]; edge_vertices_indices[1] = array[1]; @@ -122,16 +122,16 @@ void getEdgeVertices(const OpenSubdiv_TopologyRefiner *topology_refiner, int getNumVertexEdges(const OpenSubdiv_TopologyRefiner *topology_refiner, const int vertex_index) { - const OpenSubdiv::Far::TopologyLevel *base_level = getOSDTopologyBaseLevel(topology_refiner); - return base_level->GetVertexEdges(vertex_index).size(); + const OpenSubdiv::Far::TopologyLevel &base_level = getOSDTopologyBaseLevel(topology_refiner); + return base_level.GetVertexEdges(vertex_index).size(); } void getVertexEdges(const OpenSubdiv_TopologyRefiner *topology_refiner, const int vertex_index, int *vertex_edges_indices) { - const OpenSubdiv::Far::TopologyLevel *base_level = getOSDTopologyBaseLevel(topology_refiner); - OpenSubdiv::Far::ConstIndexArray array = base_level->GetVertexEdges(vertex_index); + const OpenSubdiv::Far::TopologyLevel &base_level = getOSDTopologyBaseLevel(topology_refiner); + OpenSubdiv::Far::ConstIndexArray array = base_level.GetVertexEdges(vertex_index); convertArrayToRaw(array, vertex_edges_indices); } @@ -172,8 +172,8 @@ void fillFacePtexIndexOffset(const OpenSubdiv_TopologyRefiner *topology_refiner, int getNumFVarChannels(const struct OpenSubdiv_TopologyRefiner *topology_refiner) { - const OpenSubdiv::Far::TopologyLevel *base_level = getOSDTopologyBaseLevel(topology_refiner); - return base_level->GetNumFVarChannels(); + const OpenSubdiv::Far::TopologyLevel &base_level = getOSDTopologyBaseLevel(topology_refiner); + return base_level.GetNumFVarChannels(); } OpenSubdiv_FVarLinearInterpolation getFVarLinearInterpolation( @@ -185,16 +185,16 @@ OpenSubdiv_FVarLinearInterpolation getFVarLinearInterpolation( int getNumFVarValues(const struct OpenSubdiv_TopologyRefiner *topology_refiner, const int channel) { - const OpenSubdiv::Far::TopologyLevel *base_level = getOSDTopologyBaseLevel(topology_refiner); - return base_level->GetNumFVarValues(channel); + const OpenSubdiv::Far::TopologyLevel &base_level = getOSDTopologyBaseLevel(topology_refiner); + return base_level.GetNumFVarValues(channel); } const int *getFaceFVarValueIndices(const struct OpenSubdiv_TopologyRefiner *topology_refiner, const int face_index, const int channel) { - const OpenSubdiv::Far::TopologyLevel *base_level = getOSDTopologyBaseLevel(topology_refiner); - return &base_level->GetFaceFVarValues(face_index, channel)[0]; + const OpenSubdiv::Far::TopologyLevel &base_level = getOSDTopologyBaseLevel(topology_refiner); + return &base_level.GetFaceFVarValues(face_index, channel)[0]; } //////////////////////////////////////////////////////////////////////////////// @@ -268,19 +268,19 @@ namespace { /////////////////////////////////////////////////////////// // Quick preliminary checks. -bool checkSchemeTypeMatches(const OpenSubdiv::Far::TopologyRefiner *topology_refiner, +bool checkSchemeTypeMatches(const OpenSubdiv_TopologyRefiner *topology_refiner, const OpenSubdiv_Converter *converter) { const OpenSubdiv::Sdc::SchemeType converter_scheme_type = blender::opensubdiv::getSchemeTypeFromCAPI(converter->getSchemeType(converter)); - return (converter_scheme_type == topology_refiner->GetSchemeType()); + return (converter_scheme_type == getOSDTopologyRefiner(topology_refiner)->GetSchemeType()); } -bool checkOptionsMatches(const OpenSubdiv::Far::TopologyRefiner *topology_refiner, +bool checkOptionsMatches(const OpenSubdiv_TopologyRefiner *topology_refiner, const OpenSubdiv_Converter *converter) { typedef OpenSubdiv::Sdc::Options Options; - const Options options = topology_refiner->GetSchemeOptions(); + const Options options = getOSDTopologyRefiner(topology_refiner)->GetSchemeOptions(); const Options::FVarLinearInterpolation fvar_interpolation = options.GetFVarLinearInterpolation(); const Options::FVarLinearInterpolation converter_fvar_interpolation = blender::opensubdiv::getFVarLinearInterpolationFromCAPI( @@ -291,17 +291,17 @@ bool checkOptionsMatches(const OpenSubdiv::Far::TopologyRefiner *topology_refine return true; } -bool checkGeometryCountersMatches(const OpenSubdiv::Far::TopologyRefiner *topology_refiner, +bool checkGeometryCountersMatches(const OpenSubdiv_TopologyRefiner *topology_refiner, const OpenSubdiv_Converter *converter) { using OpenSubdiv::Far::TopologyLevel; - const TopologyLevel &base_level = topology_refiner->GetLevel(0); + const TopologyLevel &base_level = getOSDTopologyBaseLevel(topology_refiner); return ((converter->getNumVertices(converter) == base_level.GetNumVertices()) && (converter->getNumEdges(converter) == base_level.GetNumEdges()) && (converter->getNumFaces(converter) == base_level.GetNumFaces())); } -bool checkPreliminaryMatches(const OpenSubdiv::Far::TopologyRefiner *topology_refiner, +bool checkPreliminaryMatches(const OpenSubdiv_TopologyRefiner *topology_refiner, const OpenSubdiv_Converter *converter) { return checkSchemeTypeMatches(topology_refiner, converter) && @@ -422,12 +422,12 @@ bool checkVerticesOfFacesMatch(const CyclicArray &indices_a, const CyclicArray & return false; } -bool checkGeometryFacesMatch(const OpenSubdiv::Far::TopologyRefiner *topology_refiner, +bool checkGeometryFacesMatch(const OpenSubdiv_TopologyRefiner *topology_refiner, const OpenSubdiv_Converter *converter) { using OpenSubdiv::Far::ConstIndexArray; using OpenSubdiv::Far::TopologyLevel; - const TopologyLevel &base_level = topology_refiner->GetLevel(0); + const TopologyLevel &base_level = getOSDTopologyBaseLevel(topology_refine @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs