diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-07-17 19:06:32 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-07-18 16:42:49 +0300 |
commit | c64262a05ab0e9a7c5b69fc83ea53fb5825f442c (patch) | |
tree | 014de046f9e9af6b5642086547e7c3e554b90bbf /intern/opensubdiv/internal/opensubdiv_converter_internal.cc | |
parent | 428743a9b06cc09b4eb4dd3e7794d45d13457fb8 (diff) |
OpenSubdiv: Add API to evaluate face-varying data
There are move changes along the line to keep everything
working from from C.
Diffstat (limited to 'intern/opensubdiv/internal/opensubdiv_converter_internal.cc')
-rw-r--r-- | intern/opensubdiv/internal/opensubdiv_converter_internal.cc | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/intern/opensubdiv/internal/opensubdiv_converter_internal.cc b/intern/opensubdiv/internal/opensubdiv_converter_internal.cc index 56b5657121d..32815dc34dc 100644 --- a/intern/opensubdiv/internal/opensubdiv_converter_internal.cc +++ b/intern/opensubdiv/internal/opensubdiv_converter_internal.cc @@ -49,6 +49,10 @@ getFVarLinearInterpolationFromCAPI( return Options::FVAR_LINEAR_NONE; case OSD_FVAR_LINEAR_INTERPOLATION_CORNERS_ONLY: return Options::FVAR_LINEAR_CORNERS_ONLY; + case OSD_FVAR_LINEAR_INTERPOLATION_CORNERS_PLUS1: + return Options::FVAR_LINEAR_CORNERS_PLUS1; + case OSD_FVAR_LINEAR_INTERPOLATION_CORNERS_PLUS2: + return Options::FVAR_LINEAR_CORNERS_PLUS2; case OSD_FVAR_LINEAR_INTERPOLATION_BOUNDARIES: return Options::FVAR_LINEAR_BOUNDARIES; case OSD_FVAR_LINEAR_INTERPOLATION_ALL: @@ -58,6 +62,28 @@ getFVarLinearInterpolationFromCAPI( return Options::FVAR_LINEAR_NONE; } +OpenSubdiv_FVarLinearInterpolation +getCAPIFVarLinearInterpolationFromOSD( + OpenSubdiv::Sdc::Options::FVarLinearInterpolation linear_interpolation) { + typedef OpenSubdiv::Sdc::Options Options; + switch (linear_interpolation) { + case Options::FVAR_LINEAR_NONE: + return OSD_FVAR_LINEAR_INTERPOLATION_NONE; + case Options::FVAR_LINEAR_CORNERS_ONLY: + return OSD_FVAR_LINEAR_INTERPOLATION_CORNERS_ONLY; + case Options::FVAR_LINEAR_CORNERS_PLUS1: + return OSD_FVAR_LINEAR_INTERPOLATION_CORNERS_PLUS1; + case Options::FVAR_LINEAR_CORNERS_PLUS2: + return OSD_FVAR_LINEAR_INTERPOLATION_CORNERS_PLUS2; + case Options::FVAR_LINEAR_BOUNDARIES: + return OSD_FVAR_LINEAR_INTERPOLATION_BOUNDARIES; + case Options::FVAR_LINEAR_ALL: + return OSD_FVAR_LINEAR_INTERPOLATION_ALL; + } + assert(!"Unknown fvar linear interpolation passed via C-API"); + return OSD_FVAR_LINEAR_INTERPOLATION_NONE; +} + float getCompatibleEdgeSharpness(const OpenSubdiv_Converter* converter, int edge_index) { if (converter->getNumEdgeFaces(converter, edge_index) == 2) { |