Commit Graph

1739 Commits

Author SHA1 Message Date
David G. Yu
c245407854 Re-organized patch tessellation shader code
This change refactors the GLSL and HLSL patch shader code so that
most of the work is implemented within a library of common functions
and the remaining shader snippets just manage plumbing.

There is more to do here:
  - varying and face-varying data can be managed entirely by the client
  - similarly, displacement can be implemented in client code
  - there's still quite a bit of residual boiler-plate code needed
    in each shader stage that we should be able to wrap up in a more
    convenient form.
2015-05-29 23:00:19 -07:00
Jeremy Cowles
261dc17f1b OpenGL init without errors, example cleanup
The GLFW context version hint is a minimum version, not maximum version so
requesting 4.4 and then falling back to lower versions doesn't make sense.

This change sets the minimum version to 3.2 and attempts to standardize this
across all example apps.

Also print the maximum supported GL version along with the context version
at startup.
2015-05-29 22:37:12 -07:00
barfowl
5b854c8534 Removed multi-level interpolation methods of Far::PrimvarRefiner
- removed all of the multi-level Interpolate...() methods taking T*, U*
    - made all single-level methods consistent wrt usage of T&, U&
    - replaced usage in regressions, tutorials and examples
    - additional minor improvements to far/tutorials
2015-05-29 22:21:50 -07:00
Takahito Tejima
8be0f300e3 Merge pull request #553 from jcowles/dev-compile
Fix compile issue for ICC
2015-05-29 21:28:26 -07:00
jcowles
98dbe6b6d6 Fix compile issue for ICC
Template parameters to local types is only allowed in C++11, instead move the
local type out to an anonymous namespace.
2015-05-29 16:29:21 -07:00
Takahito Tejima
b4d1d09ab9 Merge pull request #552 from jcowles/dev-fix
Fix GLEW for Core profile, minor cleanup
2015-05-29 16:16:16 -07:00
jcowles
214f86a7c0 Fix GLEW for Core profile, minor cleanup
We will need to find a solution for Ignacio's older setup, but this at least
fixes the other fallout.

 * Use glewIsSupported instead of glewGetExtension
 * Convert tabs to spaces
 * Remove GLEW static caching (they only get called once)
2015-05-29 15:56:36 -07:00
David G Yu
a48cab654e Merge pull request #549 from takahito-tejima/farapi
Far: hide endcap factories from public interface
2015-05-29 13:42:16 -07:00
Takahito Tejima
4e807a776d Add Far::PatchTable::ComputeLocalPointValues() to compute endcap patch points.
To encapsulate endcap functions from public API, add methods to
tell the number of patch points needed (GetNumLocalPoints()) and
to compute those patch points as a result of change of basis from
the refined vertices (ComputeLocalPointValues()).

ComputeLocalPointValues takes contiguous source data of all levels
including level0 control vertices.
2015-05-29 12:41:22 -07:00
Takahito Tejima
7e82df37b2 Far: make internal header files private.
- fixing CMakeLists to install only public headers.
- remove unnecessary includes from examples.
2015-05-29 12:41:21 -07:00
Takahito Tejima
a81497b8db Merge pull request #548 from barfowl/add_varying
Removed primvar interpolation dependency on varying interface
2015-05-29 12:40:22 -07:00
David G Yu
e17b6ee277 Merge pull request #547 from takahito-tejima/osdapi
osdlayer: rename Osd::VertexBufferDescriptor to Osd::BufferDescriptor.
2015-05-29 10:55:10 -07:00
barfowl
42245f4b20 Removed primvar interpolation dependency on varying interface:
- removed AddVaryingWithWeight from Far::PrimvarRefiner interpolation
    - removed Far::StencilBuilder dependencies on varying
    - updated Far::StencilTableFactory use of StencilBuilder constructor
    - updated far/tutorial_2 to use vertex colors vs varying (for now)
