Relocated from PatchCommon to PatchLegacy several aspects of the
shader source which can cause problems with typical use cases.
Specifically, things like resource bindings, input assembler and
interstage declarations are best left to client code.
These are not removed, just relocated and remain available for
backward compatibility. Updated the GLSL, HLSL, and MSL source.
Updated the Gregory patch tessellation shaders to account for
transition edges.
Changed the implementation of OsdGetTessParameterizationTriangle()
to take the input parametric location as a 3-component value. This
allows the edge parameterization to be more numerically robust and
consistent.
Also, corrected some minor discrepancies between the various
tessellation shader configurations.
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.
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
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.
Updated Metal patch shaders to resolve degenerate normals.
This fix was ported from the GLSL patch shader source.
Also, added missing inf sharp test cases to mtlViewer.