Commit Graph

2933 Commits

Author SHA1 Message Date
David G Yu
b59ad84f93
Merge pull request #1321 from davidgyu/dev_osd_patch_basis_compatibility
Improved osd patch basis compatibility
2023-09-13 18:35:40 -07:00
David G Yu
3597371f84
Merge pull request #1320 from davidgyu/dev_osd_patch_drawing_compatibilty
Improved osd patch drawing compatibility
2023-09-13 18:18:41 -07:00
David G Yu
be4c718b0c Installed osd/patchBasis.h and osd/patchBasisTypes.h
Providing these as public headers in opensubdiv/osd allows client code
to implement evaluation kernels in their own TBB, CUDA, OMP, GCD, etc.
code without needing an implementation within the osd codebase.

Tested with C++, CUDA, and oneTBB client kernels.
2023-09-13 16:47:55 -07:00
David G Yu
fa5b57caba Reorganized osd/patchBasis and osd/patchBasisTypes
Folded osd/patchBasisCommon.h and osd/patchBasisCommonEval.h into the
single header file osd/patchBasis.h and renamed osd/PatchBasisCommonTypes.h
to osd/patchBasisTypes.h

Moved these into the OpenSubdiv::Osd namespace when compiled for C++ and
added a brief comment describing the intended use cases for this code.
2023-09-13 16:47:32 -07:00
David G Yu
fdb9ac9afb Added GetPatchDrawingShaderSource()
This is a new method for GLSL, HLSL, and MSL which returns patch
drawing shader source which excludes legacy shader source aspects.

This improves portability and compatibility and may also improve
shader compile times since the resulting shader source strings
are smaller without the legacy shader source aspects.

Tested with Vulkan and DX12 in addition to GL, DX11, and Metal.
2023-09-12 19:21:51 -07:00
David G Yu
c2ed7d5cf0 Reorganized legacy patch drawing shader source
Relocated from PatchCommon to PatchLegacy several aspects of the
shader source which can cause problems with typical use cases.
Specifically, things like resource bindings, input assembler and
interstage declarations are best left to client code.

These are not removed, just relocated and remain available for
backward compatibility. Updated the GLSL, HLSL, and MSL source.
2023-09-12 19:21:51 -07:00
David G Yu
18f3b91c28
Merge pull request #1319 from davidgyu/dev_tbb_config
Find TBB using TBB's CMake config
2023-09-11 16:07:01 -07:00
David G Yu
dbb75b650c Find TBB using TBB's CMake config
Updated the CMake build to locate TBB using TBB's CMake config
and deleted the local cmake/FindTBB.cmake module.

While the source code remains compatible with earlier versions of
TBB, updated the minimum TBB version from 4.4 to 2018 since that
is the earliest TBB release to include a CMake config.  This is
the version of TBB specified for the CY2019 VFX Reference Platform.

Tested on Windows, Linux, and macOS using TBB 2018 Update 6,
TBB 2020 Update 3, and oneTBB 2021.10.0
2023-09-11 13:02:25 -07:00
David G Yu
2f335a427b
Merge pull request #1318 from davidgyu/dev_ninja_msvc_warn_level
Fixed inconsistent warning levels for MSVC builds
2023-09-11 08:59:41 -07:00
David G Yu
06ad0bbf5c
Merge pull request #1317 from davidgyu/dev_tbb_task_scheduler_init_deprecation
Marked deprecated Osd::*Evaluator::SetNumThreads()
2023-09-11 08:58:43 -07:00
David G Yu
a1f13b4767 Fixed inconsistent warning levels for MSVC builds
The MSVC build has been setting /W3 as an override for /Wall but this
has been causing generator specfic build inconsistencies.

For examples, this override works when using the Visual Studio generators,
but not when using the Ninja generator. This causes Ninja to build using
/Wall instead of /W3.

This removes the initial setting of /Wall to avoid this inconsistency.

We plan to continue to address compiler warnings to allow us to raise
this warning level further but that is a separate task.
2023-08-25 21:00:32 -07:00
David G Yu
67aa6e4c88 Marked deprecated Osd::*Evaluator::SetNumThreads()
The existing implementation in Osd::TbbEvaluator has never been implemented
correctly and that implementation is incompatible with the oneTBB API.

These methods are now marked deprecated in the two places where defined
in Osd::TbbEvaluator and Osd::OmpEvaluator, but for consistency we preserve
the existing implementation when building with older versions of tbb.