2015-05-29 10:48:19 -07:00
Takahito Tejima
f9523f916f osdlayer: rename Osd::VertexBufferDescriptor to Osd::BufferDescriptor.
A mechanical substitution of VertexBufferDescriptor with BufferDescriptor.
Also removing unused files from osd.
2015-05-29 09:21:14 -07:00
George ElKoura
7942b02d99 Merge pull request #546 from barfowl/refiner_factory
Moved protected TopologyRefiner modifiers to its Factory class
2015-05-28 23:08:10 -07:00
barfowl
ff490cc131 Moved protected TopologyRefiner modifiers to its Factory class:
- added TopologyRefiner base level modifiers to TopologyRefinerFactoryBase
    - removed old modifiers from TopologyRefiner (unused by anything else)
    - updated existing Factory<MESH> definitions to use new methods
2015-05-28 22:39:45 -07:00
Jeremy Cowles
176e392c5c Merge pull request #544 from takahito-tejima/dev
Fix CMakeLists: make project-relative include path overridable
2015-05-28 19:55:54 -07:00
Jeremy Cowles
cff7147afb Merge pull request #545 from barfowl/far_types
Added more public constants to <far/types.h>
2015-05-28 19:44:33 -07:00
barfowl
506900e59f Added more public constants to <far/types.h>
- added constants for Vtr::INDEX_INVALID and VALENCE_LIMIT
    - added inline equivalent to Vtr::IndexIsValid()
2015-05-28 17:55:34 -07:00
Takahito Tejima
89dcea57c2 Fix CMakeLists: make project-relative include path overridable
All examples, regression tests and tutorials directly looked into
opensubdiv source directory to grab the header files. This is somewhat
convenient during development but they can mistakenly access private
header files.

With this change, when OPENSUBDIV_INCLUDE_DIR is given to cmake,
it will be used as an include search path to build examples etc.
Otherwise it follows the same behavior as before.

Also replaces include references to the files in regression dir
to be relative, and cleanups some copy-paste patterns.
2015-05-28 17:32:33 -07:00
David G Yu
c65995b834 Merge pull request #541 from barfowl/mask_interface
Moved Vtr::MaskInterface into Far::PrimvarRefiner
2015-05-28 13:50:30 -07:00
David G Yu
41bfae3156 Merge pull request #543 from takahito-tejima/mac
Mac build and shader compiler error fix.
2015-05-28 12:11:10 -07:00
Takahito Tejima
9cfdb6c5c1 Mac build and shader compiler error fix. 2015-05-28 10:27:23 -07:00
David G Yu
7d51c1d2e9 Merge pull request #539 from takahito-tejima/osdapi
Add GPU stencil/patch derivative kernels
2015-05-28 10:04:26 -07:00
Jeremy Cowles
30fb3260ec Merge pull request #540 from barfowl/boundary_none
Fixed refinement when using BoundaryInterpolation mode "None"
2015-05-27 21:02:55 -07:00
barfowl
6ce3292576 Moved Vtr::MaskInterface into Far::PrimvarRefiner:
- updated PrimvarRefiner to make use of now-local Mask class
    - renamed vtr/maskInterfaces.h to vtr/componentInterfaces.h
    - updated usage of renamed header file and CMakeLists.txt
