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.
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.
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.
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.
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.
- 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
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
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.
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.
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
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.
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