Commit Graph

2673 Commits

Author SHA1 Message Date
Barry Fowler
c49a0c2e44
Merge pull request #1130 from davidgyu/mtl_viewer_tess_fix
Thanks, David
2019-06-18 16:23:31 -07:00
David G Yu
317e242bee
Merge pull request #1129 from barfowl/far_fvar_corner_tags
Fixed cracks in face-varying Loop patches for lineaar-boundaries option
2019-06-18 15:10:41 -07:00
David G Yu
cdbeac560f Fixed mtlViewer transition patch tessellation
Patches with transition edges were not being tessellated
correctly when drawing multiple patch types, e.g. with
Gregory or Legacy Gregory approximation at irregular features,
because the per-patch tess factors buffer was not being
offset correctly for the draw command for each patch type.

Fixed this to be consistent with other patch drawing by
recording and applying offsets when binding this buffer
for each patch type, and making sure that attributes for
the tess factors buffer are bound when drawing Legacy Gregory
patch types.
2019-06-18 13:36:49 -07:00
barry
6d3e1b02af Added condition to compensate for incorrect FVar corner tags:
- re-assess corner tags for irregular patches on FVar boundaries
2019-06-18 11:24:23 -07:00
George ElKoura
a001cfb440
Merge pull request #1128 from davidgyu/fvar_viewer_options
Update glFVarViewer option defaults
2019-06-18 10:49:49 -07:00
David G Yu
58a71672a7 Update glFVarViewer option defaults
Enabled smooth corner, inf sharp and single crease patch
options by default.
2019-06-18 10:28:54 -07:00
George ElKoura
3c4081aac3
Merge pull request #1126 from davidgyu/examples_shaders
Minor improvements to examples for Loop
2019-06-17 21:11:02 -07:00
George ElKoura
2d7919f3ee
Merge pull request #1127 from davidgyu/examples_options_and_shapes
Examples options and shapes
2019-06-17 20:33:53 -07:00
David G Yu
92a5d73913
Merge pull request #1125 from barfowl/regression_far_perf
Improvements to far_perf output and options
2019-06-17 18:13:23 -07:00
David G Yu
ed3fa312e5 Removed obsolete LOOP define from example shaders
Removed the use of the LOOP preprocessor symbol from
the remaining example shader code. The shader code is now
configured according to the types of the resulting patches
without depending on the subdivision scheme of the mesh
topology.
2019-06-17 17:59:15 -07:00
David G Yu
9fe1284ae3 improved glViewer shaders for Loop
Removed the use of the LOOP preprocessor symbol from
the glFVarViewer shaders code. The shader code is now
configured according to the types of the resulting patches
without depending on the subdivision scheme of the mesh
topology.

Improved the implementation of face-varying interpolation
similar to the glFVarViewer. Now the face-varying patch
type is obtained from the face-varying patch array
descriptor instead of being hard-coded by subdivison scheme.
2019-06-17 17:59:15 -07:00
David G Yu
5d33f7c28e Improved glFVarViewer shaders for Loop
Removed the use of the LOOP preprocessor symbol from
the glFVarViewer shaders code. The shader code is now
configured according to the types of the resulting patches
without depending on the subdivision scheme of the mesh
topology.

This allows the implementation of face-varying interpolation
to be improved and simplifies both the shader code and
application code.

Also, fixed a couple of incorrect buffer/texture bindings
that were raising GL errors.
2019-06-17 17:59:15 -07:00
David G Yu
d8abffc976 Updated more example viewer shape lists
Updated the shape lists in the glEvalLimit, glImaging,
and glStencilViewer examples to match recent updates
to the other example viewers.
2019-06-17 17:36:48 -07:00
David G Yu
62195753a9 Updated default options for examples
Changed several default options in the example viewers to the
preferred settings for improved shape fidelity and to improve
consistency between the different viewers:
 - enabled smooth corner, and inf sharp patch options by default
 - disabled screenspace tess and fractional tess by default
 - changed the default approximation to Gregory in the mtlViewer
2019-06-17 17:33:40 -07:00
David G Yu
973b7fe7a5 Fixed glViewer triangle normal calculation
The normal computed for primitive triangles had a flipped
orientation in the glViewer, This caused linear approximating
patches to be shaded incorrectly for adaptively refined Loop
meshes, and similarly triangles resulting from uniformly refined
Loop meshes.
2019-06-17 16:56:10 -07:00
barry
5fc51d87ca Improved flexibility and output for regression/far_perf:
- fixed memory leaks and added asserts and errors for bad input data
    - restructured the CSV output to a line per test and renamed flag to -csv
    - added options -nopatches, -nostencils and -total options to reduce output
2019-06-17 09:19:38 -07:00
David G Yu
db9c01e7e0
Merge pull request #1124 from barfowl/examples_loop_tet
Added simple tetrahedron to set of Loop test shapes
2019-06-14 17:37:32 -07:00
barry
4a198ace66 Added new Loop tetrahedron shape to main example viewers:
- added to the main geometry viewers: glViewer, dxViewer, mtlViewer
    - added to glFVarViewer for viewing face-varying UVs
