Commit Graph

2733 Commits

Author SHA1 Message Date
David G Yu
17bc75b488 Compute transition mask for irregular patches
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.
2019-05-30 12:12:53 -07:00
Pol
5fec55ede8
Merge pull request #1111 from davidgyu/loop_patches_mtl_drawing
Drawing Loop patches with Metal tessellation shaders
2019-05-30 10:28:16 -07:00
David G Yu
4789df9522 Mtl implementation mtlViewer support for Loop
Updated mtlViewer to support drawing of tessellated
Loop scheme meshes.
2019-05-30 10:04:02 -07:00
David G Yu
2e175ff52b Mtl implementation mtlViewer organization
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.
2019-05-30 10:00:55 -07:00
David G Yu
4d84b6ff9b Mtl implementation fixed mtlViewer fractional tess
Fixed mtlViewer to be more consistent with the other
example viewers and allow screen space tessellation
to be enabled independently from fractional tessellation.
2019-05-30 00:47:50 -07:00
David G Yu
232d50c231 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.
2019-05-30 00:47:50 -07:00
David G Yu
cc6c9da070 Mtl implementation drawing triangle patches
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
2019-05-30 00:47:50 -07:00
David G Yu
ed8ecd84d1 Mtl implementation example options
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
2019-05-30 00:47:50 -07:00
David G Yu
ebf2917dc7 Mtl implementation fixed example fvar interp
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.
2019-05-30 00:47:45 -07:00
David G Yu
510ff8e85e
Merge pull request #1110 from barfowl/vtr_semi_sharp_fvar
Fixed semi-sharp face-varying boundaries when creating inf-sharp patches
2019-05-28 15:26:27 -07:00
David G Yu
8912b3f3d3 Mtl implementation screenspace fvar interp
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.
2019-05-28 10:02:08 -07:00
David G Yu
11bcf82632 Mtl implementation common tess shader source
Moved Metal shader code which computes tessellation factors and
tessellation parameterization into a separate source file.
2019-05-28 10:02:04 -07:00
David G Yu
9cc0cb2c01 Mtl implementation fixed typo in shader source
Fixed a misspelling in a macro: BOUNDRY -> BOUNDARY which was
preventing the Metal legacy gregory shader source from being
compiled correctly.
2019-05-24 12:39:20 -07:00
David G Yu
770c8a45e2 Mtl implementation legacy gregory shader
This migrates a fix from the legacy GLSL shader code
to improve consistency between the implementions.
2019-05-24 12:36:52 -07:00
David G Yu
1ae203ed20 Mtl implementation legacy shader code
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.
2019-05-22 18:40:58 -07:00
David G Yu
291eff0bed Mtl implementation whitespace fixes
Fixed numerous whitespace inconsistencies and violations
in the core osd metal implementation and examples.
2019-05-22 18:00:36 -07:00
barry
f4a3ee1283 Fixed sharpening of semi-sharp features on face-varying boundaries:
- updated VTag initialization to tag inf-sharp crease for semi-sharp values
2019-05-22 17:05:43 -07:00
David G Yu
24c37eecd3
Merge pull request #1109 from barfowl/far_smooth_corner_approx
Fixed regression with legacy smooth corner patch approximation
2019-05-22 16:24:50 -07:00
barry
a18a706f93 Fixed regression in application of smooth corner patch approximation:
- only apply the approximation at corners determined to be smooth
2019-05-21 19:53:21 -07:00
David G Yu
eec8e94b2a
Merge pull request #1108 from barfowl/vtr_max_valence
Fixed refinement bug for non-manifold edges with many incident faces
2019-05-17 18:45:09 -07:00
barry
07b4ecc1cc Added new regression shapes for non-manifold edges with many incident faces:
- added simple shapes for both Catmark and Loop
    - included per-vertex UVs, which triggered issues with FVar StencilTables
2019-05-16 14:47:01 -07:00
barry
5aa10c8f55 Fixed max-valence assignment in refinement to account for non-manifold edges:
- consider the vertex from the edge with the maximum number of faces
2019-05-16 14:42:23 -07:00
David G Yu
6fa58d1879
Merge pull request #1107 from barfowl/examples_glFVarViewer
Minor improvements to examples/glFVarViewer
2019-05-16 09:31:22 -07:00
barry
239eb28fcd Minor improvements to examples/glFVarViewer:
- 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
2019-05-15 15:22:18 -07:00
David G Yu
7eac369fd2
Merge pull request #1106 from barfowl/regression_shapes_indexing
Fixed indexing errors in old regression/shapes
2019-05-15 14:38:36 -07:00
David G Yu
af8cb951d6
Merge pull request #1105 from barfowl/regression_shapes_fvar
Added face-varying UVs to several regression shapes
2019-05-15 14:26:00 -07:00
barry
669e54a9f7 Fixed indexing errors in old regression/shapes:
- 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
2019-05-15 13:45:33 -07:00
David G Yu
464e20538a
Merge pull request #1104 from barfowl/far_sharp_patch_bug
Fixed patch construction bug with sharp corner patches
2019-05-14 17:38:24 -07:00
barry
89f00d3603 Added face-varying UVs to several regression shapes:
- added UVs to non-manifold shape sets for both Catmark and Loop
    - added UVs to the semi-sharp and inf-sharp variations of Catmark cubes