We've already removed all use of these methods from the tests and examples.
2023-08-25 20:10:09 -07:00
David G Yu
6c1a309cfc Release 3.5.1 2023-07-20 11:58:39 -07:00
David G Yu
7b77264416
Merge pull request #1312 from davidgyu/dev_opengl_import_fix2
Further simplification of OpenGL import targets
2023-07-19 17:23:22 -07:00
David G Yu
90a8122c2d Further simplification of OpenGL import targets
The internal GL API Loader implementation is self contained and does
not require the system OpenGL implementation at build time, so we
don't need the OpenGL::GL import target for this case.

An earlier change added the OpenGL::GL import target for legacy uses
of GLEW and it remains correct there.

Fixes #1277
2023-07-17 17:45:25 -07:00
Barry Fowler
db1ac8045c
Merge pull request #1310 from davidgyu/dev_cuda_nvcc_defaults_fix
Improved documentation for OSD_CUDA_NVCC_FLAGS
2023-07-06 15:03:50 -07:00
Barry Fowler
81941e996c
Merge pull request #1309 from davidgyu/dev_apple_framework_fix
Fixed Apple framework object dependencies
2023-07-06 15:02:04 -07:00
Barry Fowler
9d34513203
Merge pull request #1308 from davidgyu/dev_osd_real_cast
Fixed OSD_REAL_CAST of some float constants
2023-07-06 14:57:11 -07:00
Barry Fowler
dbb23be83d
Merge pull request #1297 from davidgyu/dev_cxx_version
Updated C++ standard to C++14
2023-07-06 14:56:14 -07:00
David G Yu
b96d8af08a Improved documentation for OSD_CUDA_NVCC_FLAGS
Also fixed the build so that obsolete CUDA gpu architectures
are specified as fallback values only when using older obsolete
versions of CUDA. We'll likely remove these fallbacks from future
releases of OpenSubdiv.

Fixes #1299
2023-06-30 15:46:51 -07:00
David G Yu
c34d7927b3 Fixed Apple framework object dependencies
Updated target object dependencies for Apple static and dynamic frameworks
to use TARGET_EXISTS for osd_gpu_obj to allow correct linking when no
OSD_GPU targets are enabled. We'll likely revisit these targets further
for future releases of OpenSubdiv.

Fixes #1224
Fixes #1236
2023-06-30 15:46:22 -07:00
David G Yu
5db3b63faa Fixed OSD_REAL_CAST of some float constants
This avoids compile errors with some GLSL compilers.

Fixes #1285
2023-06-30 15:45:45 -07:00
David G Yu
98351a9dc1 Updated C++ standard to C++14
The OpenSubdiv public interface currently requires only C++11 but we
choose this version since C++14 has been the default since GCC 6,
Clang 6, and Visual Studio 2017 (for the most part) and C++14 has been
the default for OpenSubdiv on macOS when support for Metal is enabled.

This setting is guarded so that it can be overridden by the caller when
running CMake.

Fixes #1276
2023-06-30 15:42:23 -07:00
Barry Fowler
94c85b3879
Merge pull request #1305 from davidgyu/dev_opengl_import_fix 2023-06-27 18:14:02 -07:00
Barry Fowler
e0eb6a18b5
Merge pull request #1304 from davidgyu/dev_cuda_examples_glx_fix 2023-06-27 18:13:24 -07:00
Barry Fowler
f9bd7a2d57
Merge pull request #1303 from davidgyu/dev_config_interface_include_fix 2023-06-27 18:12:46 -07:00
David G Yu
05abd4e826 Updated build to use OpenGL import targets.
This is a slight improvement and fixes link problems in some
cases, though we expect to further improve handling of target
depenedencies overall.

Fixes #1277
2023-06-23 14:27:11 -07:00
David G Yu
9e7b1bcdc3 Fixed example dependencies with CUDA on Linux
Added an explicit target link dependency for OpenGL::GLX when
building example programs with CUDA on systems with GLX since
GLX is used by the example code used to initialize the CUDA
device context.

This is a simple workaround and we'd like to revisit and improve
how target dependencies are handled overall.

Fixes #1294
2023-06-21 14:26:41 -07:00
David G Yu
4576083cd0 Fixed interface includes for cmake config
Added target include directories for the library targets
so that interface include directories are published with
the OpenSubdiv cmake config.

Also, removed a cmake version test which is no longer needed.

