Commit Graph

1303 Commits

Author SHA1 Message Date
David G Yu
82ab1b9f54 Release 3.4.3 2020-04-01 23:04:53 -07:00
David G Yu
e7dfecc3bf Additional fixes for dynamic and static linking
Updated to link the GL loader objects directly
along with the osd GPU objects for both static
and dynamic libraries.
2020-04-01 21:54:21 -07:00
David G Yu
0ca74b2e8e Release 3.4.2 2020-04-01 17:21:33 -07:00
David G Yu
b93725be26 Fixed static library linking on Windows
Changed the glLoader library to an object library
instead of a static library to improve generating
opensubdiv static libraries.
2020-04-01 12:13:36 -07:00
David G Yu
e6963dac5a Release 3.4.1 RC1 2020-03-23 18:23:51 -07:00
David G Yu
cb596ffb8a Added option to control building shared libraries
This adds support for the standard global option
  BUILD_SHARED_LIBS
to select whether to build shared libraries.

Note that building shared DLL libraries is still
not yet supported on Windows.
2020-03-09 17:50:49 -07:00
David G Yu
82988d04ad Updated EXT to ARB for GL direct_state_access
The ARB_direct_state_access API is more consistent with
the 4.5 and 4.6 core API and is also more widely supported.
2020-03-06 11:37:55 -08:00
David G Yu
f3f28995a5 Enabled internal GL API loader as GLEW alternative
At build time, the preprocessor symbols: OSD_USES_GLEW or
OSD_USES_INTERNAL_GLAPILOADER determine the GL API loader
that will be used by the OSD library.
2020-03-06 11:37:55 -08:00
Pol
e7ef20dacd
Merge pull request #1183 from davidgyu/dev_internal_glloader_prep
Prepare to replace GLEW with internal GL API Loader
2020-03-03 20:50:05 -05:00
David G Yu
28f2574bc5 Moved GLEW dependencies to glLoader wrapper
This introduces an internal glLoader library which allows
most of the implementation to be agnostic about the
implementation of the GL loading library.  Specifically,
this removes references to the GLEW headers and libraries
from the rest of the source code and build system.
2020-03-03 17:10:30 -08:00
David G Yu
6dde62d48f Fixed strict-aliasing warnings
Minor update to the implementation of a few internal tagging
methods in Vtr to avoid violating strict-aliasing rules.
Specifically, switched to using std::memcpy instead of
reinterpret_cast to implement type punning.
2020-02-28 16:28:33 -08:00
George ElKoura
69af58f7aa
Merge pull request #1174 from davidgyu/dev_ptex_dependency_fix
Fixed Ptex link dependencies
2020-01-15 18:10:12 -08:00
David G Yu
552ebf1376 Fixed Ptex link dependencies
Removed the link dependency from libosd to
the Ptex library since Ptex is used only by the
examples. Updated examples/common to separate
the common Ptex sources from the other common
sources so that they are used only by the Ptex
examples.
2020-01-15 14:47:18 -08:00
barry
8b065abb90 Formatted the modified source file to adhere to 80-column standard 2020-01-13 18:07:23 -08:00
barry
eed095ae15 Updated documentation related to boundary interpolation case "none":
- updated user documentation describing the enum
    - updated the Doxygen comments in sdc/options.h
2020-01-10 14:26:51 -08:00
barry
5a0e16e65d Revised tagging of boundary faces as holes if explicitly sharpened:
- tag faces containing vertices with an unsharpened incident boundary edge
2020-01-10 14:14:22 -08:00
George ElKoura
92341f7c1e Prefix OpenSubdiv CMake macros
This fixes issue #1157 by adding "osd" as a prefix to public macros.
2019-08-17 16:44:30 -07:00
David G Yu
1b556809c3 Merge remote-tracking branch 'origin/dev' into rc/v3_4_0 2019-06-24 20:19:28 -07:00
David G Yu
5c8cdf9121 Fixed regression in MTLComputeEvaluator
Fixed the initialization of patchArray and patchParam
in the implementation of the MTLComputeEvaluator::EvalPatches()
compute kernel.
2019-06-24 16:47:56 -07:00
barry
5e1a4b44be Minor improvements to Doxygen comments for Far header files:
- minor changes to Doxygen comments based on feedback
    - new description for PatchTableFactory::Options::EndCapType
    - fixed warnings related to Doxygen use of <REAL> in patchTable.h
2019-06-20 13:56:54 -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
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
David G Yu
001029f352 Release 3.4.0 RC1 2019-06-10 17:48:17 -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
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
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
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
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
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
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
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
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
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
barry
17218ce6fe Fixed bug estimating Gregory face-point size for sharp corner patches 2019-05-14 11:08:52 -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
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
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