Skip to content

Commit

Permalink
Release 3.5.0
Browse files Browse the repository at this point in the history
  • Loading branch information
davidgyu committed Sep 26, 2022
1 parent 8f2560e commit 8ffa2b6
Show file tree
Hide file tree
Showing 7 changed files with 221 additions and 6 deletions.
1 change: 1 addition & 0 deletions documentation/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ if (DOCUTILS_FOUND AND Python_Interpreter_FOUND)
release_32.rst
release_33.rst
release_34.rst
release_35.rst
release_notes.rst
release_notes_2x.rst
sdc_overview.rst
Expand Down
Binary file added documentation/images/bfr_release_notes.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion documentation/intro.rst
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
Introduction
------------

.. image:: http://graphics.pixar.com/opensubdiv/docs/images/opensubdiv_splash_v3_4_0.png
.. image:: http://graphics.pixar.com/opensubdiv/docs/images/opensubdiv_splash_v3_5_0.png
:width: 100%
:align: center

Expand Down
1 change: 1 addition & 0 deletions documentation/nav_template.txt
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@
<p></p>
<li><a href="release_notes.html">Releases</a>
<ul>
<li><a href="release_35.html">Release 3.5</a></li>
<li><a href="release_34.html">Release 3.4</a></li>
<li><a href="release_33.html">Release 3.3</a></li>
<li><a href="release_32.html">Release 3.2</a></li>
Expand Down
172 changes: 172 additions & 0 deletions documentation/release_35.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
..
Copyright 2022 Pixar
Licensed under the Apache License, Version 2.0 (the "Apache License")
with the following modification; you may not use this file except in
compliance with the Apache License and the following modification to it:
Section 6. Trademarks. is deleted and replaced with:

6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor
and its affiliates, except as required to comply with Section 4(c) of
the License and to reproduce the content of the NOTICE file.

You may obtain a copy of the Apache License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the Apache License with the above modification is
distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the Apache License for the specific
language governing permissions and limitations under the Apache License.


Overview of Release 3.5
=======================

.. contents::
:local:
:backlinks: none

New Features
------------

Simplified Surface Evaluation
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The new *Bfr* interface provides an alternative to *Far* and *Osd* for
evaluating the limit surface -- treating a subdivision mesh as a
`piecewise parameteric surface primitive
<subdivision_surfaces.html#piecewise-parametric-surfaces>`__.

The *Bfr* interface is named for *Base Face Representation* as all
concepts and classes relate to the individual faces of the original
unrefined mesh, i.e. its "base faces". Each base face has a piece of
limit surface associated with it (*Bfr::Surface*) that is parameterized
(*Bfr::Parameterization*) and so can be evaluated and tessellated:

.. image:: images/bfr_release_notes.jpg
:align: center
:width: 50%
:target: images/bfr_release_notes.jpg

The limit surface for each face can be identified and evaluated
independently of any other faces without any global pre-processing of
a connected mesh. The resulting evaluation interface is much simpler, more
flexible and more scalable than those assembled with the table-based
class in *Far* -- providing a preferable alternative for many CPU-based
use cases (though not all).

See the `Bfr Overview <bfr_overview.html>`__ documentation for more
details.

Tessellation Patterns
~~~~~~~~~~~~~~~~~~~~~
In addition to evaluation, the *Bfr* interface includes a *Tessellation*
class that provides tessellation patterns for all faces of a base mesh.
A *Tessellation* does not encapsulate the entire tessellation process but
simply provides topological patterns to assemble such a process.

All faces of a mesh have a *Parameterization* which can be used to define
a *Tessellation* with the specification of one or more tessellation rates.
A single tessellation rate defines simple uniform tessellations:

+-------------------------------------------+-------------------------------------------+-------------------------------------------+
| .. image:: images/bfr_tess_quad_tris.png | .. image:: images/bfr_tess_pent_tris.png | .. image:: images/bfr_tess_uni_tri_5.png |
| :align: center | :align: center | :align: center |
| :width: 100% | :width: 100% | :width: 100% |
| :target: images/bfr_tess_quad_tris.png | :target: images/bfr_tess_pent_tris.png | :target: images/bfr_tess_uni_tri_5.png |
+-------------------------------------------+-------------------------------------------+-------------------------------------------+

while tessellation rates for each edge provide more complex non-uniform
patterns:

+-----------------------------------------------+-----------------------------------------------+-----------------------------------------------+
| .. image:: images/bfr_tess_nonuni_quad_A.png | .. image:: images/bfr_tess_nonuni_pent_A.png | .. image:: images/bfr_tess_nonuni_tri_A.png |
| :align: center | :align: center | :align: center |
| :width: 100% | :width: 100% | :width: 100% |
| :target: images/bfr_tess_nonuni_quad_A.png | :target: images/bfr_tess_nonuni_pent_A.png | :target: images/bfr_tess_nonuni_tri_A.png |
+-----------------------------------------------+-----------------------------------------------+-----------------------------------------------+

A small set of options is also available to define the resulting patterns
(e.g. the preservation of quad faces with quad-based subdivision schemes
(*above left and center*)) and to generate its output in a more favorable
form.

Tessellation patterns do not support the full flexibility of typical
hardware tessellation (e.g. no fractional tessellation) but do provide
some useful alternatives to hardware tessellation (e.g. the quad
preservation previously noted, and more uniform triangles for triangular
patches (*above right*)).

The *Tessellation* class is also completely independent of evaluation
in *Bfr*, and so can be used with any other evaluation interface.

See the `Tessellation <bfr_overview.html#bfr-navlink-tessellation>`__
subsection of the *Bfr Overview* for more details.


API Additions
-------------