2019-06-14 15:24:00 -07:00
barry
e8dcef6760 Added Loop tetrahedron to regression/shapes:
- added Loop tetrahedron shape with two UV sets
    - added the new shape to all.h
2019-06-14 15:20:29 -07:00
David G Yu
51d5ac4a49
Merge pull request #1123 from barfowl/far_loop_patch_bug
Fixed Loop patch creation bug with val-3 vertex at third corner
2019-06-14 12:48:10 -07:00
barry
3ea2f4caac Rotated faces in shapes for extra-ordinary vertices for better test coverage:
- rotated faces to place extra-ordinary vertex at each corner
    - updated both Catmark and Loop shapes for both boundary and interior
2019-06-14 11:32:59 -07:00
barry
69ab4d6170 Fixed Loop patch creation bug with val-3 interior vertex at third corner:
- adjusted point-sharing logic in PatchBuilder::SourcePatch to correct
2019-06-14 11:28:22 -07:00
Barry Fowler
ff9a3b4fcb
Merge pull request #1119 from davidgyu/far_perf_spreadsheet
Thanks, David
2019-06-10 17:44:41 -07:00
David G Yu
e64cc8d4b3
Merge pull request #1120 from barfowl/docs_release_34
Updated documentation for 3.4 release notes and past release dates
2019-06-10 17:06:26 -07:00
barry
0245184e11 Updated documentation for 3.4 release notes and past release dates:
- added new page and images for 3.4 release notes
    - updated Release Notes page with dates for all past releases
2019-06-10 16:33:41 -07:00
Pol
eff740d9f3
Merge pull request #1118 from davidgyu/osd_api_revisions
Minor revisions to some Osd deprecation notes
2019-06-10 15:42:27 -07:00
David G Yu
f881c49a5b Minor revisions to some Osd deprecation notes
Several of the methods in osd/patchBasisCommon.h were
never intended as public API, and several have been
deprecated in favor of the newer OsdEvaluatePatchBasis()
and OsdEvaluatePatchBasisNormalized() methods. These
obsolete methods have now all be marked as deprecated.

Also, fixed a minor spelling typo in glslPatchBasisCommon.glsl
2019-06-10 15:29:03 -07:00
David G Yu
e7cfe1188d Updated far_perf output and options
Added a -spreadsheet option to far_perf which outputs
result data as comma separated values (CSV) which can
be imported directly into spreadsheet applications for
further analysis and charting.

Also, updated the other far_perf options to be more consistent
with the other tutorials and examples, e.g. when specifying
scheme types, refinement options, etc.
2019-06-10 15:10:54 -07:00
David G Yu
943f1a8886
Merge pull request #1117 from barfowl/far_api_revisions
Minor revisions to a few precision related methods of Far classes
2019-06-07 20:56:57 -07:00
barry
b2d610fd56 Minor revisions to some precision related methods of Far classes:
- renamed PatchTable methods to query the precision of its StencilTables
    - removed the "set" prefix from precision-related PatchTableFactory::Options
2019-06-07 18:40:53 -07:00
David G Yu
c1746b58a0
Merge pull request #1116 from barfowl/far_irregular_box_spline
Improved regular patch approximations of irregular features for Loop
2019-06-07 18:22:28 -07:00
barry
cb79eab120 Improved Loop regular patch approximations of irregular features:
- updated LoopPatchBuilder with new Gregory to Box-spline conversion matrix
2019-06-07 17:55:31 -07:00
David G Yu
d8619b2997
Merge pull request #1115 from barfowl/examples_fvar_shapes
Updated shape list for GL face-varying viewer
2019-06-06 09:47:13 -07:00
barry
347eb033d5 Update shape list for examples/glFVarViewer:
- included shapes added in recent pull requests
    - removed redundant shapes
2019-06-05 16:16:45 -07:00
David G Yu
6ac61929ac
Merge pull request #1114 from barfowl/examples_viewer_shapes
Updated shape lists for example viewers
2019-06-05 08:14:38 -07:00
barry
cf9573cdc5 Updated shape lists for example viewers:
- included shapes added in recent pull requests
    - removed old shapes made redundant by recent additions
    - ordered Catmark and Loop sets for consistency
2019-06-04 19:14:38 -07:00
Barry Fowler
692949fc87
Merge pull request #1113 from davidgyu/gregory_transitional_fix
Thanks, David
2019-06-04 09:57:54 -07:00
David G Yu
67cc2a3810 Irregular patch shader transition edges
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.
2019-06-03 15:34:40 -07:00
David G Yu
9f54ace55b
Merge pull request #1112 from barfowl/examples_shapes_tets
Added tetrahedron shape use in documentation images and logo
2019-06-01 07:19:42 -07:00
barry
079b1a9760 Added tetrahedron shape use in docmentation images and logo:
- added Catmark and Loop versions of the toroidal tetrahedron shape
    - update shapes/all.h with the additions
2019-05-31 16:05:13 -07:00
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