Fixes #1278
2023-06-21 12:01:50 -07:00
David G Yu
afaee86641
Merge pull request #1301 from barfowl/bfr_val2_interior_bug
Fixed Bfr::Surface construction bug for rare topological case
2023-06-15 13:42:03 -07:00
David G Yu
7f7528e001
Merge pull request #1296 from CraigHutchinson/patch-1
CMake: append should be used for CMAKE_MODULE_PATH
2023-04-26 17:10:27 -07:00
Barry Fowler
51eb6a041c Fix bug in Bfr::SurfaceFactory with valence-2 interior vertex:
- fixed IrregularPatchBuilder to correctly assign boundary sharpness
    - modified test shape creating creased val-2 interior face on boundary
2023-03-14 19:02:04 -07:00
David G Yu
578b1fb9d2
Merge pull request #1290 from thomthom/dev-mismatched-bound-warning
Correct warning: "with mismatched bound [-Warray-parameter]" in level.cpp
2023-03-09 17:37:33 -08:00
David G Yu
5474fe88fd
Merge pull request #1289 from thomthom/dev-clang-windows
Corrections to allow for LLVM Clang builds on Windows.
2023-03-09 17:33:04 -08:00
David G Yu
5819edf6c3 Merge pull request #1275 from Cory-Kramer/release
Avoid referring to std::vector<T> members when T is incomplete.
2023-03-09 17:08:34 -08:00
Craig Hutchinson
360abbe5bf
CMake: append should be used for CMAKE_MODULE_PATH
- Additionally hardened paths by using PROJECT_SOURCE_DIR
2023-02-28 14:41:37 +00:00
Thomas Thomassen
c92351a6fa Correct warning: "with mismatched bound [-Warray-parameter]" in level.cpp 2022-11-29 22:10:44 +01:00
Thomas Thomassen
ad007c076a Corrections to allow for LLVM Clang builds on Windows. 2022-11-29 20:18:33 +01:00
Cory Kramer
ca6f0feecf Avoid referring to std::vector<T> members when T is incomplete.
This is not legal according to the C++ standard, and causes build errors when using --std=c++20
2022-09-27 10:15:30 -04:00
David G Yu
8ffa2b6566 Release 3.5.0 2022-09-26 11:17:44 -07:00
David G Yu
8f2560ed6e
Merge pull request #1274 from barfowl/doc_bfr_improvements
Documentation improvements for Bfr Overview and tutorials
2022-09-26 07:56:30 -07:00
Barry Fowler
72331f64c5 Minor improvements to Doxgen config file:
- removed obsolete features to reduce warnings in newer versions
    - added missing PROJECT_NAME
2022-09-25 17:37:11 -07:00
Barry Fowler
24b63c951f Added new sections to the Bfr Overview page:
- new section for SurfaceFactory caching and thread-safety
    - new section for deriving subclasses of SurfaceFactory
2022-09-23 17:53:14 -07:00
Barry Fowler
4ca972da8f New and improved figures with Bfr tutorials:
- added new figure for Bfr tutorial 1.1
    - improved the set figures for Bfr tutorial 1.2
    - improved the set figures for Bfr tutorial 2.1
    - added accompanying text related to new figures
2022-09-23 11:16:13 -07:00
David G Yu
ded8a8806f
Merge pull request #1272 from davidgyu/dev_ios_build_notes
Updated iOS build note regarding stringify
2022-09-15 10:07:19 -07:00
David G Yu
1d8a74ee3c Updated iOS build note regarding stringify
Builds using Xcode now use the Python version of stringify
including for cross compilation builds, e.g. iOS, universal, etc.
2022-09-15 09:47:49 -07:00
David G Yu
287cb80619
Merge pull request #1242 from theblackunknown/cmake-config
Add CMake Config
2022-09-15 09:26:03 -07:00
David G Yu
ec9153f22a
Merge pull request #1271 from davidgyu/dev_glsl_interp_qualifier_fix
Removed 'centroid' qualifier from GLSL struct
2022-09-15 09:23:19 -07:00
David G Yu
76841aefa3 Removed 'centroid' qualifier from GLSL struct
This is not valid (See GLSLang Spec, Sec 4.3) and raises shader
compile time errors with some recent drivers.
2022-09-15 08:29:14 -07:00
David G Yu
3f054c7410 Updated cmake config export paths and target names
The cmake config export paths are now more consistent
with other vfx platform projects.

The target names are now more consistent with existing
opensubdiv static and dynamic library names.
2022-09-15 02:34:02 -07:00