mirror of
https://github.com/PixarAnimationStudios/OpenSubdiv
synced 2024-12-23 08:20:06 +00:00
Mtl implementation cleanup thread dispatch
Moved some of the boiler-plate code related to thread group dispatching and configuration from the osd shader source to the example shader source.
This commit is contained in:
parent
cc6c9da070
commit
232d50c231
@ -27,6 +27,24 @@
|
||||
#include <metal_stdlib>
|
||||
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
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user