2015-05-27 20:44:06 -07:00
barfowl
9cd082fde1 Tag faces as holes when using BoundaryInterpolation setting of "none" 2015-05-27 19:42:27 -07:00
Takahito Tejima
9dcbaee147 Add GPU stencil/patch derivative kernels
implements cuda, CL, GLXFB and GLCompute kernels of derivative
evaluation for both limit stencils and patches.
2015-05-27 17:23:36 -07:00
Takahito Tejima
e35e66789c Merge pull request #538 from davidgyu/texFix
Fixed allocation of texture buffers resources
2015-05-27 17:12:56 -07:00
Takahito Tejima
2e788a5250 Merge pull request #537 from barfowl/bilinear_derivs
Added missing scaling to derivatives of Bilinear patches
2015-05-27 17:12:50 -07:00
David G Yu
de286e07a6 Fixed allocation of texture buffers resources 2015-05-27 15:23:26 -07:00
barfowl
9a14bf72d4 Added missing scaling to derivatives of Bilinear patches 2015-05-27 15:11:35 -07:00
David G Yu
89544eec9c Merge pull request #536 from takahito-tejima/examples
Fix far_tutorial_6 to use gregory basis endcaps.
2015-05-27 15:36:05 -04:00
David G Yu
7f03b864b7 Merge pull request #534 from barfowl/face_uniform
Moved base-face propagation to Far::PrimvarRefiner
2015-05-27 15:32:01 -04:00
Takahito Tejima
7782c53ea2 Fix far_tutorial_6 to use gregory basis endcaps. 2015-05-27 11:44:42 -07:00
David G Yu
f4a9a1f431 Merge pull request #535 from takahito-tejima/dev
A workaround for the GLSL compute kernel crash on some nvidia drivers
2015-05-27 12:34:57 -04:00
Takahito Tejima
49a16539dd A workaround for the GLSL compute crash on some nvidia drivers
It looks like there's a compiler bug in some earlier nvidia driver 340/346 releases.
It has been fixed in 348.07 (win) as far as I can tell.

Following code behaves incorrectly.

void f(int a) {
  for (int i=0; i<3; ++i) doSomething(a, i);
}
void g() {
  for (int i=0; i<100; ++i) f(i);
}

The workaround is to use different identifiers for each function.
2015-05-27 08:57:47 -07:00
barfowl
0a86d6fe44 Moved base-face propagation to Far::PrimvarRefiner:
- removed TopologyRefiner options to propagate base face in Refinememt
    - removed all Vtr storage and management of base face
    - added PrimvarRefiner methods to "interpolate" per-face primvar data
2015-05-26 19:56:39 -07:00
David G Yu
22936eff56 Merge pull request #533 from c64kernal/dev_internal
Lower-case Internal namespace to match convention.
2015-05-26 21:27:28 -04:00
Takahito Tejima
cc86a5668d Merge pull request #532 from davidgyu/macbuildfix
Added a missing ';' for glViewer w/o GLEW
2015-05-26 18:21:21 -07:00
George ElKoura
a8568fc983 Lower-case Internal namespace to match convention.
Renamed "Internal" namespace to "internal" to match the convention in the rest
of the library.
2015-05-26 18:19:45 -07:00
George ElKoura
e9507b9fd6 Merge pull request #525 from barfowl/vtr_internal
Moved Vtr classes within internal namespace:
2015-05-26 18:09:41 -07:00
David G Yu
cdf95e0477 Added a missing ';' for glViewer w/o GLEW 2015-05-26 17:48:14 -07:00
David G Yu
36f682c471 Merge pull request #531 from takahito-tejima/dev
glEvalLimit: Fix an assertion failure when rand() takes RAND_MAX
2015-05-26 20:06:13 -04:00
Takahito Tejima
1debcf15ff glEvalLimit: Fix an assertion failure when rand() takes RAND_MAX 2015-05-26 16:05:54 -07:00
David G Yu
96983b1a44 Merge pull request #530 from takahito-tejima/dev
Fix warning in glUtils.cpp
2015-05-26 18:56:47 -04:00
Takahito Tejima
a7abdafe2f Merge pull request #529 from davidgyu/winbuildfix
Added TBB dependencies for glEvalLimit
2015-05-26 15:33:43 -07:00
Takahito Tejima
b1ef25f026 Fix warning in glUtil.cpp 2015-05-26 15:33:05 -07:00
Takahito Tejima
47f79e54fc Merge pull request #528 from davidgyu/memfix
Fixed buffer access into empty container
2015-05-26 14:55:27 -07:00
David G. Yu
20343f9b30 Added TBB dependencies for glEvalLimit 2015-05-26 14:45:42 -07:00