See associated `Doxygen <doxy_html/index.html>`__ for full details.

New classes in namespace Bfr
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- class Parameterization
- class Surface
- class SurfaceFactory
- class SurfaceFactoryCache
- class SurfaceFactoryMeshAdapter
- class RefinerSurfaceFactory
- class Tessellation

Additions to Far::TopologyLevel
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- TopologyLevel::IsVertexCorner()
- TopologyLevel::IsVertexRegular()
- TopologyLevel::IsVertexInfSharp()
- TopologyLevel::IsVertexSemiSharp()
- TopologyLevel::IsEdgeInfSharp()
- TopologyLevel::IsEdgeSemiSharp()

Additions to nested Options classes in Far
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- PatchTableFactory::Options::SetMaxIsolationLevel()
- TopologyRefiner::UniformOptions::SetRefinementLevel()
- TopologyRefiner::AdaptiveOptions::SetMaxIsolationLevel()
- TopologyRefiner::AdaptiveOptions::SetMaxSecondaryLevel()


Other Changes
-------------

Deprecation Announcements
~~~~~~~~~~~~~~~~~~~~~~~~~
- Hbr is deprecated and will be removed from subsequent releases

Improvements
~~~~~~~~~~~~
- Suppression of GCC compiler warnings (GitHub #1253, #1254, #1270)
- Additional methods for Far::TopologyLevel (GitHub #1227, #1255)
- Improved mixed partial derivative at Gregory patch corners (GitHub #1252)
- Minor improvements to Far tutorials (GitHub #1226, #1241)
- Added CMake config (GitHub #1242)
- Updated CMake minimum version to 3.12 (GitHub #1237, #1261)
- Updated documentation build scripts for Python 3 (#1265, #1266)
- Updated 'stringify' build tool for improved cross compilation support
(GitHub #1267)
- Added 'NO_MACOS_FRAMEWORKS' build option (GitHub #1238)
- Updated Azure pipelines agents for Unbuntu and macOS (GitHub #1247, #1256)
- Removed obsolete AppVeyor and Travis CI scripts (GitHub #1259)

Bug Fixes
~~~~~~~~~
- Cache active program for Osd::GLComputeEvaluator (GitHub #1244)
- Fixed member initialization warnings in Osd::D3D11ComputeEvaluator
(GitHub #1239)
- Fixed GLSL shader source to remove storage qualifiers from struct members
(GitHub #1271)
- Fixed use of CMake variables for Apple builds (GitHub #1235)
- Fixed build errors when using OpenGL without GLFW (GitHub #1257)
- Fixed links to embedded videos (GitHub #1231)
43 changes: 42 additions & 1 deletion documentation/release_notes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
language governing permissions and limitations under the Apache License.


3.0 - 3.4 Release Notes
3.0 - 3.5 Release Notes
-----------------------

.. contents::
Expand All @@ -31,6 +31,47 @@

----

Release 3.5
~~~~~~~~~~~

Release 3.5.0 - Sep 2022
========================

Release 3.5.0 is a significant release with new features, several
configuration improvements, and a few other improvements and bug fixes.
For more information on the following, see `Release 3.5 <release_35.html>`__

**Deprecation Announcements**
- Hbr is deprecated and will be removed from subsequent releases

**New Features**
- Simplified Surface Evaluation (Bfr)
- Tessellation Patterns (Bfr)

**Changes**
- Suppression of GCC compiler warnings (GitHub #1253, #1254, #1270)
- Additional methods for Far::TopologyLevel (GitHub #1227, #1255)
- Improved mixed partial derivative at Gregory patch corners (GitHub #1252)
- Minor improvements to Far tutorials (GitHub #1226, #1241)
- Added CMake config (GitHub #1242)
- Updated CMake minimum version to 3.12 (GitHub #1237, #1261)
- Updated documentation build scripts for Python 3 (#1265, #1266)
- Updated 'stringify' build tool for improved cross compilation support
(GitHub #1267)
- Added 'NO_MACOS_FRAMEWORKS' build option (GitHub #1238)
- Updated Azure pipelines agents for Unbuntu and macOS (GitHub #1247, #1256)
- Removed obsolete AppVeyor and Travis CI scripts (GitHub #1259)

**Bug Fixes**
- Cache active program for Osd::GLComputeEvaluator (GitHub #1244)
- Fixed member initialization warnings in Osd::D3D11ComputeEvaluator
(GitHub #1239)
- Fixed GLSL shader source to remove storage qualifiers from struct members
(GitHub #1271)
- Fixed use of CMake variables for Apple builds (GitHub #1235)
- Fixed build errors when using OpenGL without GLFW (GitHub #1257)
- Fixed links to embedded videos (GitHub #1231)

Release 3.4
~~~~~~~~~~~

Expand Down
8 changes: 4 additions & 4 deletions opensubdiv/version.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,13 @@
#ifndef OPENSUBDIV3_VERSION_H
#define OPENSUBDIV3_VERSION_H

#define OPENSUBDIV_VERSION v3_4_4
#define OPENSUBDIV_VERSION v3_5_0

#define OPENSUBDIV_VERSION_NUMBER 30404
#define OPENSUBDIV_VERSION_NUMBER 30500

#define OPENSUBDIV_VERSION_MAJOR 3
#define OPENSUBDIV_VERSION_MINOR 4
#define OPENSUBDIV_VERSION_PATCH 4
#define OPENSUBDIV_VERSION_MINOR 5
#define OPENSUBDIV_VERSION_PATCH 0

namespace OpenSubdiv {
namespace OPENSUBDIV_VERSION {
Expand Down

0 comments on commit 8ffa2b6

Please sign in to comment.