2019-05-14 15:22:33 -07:00
barry
17218ce6fe Fixed bug estimating Gregory face-point size for sharp corner patches 2019-05-14 11:08:52 -07:00
David G Yu
a7a3fd6ecb
Merge pull request #1103 from barfowl/regression_shapes_orient
Transformed old regression/shapes into consistent orientation
2019-05-10 10:30:32 -07:00
David G Yu
da29eade79
Merge pull request #1102 from barfowl/regression_shapes_xord
Additions and revisions to regression/shapes for consistency
2019-05-10 10:29:07 -07:00
barry
b2e788efa7 Updated hbr_regression for recent and past changes to shapes:
- uncommented past shapes that had changed and caused failures
    - update baseline data for all recent and past changes
2019-05-08 14:12:36 -07:00
barry
a42d00a191 Transformed several regression/shapes into a more consistent orientation 2019-05-08 14:07:44 -07:00
barry
c75be00094 Revised a couple of Loop shapes to match recent Catmark additions:
- reduced the xord_boundary case from none to four shapes
    - re-ordered the first two shapes in the nonman_edges case
2019-05-08 13:12:04 -07:00
barry
33ff2ec2f5 Added new Catmark shapes:
- 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
2019-05-08 13:10:33 -07:00
David G Yu
04384499a1
Merge pull request #1097 from Coder206/readme
Combine Hyperlink and Lib Name
2019-05-06 16:50:01 -07:00
David G Yu
7d0b2699f6
Merge pull request #1100 from barfowl/regression_shapes_catmark
Added new Catmark test shapes to regression/shapes
2019-05-06 16:49:25 -07:00
barry
afce970bcf Added new Catmark test shapes to regression/shapes:
- 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
2019-05-06 12:13:45 -07:00
David G Yu
5d8016be9e
Merge pull request #1099 from barfowl/far_nonmanifold_fixes
Fixed bugs constructing patches with non-manifold features
2019-05-06 10:30:28 -07:00
barry
8cc30d4f0d Added new regression/shapes for Loop meshes with non-manifold topology:
- added two new sets of shapes exhibiting non-manifold vertices and edges
    - updated regression/shapes/all.h for inclusion by clients
2019-05-02 15:28:15 -07:00
barry
dd1949ef74 Fixed bugs in Far::PatchBuilder related to non-manifold topology:
- fixed interior/periodic assignment around non-manifold vertices
    - fixed assembly of regular triangular patches along non-manifold edges
    - removed unnecessary assert in assembly of regular quad patches
2019-05-02 15:23:02 -07:00
Pol
1844d620f4
Merge pull request #1098 from davidgyu/loop_patches_dx11_drawing
Drawing Loop patches with HLSL tessellation shaders
2019-04-26 16:54:26 -07:00
David G Yu
944f98a9ea Updated dxViewer for Loop patches
Along with other changes to improve consistency with the glViewer
2019-04-26 11:08:01 -07:00
David G Yu
556d1dda79 Added HLSL 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
2019-04-26 11:07:56 -07:00
David G Yu
aa0def2b95 Moved HLSL tess factor code to separate file
Moved shader code which computes tessellation factors and
tessellation parameterization into a separate source file.
2019-04-26 10:58:02 -07:00
David G Yu
fda4ded404 Fixed HLSL legacy gregory shader valence limit
THis migrates a fix from the legacy GLSL shader code
to improve consistency between the implementions.
2019-04-26 10:58:02 -07:00
David G Yu
08997ef2b2 Moved HLSL legacy shader code to separate file
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.
2019-04-26 10:57:56 -07:00
George ElKoura
3875be6b99
Merge pull request #1096 from barfowl/examples_gl_args
Updated GL examples for common command line arguments
2019-04-25 13:25:44 -07:00
Coder206
ade80361ee Combine Hyperlink and Lib Name
This change aims to help make the README more concise by having the hyperlinks combined with their respective text.
2019-04-25 16:57:41 +00:00