diff --git a/examples/mtlViewer/mtlViewer.metal b/examples/mtlViewer/mtlViewer.metal index 60d45b9f..81f830b2 100644 --- a/examples/mtlViewer/mtlViewer.metal +++ b/examples/mtlViewer/mtlViewer.metal @@ -27,6 +27,24 @@ #include using namespace metal; +#if OSD_IS_ADAPTIVE +#if OSD_PATCH_GREGORY_BASIS +constant constexpr unsigned IndexLookupStride = 5; +#else +constant constexpr unsigned IndexLookupStride = 1; +#endif + +#define PATCHES_PER_THREADGROUP ((THREADS_PER_THREADGROUP * CONTROL_POINTS_PER_THREAD) / CONTROL_POINTS_PER_PATCH) +#define REAL_THREADGROUP_DIVISOR (CONTROL_POINTS_PER_PATCH / CONTROL_POINTS_PER_THREAD) + +static_assert(REAL_THREADGROUP_DIVISOR % 2 == 0, "REAL_THREADGROUP_DIVISOR must be a power of 2"); + +static_assert(!OSD_ENABLE_SCREENSPACE_TESSELLATION || !USE_PTVS_FACTORS, "USE_PTVS_FACTORS cannot be enabled if OSD_ENABLE_SCREENSPACE_TESSELLATION is enabled"); + +static_assert((OSD_ENABLE_SCREENSPACE_TESSELLATION && (OSD_FRACTIONAL_ODD_SPACING || OSD_FRACTIONAL_EVEN_SPACING)) || !OSD_ENABLE_SCREENSPACE_TESSELLATION, "OSD_ENABLE_SCREENSPACE_TESSELLATION requires OSD_FRACTIONAL_ODD_SPACING or OSD_FRACTIONAL_EVEN_SPACING"); + +#endif + #define SHADING_TYPE_MATERIAL 0 #define SHADING_TYPE_FACE_VARYING_COLOR 1 #define SHADING_TYPE_PATCH_TYPE 2 diff --git a/opensubdiv/osd/mtlPatchCommon.metal b/opensubdiv/osd/mtlPatchCommon.metal index e13f2ab3..e6fb9f27 100644 --- a/opensubdiv/osd/mtlPatchCommon.metal +++ b/opensubdiv/osd/mtlPatchCommon.metal @@ -42,24 +42,6 @@ #define OSD_NUM_ELEMENTS 3 #endif -#if OSD_IS_ADAPTIVE -#if OSD_PATCH_GREGORY_BASIS -constant constexpr unsigned IndexLookupStride = 5; -#else -constant constexpr unsigned IndexLookupStride = 1; -#endif - -#define PATCHES_PER_THREADGROUP ((THREADS_PER_THREADGROUP * CONTROL_POINTS_PER_THREAD) / CONTROL_POINTS_PER_PATCH) -#define REAL_THREADGROUP_DIVISOR (CONTROL_POINTS_PER_PATCH / CONTROL_POINTS_PER_THREAD) - -static_assert(REAL_THREADGROUP_DIVISOR % 2 == 0, "REAL_THREADGROUP_DIVISOR must be a power of 2"); - -static_assert(!OSD_ENABLE_SCREENSPACE_TESSELLATION || !USE_PTVS_FACTORS, "USE_PTVS_FACTORS cannot be enabled if OSD_ENABLE_SCREENSPACE_TESSELLATION is enabled"); - -static_assert((OSD_ENABLE_SCREENSPACE_TESSELLATION && (OSD_FRACTIONAL_ODD_SPACING || OSD_FRACTIONAL_EVEN_SPACING)) || !OSD_ENABLE_SCREENSPACE_TESSELLATION, "OSD_ENABLE_SCREENSPACE_TESSELLATION requires OSD_FRACTIONAL_ODD_SPACING or OSD_FRACTIONAL_EVEN_SPACING"); - -#endif - using namespace metal; using OsdPatchParamBufferType = packed_int3;