The irregular patches around extraordinary vertices
might have transitions edges depending on the secondary
refinement level specified during topological refinement.
We used to skip the computation of the transition mask
for irregular patches, but this is now necessary
since the introduction of the secondary level option.
Refactored computation and drawing code used
for tessellated patches to improve readability
and extensibility.
- Updated mtlViewer.metal computation kernel to express
data indexing using familiar semantic concepts: i.e.
primitiveID, vertexID, etc. instead of threadgroup
semantics.
- Updated mtlViewer.mm to consolidate patch type
dispatch. Now, the configuration and execution
of the compute and drawing passes is controlled
by a PipelineConfig descriptor.
Fixed mtlViewer to be more consistent with the other
example viewers and allow screen space tessellation
to be enabled independently from fractional tessellation.
Updated Metal shaders to add support for drawing triangle
patches. This matches the current GLSL implementation.
- BoxSplineTriangle and GregoryTriangle patch shaders
- tess factor and tess evalutation for triangle patches
- improved adaptive tessellation code organization and function names
- quartic Bezier triangle patch evaluation
- OsdGetPatchIsTriangleRotated() function added
- OsdInterpolatePatchCoordTriangle() function added
Updated the Metal viewer runtime options to more
closely match the other viewers:
- default to adaptive tessellation
- default to patch type coloring
- present end cap options as: Linear/Regular/Gregory
- exposed switches for patch refinement options:
smooth corner, single crease, inf sharp
- updated fvar linear interpolation labels
and methods to match glFVarViewer
- updated iOS Main.storyboard GUI to match
Refactored the Metal viewer's implementation of
smooth face-varying uv interpolation so that the
face-varying patch basis is correctly determined
by inspecting the face-varying patch array type
descriptors.
Fixed smooth face-varying interpolation for the Metal viewer
when using screen-space tessellation. The location to evaluate
the face-varying value needs to match the computed tess location
instead of the intrinsic position_in_patch.
Moved Metal shader code used for evaluation of legacy gregory patches
to a separate source file.
These methods should not be used for new development, but are provided
for backward compatibility.
- added checkboxes for Control Edges and Vertices as used elsewhere
- added checkbox for UV Backface Culling specific to this example
- relabeled the Boundaries pulldown to Linear Interpolation
- renamed variables in source to better reflect the affected enum
- added missing vertex texture or normal entry when only one missing
- removed texture or normal indices from face definitions when none present
- removed normals when incomplete and not correlated with face definitions
- added cases for x-ord boundaries and interior to match Loop
- added cases for valence-2 interior and non-quad faces
- updated all.h for the new additions
- added pair of shapes to better cover non-manifold features
- added pair of shapes to consolidate variations of creased cubes
- updated all.h to include new shapes
This matches the current GLSL implementation:
- BoxSplineTriangle and GregoryTriangle patch shaders
- tess factor and tess evalutation for triangle patches
- improved adaptive tessellation code organization and function names
- quartic Bezier triangle patch evaluation
- OsdGetPatchIsTriangleRotated() function added
- OsdInterpolatePatchCoordTriangle() function added
Moved shader code used for evaluation of legacy gregory patches.
These methods should not be used for new development, but are provided
for backward compatibility.