Commit Graph

632 Commits

Author SHA1 Message Date
manuelk
de4564a779 Fix parametric rotation in Far::PatchParam for Gregory Boundary patches (always 0) 2014-09-30 18:13:51 -07:00
barfowl
09e5e5fefa Fixed missing initialization of Vtr::Level::VTag._incomplete. 2014-09-30 17:19:03 -07:00
barfowl
4a11e39f2c Added initialization of Vtr::Level::VTag._incomplete in refiner factory. 2014-09-29 18:48:24 -07:00
barfowl
606e8fc1b9 Added support for face-varying boundary interpolation options:
- "propagate corners" added as new enumeration to Sdc::Options
    - topology tags within FVar channel initialized and propagated
    - face-varying Interpolate() method updated to deal with creases
2014-09-29 18:46:33 -07:00
manuelk
aacd43a09b Add a function to Far::TopologyRefiner to gather ptex adjacency for a given face / quadrant pair
- also refactor Vtr::Array 'FindIndex' functions
2014-09-26 15:10:57 -07:00
manuelk
19ed202965 Pass control vertices by reference to Far::PatchTables::Limit<>() function
This will allow overriding the [] operator and possibly help refactor the far stencil factory code
2014-09-24 15:15:22 -07:00
manuelk
be679dde3f Fix compile warning in Far::StencilTablesFactory 2014-09-24 14:49:51 -07:00
barfowl
99a4b112b7 Fixed ICC warning regarding inline declaration after usage. 2014-09-24 14:06:18 -07:00
barfowl
ab5e2e8d4e Removed dead code from sparse selection and feature adaptive refinement:
- removed old alternative to Catmark feature adaptive selection
    - removed unused methods from Vtr::SparseSelector
    - made use of Level::VTag's new "incomplete" member in both
2014-09-23 18:24:29 -07:00
barfowl
8cb4a1c8ad Fixed issues with refined topology not correctly oriented around vertices:
- Refinement methods to populate relations updated to order correctly
    - updated topology validation method in Level
2014-09-23 17:37:33 -07:00
manuelk
82e7a1bcc5 Minor EvalLimit naming refactor
- also added some additional animation to the glEvalLimit code example
2014-09-22 16:01:43 -07:00
manuelk
788880aeba Minor code cleanup / typo fixes in Far::PatchTables 2014-09-22 13:51:59 -07:00
manuelk
f7b21b941c Add far_tutorial_6 showing how to interpolate primvar data on the surface
limit at arbitrary locations.
2014-09-22 13:51:59 -07:00
barfowl
09789296d9 Modified weighting of sharpness values for Chaikin crease method:
- semi-sharp edges prevented from decreasing by averaging with inf-sharp
    - averaging now includes only semi-sharp edges around the vertex
    - see regression/shapes/catmark_chaikin2
2014-09-18 19:13:55 -07:00
manuelk
d02bfc48d2 WIP on LimitStencilTablesFactory
- added an option to Far::StencilTablesFactory to generate stencils for
  coarse control vertices
- refactored interpolation code out into Far::PatchTables
- corrected tangent interpolation
- code cleanup & comments
2014-09-18 17:48:34 -07:00
manuelk
4dd366593d WIP FarLimitStencilsFactory
- bi-cubic patches should be mostly covered, although portions of the interpolation code
  need to be refactored out into Far::PatchTables as vertex templated functions (following
  patterns established in the Far::TopologyRefiner)

- end-cap patches still have to be done (prob. going to drop Gregory in favor of bilinear)

- Presto needs a fully bilinear code path (no patches) - really ???
2014-09-17 17:53:38 -07:00
Nathan Litke
c355dc1060 Added a comment in PatchTablesFactory::createUniform to explain that options.triangulateQuads may only be set to true for quadrilateral refinement schemes. 2014-09-17 13:51:12 -07:00
manuelk
ad402d3623 Fix inconsistent file access permissions 2014-09-17 13:45:50 -07:00
Nathan Litke
78ae830794 Fixed Osd::Mesh constructors that initialize member variables from user variables. 2014-09-17 13:41:45 -07:00
Nathan Litke
2dc3b17fb2 Fixed triangulation of uniform quad patches. 2014-09-17 13:36:47 -07:00
Manuel Kraemer
b5098a5b0b Fix warning in FarStencilTablesFactory for Windows build 2014-09-13 15:58:54 -07:00
Manuel Kraemer
4eb6450bfe Partial fix of bad tangents for arbitrary limit stencils 2014-09-13 07:38:12 -07:00
Manuel Kraemer
8fc5371ec9 Merge pull request #350 from nathan-at-digitalfish/build_android
Fix build for Android
2014-09-12 17:27:57 -07:00
manuelk
c66ee724a8 WIP limit stencils factory
todo:
- fix rotated tangents on patches
- add "end-caps" (bilinear or Gregory ?)
- add pure bilinear stencil mode
2014-09-12 16:59:16 -07:00
manuelk
e538261f7d Fix Cuda compile warning in osd/cudaKernel.cu 2014-09-12 10:43:18 -07:00
Julien Demouth
29b2d033e3 Introduces a kernel for NUM_ELEMENTS=4. It's faster and not buggy,
anymore.
2014-09-12 10:22:30 -07:00
Julien Demouth
cf0fe60ab4 Add a first pass of optimization in CUDA kernels
Conflicts:
	opensubdiv/osd/cudaKernel.cu
2014-09-12 10:21:46 -07:00
Nathan Litke
194ac022eb Added forward declarations for template specializations for raw topology data. 2014-09-11 16:30:56 -07:00
Nathan Litke
91f6f2246d Fix linker settings for Android. 2014-09-11 16:30:56 -07:00
Nathan Litke
d7311801c1 Fix compiler errors for OpenGL-ES. 2014-09-11 16:30:50 -07:00
Nathan Litke
5046d3475a Fix compiler warnings on 32-bit platforms. 2014-09-10 18:51:23 -07:00
Takahito Tejima
b3f6f52bb9 Fixes the bug of glShareTopology. This example mutates patchDescriptor in drawcontext, so it needs a write access.
Adding another GetPatchArray() returning non-const reference. We should think about better API for this.
2014-09-10 15:24:16 -07:00
manuelk
7462ae20ff Fix build warnings in sdc/bilinearScheme and sdc/catmarkScheme 2014-09-10 14:39:51 -07:00
manuelk
c399655dcc Landing 3.0.0.alpha
Sync'ing the 'dev' branch with the 'feature_3.0dev' branch at commit 68c6d11fc36761ae1a5e6cdc3457be16f2e9704a

The branch 'feature_3.0dev' is now locked and preserved for historical purposes.
2014-09-05 15:07:46 -07:00
manuelk
5ede429f2f Release 2.6.1 2014-09-05 10:57:30 -07:00
manuelk
942957a5e7 Update release notes for release 2.6.0 2014-08-19 11:41:16 -07:00
Nathan Litke
0128417447 Allow NEON to be disabled on Android. Works similar to GCD on Mac OS X. 2014-08-07 13:10:54 -07:00
Sergey Sharybin
b836a31a22 Add basic functions to work with FV data via evaluator API
Currently supports clearing and pushing FV name and data.
2014-08-07 10:39:55 -07:00
Manuel Kraemer
cf8f5a97a8 Merge pull request #345 from RachidElGuerrab/neon_kernels
Added subdivision kernels for ARM NEON
2014-08-07 10:07:48 -07:00
Rachid El Guerrab
035e58f44a Added subdivision kernels for ARM NEON
* assembler kernels are based on the C implementation in neonKernel.cpp
* enable assembler kernel functions in neonComputeController.cpp with #define USE_ASM_KERNELS 1
2014-08-05 22:09:12 -07:00
Nathan Litke
22d4939563 Fixes a bug in OsdUtilVertexSplit that occurs when getting the address of the end of a std::vector. 2014-08-05 18:14:45 -07:00
Manuel Kraemer
df719eb9ed Revert "added memcpyasync and streams to cuda backend"
This reverts commit 84212cd725.
2014-08-02 12:40:08 -07:00
Manuel Kraemer
8c9096cdc8 Merge pull request #334 from nathan-at-digitalfish/fix_quad_face_factory
Fix for CATMARK_QUAD_FACE_VERTEX kernel in FarCatmarkSubdivisionTablesFactory
2014-07-24 17:52:46 -07:00
Manuel Kraemer
f987bf7b9f Merge pull request #333 from nathan-at-digitalfish/vertex_splitting
Vertex splitting
2014-07-24 17:52:23 -07:00
Frost
84212cd725 added memcpyasync and streams to cuda backend 2014-07-24 10:18:09 -04:00
Nathan Litke
9446270011 Fixes a bug in FarCatmarkSubdivisionTablesFactory that prevented the CATMARK_QUAD_FACE_VERTEX kernel from being selected for subdivision level 2 or greater. 2014-07-08 15:28:55 -07:00
Nathan Litke
21adceb4ec Added OsdUtilVertexSplit which creates a vertex-varying data table by duplicating vertices in a FarMesh. Catmark subdivision is supported.
* added public functions to `FarMeshFactory` that duplicate, rearrange, and split vertices
* added supporting protected functions to `FarCatmarkSubdivisionTablesFactory` and `FarPatchTablesFactory`
2014-07-08 14:20:37 -07:00
Sergey Sharybin
6e3bad7224 Make C-API evaluator aware of different subdivisions
This makes it possible to use use bilinear subdivisions which
corresponds to Blender's simple subdivisions.

Most of the changes doesn't break any existing API because of
using default values. it's only C-API function which now expects
an extra argument.

This doesn't entirely work because it uses adaptive evaluator
which gives some unwanted curvatures when using bilinear scheme.
2014-07-04 21:23:50 +06:00
Sergey Sharybin
4a8bd50633 Support different subdivision schemes for OsdUtilMesh
Basically title says it all, now it's possible to pass
subdivision scheme to the OsdUtilMesh::Initialize().

It's a last argument with default to CATMARK so it doesn't
break existing code.
2014-07-04 17:28:18 +06:00
Sergey Sharybin
1ebf2449dd Fix mismatch in declaration and usage of OsdCudaComputeRestrictedVertexA
Unused argument `pass` was defined in the CUDA kernel and it was never
passed to this function from the C++ code. This argument is also wasn't
used by the function itself.
2014-07-03 16:54:15 +06:00
Sergey Sharybin
7ac06db165 Fix crashes when using rather low-end cards like Intel ones
Solved by checking on run-time whether texture buffer objects
are supported.

When building with GLEW library doing compile-time check is
not enough, because actual information about existing features
is only known on runtime.

This only makes ti so CPU backend works, GLSL backends still
requires some work if we want them to make working. Not sure
it worth doing this now.
2014-07-02 22:17:58 +06:00
Manuel Kraemer
25b655e777 Merge pull request #329 from nathan-at-digitalfish/fix_osd_mesh
Fixed omissions in osd/mesh.h
2014-06-27 07:15:30 -07:00
Nathan Litke
e4d7f3d495 Fixed omissions in osd/mesh.h.
* added `OsdMeshInterface::GetFarMesh` and `OsdMesh::GetFarMesh` to match `OsdGLMesh` and `OsdD3D11Mesh`
* added `interleaved` argument to `OsdMesh::Refine` to match `OsdMeshInterface::Refine`
2014-06-27 02:15:27 -07:00
Nathan Litke
8af05a57c5 Fixed a bug in the vertex order for restricted Catmark vertex-vertex kernel batches. 2014-06-27 02:09:03 -07:00
Nathan Litke
7763ffcb3d Style fixes for changes from v2_5_0..ad84f06. 2014-06-25 11:16:36 -07:00
Manuel Kraemer
ad84f06c60 Merge pull request #320 from nathan-at-digitalfish/new_vertex_vertex_kernels
Added the CATMARK_RESTRICTED_VERT_VERTEX_A, CATMARK_RESTRICTED_VERT_VERT...
2014-06-25 10:52:08 -07:00
Nathan Litke
299966fd5c Fixed an error in createCLBuffer that occurs when the buffer size is zero. 2014-06-24 12:14:41 -07:00
Nathan Litke
73c29a0002 Fixed an error in createCLBuffer that occurs when the buffer size is zero. 2014-06-24 12:12:00 -07:00
Nathan Litke
5d00c37637 Fixed a bug in the creation of an edge-vertex kernel batch. 2014-06-24 11:58:12 -07:00
Nathan Litke
a23c8e05bd Fixed a bug in the creation of an edge-vertex kernel batch. 2014-06-24 11:55:25 -07:00
David G. Yu
54207ce79b Fixed build errors. 2014-06-23 22:07:50 -07:00
Nathan Litke
b7a763853c Added the CATMARK_RESTRICTED_VERT_VERTEX_A, CATMARK_RESTRICTED_VERT_VERTEX_B1, and CATMARK_RESTRICTED_VERT_VERTEX_B2 kernels which compute vertices resulting from the refinement of a smooth or (fully) sharp vertex.
* CATMARK_RESTRICTED_VERT_VERTEX_A handles k_Crease and k_Corner rules
* CATMARK_RESTRICTED_VERT_VERTEX_B1 handles regular k_Smooth and k_Dart rules
* CATMARK_RESTRICTED_VERT_VERTEX_B2 handles irregular k_Smooth and k_Dart rules
2014-06-23 15:59:43 -07:00
Manuel Kraemer
af3424e1da Merge pull request #310 from nathan-at-digitalfish/new_edge_vertex_kernel
New edge vertex kernel
2014-06-23 15:05:49 -07:00
Nathan Litke
634187f6c5 Fixed a bug in the CUDA kernel. 2014-06-23 14:49:10 -07:00
manuelk
23c488b4cf Release 2.5.1 2014-06-19 15:58:46 -07:00
manuelk
9f38860806 Update release notes for release 2.5.1 2014-06-19 15:51:44 -07:00
manuelk
2a181b166a Fix bilinear stencil tangent computions
- fix a couple of sneaky typos in the FarstencilTablesFactory

fixes #319
2014-06-19 11:34:08 -07:00
Nathan Litke
c6dcd30785 Fixed a bug in FarCatmarkSubdivisionTablesFactory introduced in a082ed3. 2014-06-16 12:41:21 -07:00
gelder
3bd2c0aef6 Fixes to boundary interpolation in osdutil. 2014-06-16 12:37:06 -07:00
Nathan Litke
a082ed39f4 Added an argument to FarMeshFactory that indicates which kernel types are supported by the controller. 2014-06-10 16:12:53 -07:00
Nathan Litke
7fcfd237f4 Fixed an error in the DirectCompute shader. This resolves https://github.com/PixarAnimationStudios/OpenSubdiv/issues/313. 2014-06-10 13:40:12 -07:00
Nathan Litke
a6e179367b Fixed an error in the DirectCompute shader. This resolves https://github.com/PixarAnimationStudios/OpenSubdiv/issues/313. 2014-06-09 19:43:02 -07:00
Nathan Litke
94c2a4293c Fixed a compiler error in tbbKernel.cpp. Addressed comments from https://github.com/PixarAnimationStudios/OpenSubdiv/pull/310. 2014-06-03 14:49:30 -07:00
Nathan Litke
e28215446a Changes to address comments from https://github.com/PixarAnimationStudios/OpenSubdiv/pull/310. 2014-06-02 14:20:02 -07:00
Nathan Litke
0af14f8ac6 Added the CATMARK_RESTRICTED_EDGE_VERTEX kernel which computes vertices resulting from the refinement of a smooth or (fully) sharp edge. 2014-05-30 17:44:25 -07:00
Nathan Litke
943a86aa88 Fixed mesh batching for the CATMARK_QUAD_FACE_VERTEX and CATMARK_TRI_QUAD_FACE_VERTEX kernels. 2014-05-30 11:54:28 -07:00
Manuel Kraemer
626921d82e Merge pull request #308 from nathan-at-digitalfish/new_face_vertex_kernels
New face vertex kernels
2014-05-30 10:56:12 -07:00
Nathan Litke
24b4aea686 Fixed a compiler error in the GLSL Transform Feedback kernels on OS X/Mavericks. 2014-05-30 00:55:25 -07:00
Nathan Litke
29b51d80af Implemented CATMARK_QUAD_FACE_VERTEX and CATMARK_TRI_QUAD_FACE_VERTEX kernels for DirectX 11, OpenMP, and TBB platforms. Fixed a bug in the GLSL Transform Feedback kernels. Minor changes for consistent formatting. 2014-05-29 23:20:04 -07:00
Nathan Litke
b769f4f60d Implemented CATMARK_QUAD_FACE_VERTEX and CATMARK_TRI_QUAD_FACE_VERTEX kernels for CUDA, GLSL Transform Feedback, and GLSL Compute platforms. 2014-05-28 17:21:37 -07:00
manuelk
d72ce282fd Release 2.5.0 2014-05-28 16:39:50 -07:00
manuelk
8d877d720b Update release notes for release 2.5.0 2014-05-28 16:35:05 -07:00
manuelk
de57f43db1 Fix doxygen generation errors 2014-05-28 16:19:49 -07:00
Nathan Litke
064115bbe8 Added the CATMARK_QUAD_FACE_VERTEX and CATMARK_TRI_QUAD_FACE_VERTEX kernels.
* The CATMARK_QUAD_FACE_VERTEX kernel calculates the face-vertex for a quadrilateral face.  It applies to every face after the first subdivision step, and may be applied for the first subdivision step of a quadrilateral coarse mesh.

* The CATMARK_TRI_QUAD_FACE_VERTEX kernel calculates the face-vertex for a triangle or quadrilateral face.  It may be applied for the first subdivision step of a coarse mesh composed of triangles and/or quadrilaterals.

* Both kernels calculate each face-vertex using four vertex indices (triangles are specified by repeating the third index).  Therefore neither kernel uses the F_ITa codex table, and instead the first vertex offset in the F_IT index table is stored in the FarKernelBatch's table offset.
2014-05-28 13:52:12 -07:00
Nathan Litke
95aca6ed21 Minor changes to fix typographical errors, and for consistency across class method prototypes. 2014-05-28 13:40:51 -07:00
Takahito Tejima
7f2b65ba46 Reordering includes to address a compile error on mac/glew environment 2014-05-23 13:23:24 -07:00
Sergey Sharybin
6ef232c95a Integrate CLEW into osd library and examples
If the system has CLEW installed (which is detected by recently
added FindCLEW routines) then OpenSubduv would be compiled against
this library.

It makes binaries and libraries more portable across the systems,
so it's possible to run the same binary on systems with and without
OpenCL SDK installed.

The most annoying part of the change is updating examples to load
OpenCL libraries, but ideally code around controllers and interface
creation is to be de-duplicated anyway.

Based on the pull request #303 from Martijn Berger
2014-05-22 09:10:59 +02:00
David G. Yu
b28d470e9b Fixed build warnings/errors with VS2010 Pro 2014-05-19 09:23:22 -07:00
Sergey Sharybin
f6d45a6de0 Fix compilation error on windows+msvc2013
- Some missing includes of <algorithms> in order to have
  stdd::min() and similar functions.
- Need to cast numIndices and numNVerts to int explicitly
  in order to solve warning treated as an error about
  precision loss.
- Can't do vector[0] for an empty vector, it'll generate
  a runtime range check error.
- MSVC only works fine with make_pair(foo, bar) syntax,
  without explicit template substitution here. Otherwise
  weird 'can't cast int to int&&' errors are happening.
2014-05-17 12:52:02 -07:00
manuelk
d7afc82133 Fix compiler warnings in OsdClVertexBuffer 2014-05-16 14:52:43 -07:00
manuelk
b74f45f68d Decrease compiler warning thresholds and fix outstanding warnings (continued)
- turn off some of icc's remarks (mostly because of tbb)
- fix many of icc -w3 remarks (more to fix once i can work around icc 14.0 linker barfing)
2014-05-15 18:03:44 -07:00
manuelk
5ff9edf4f9 Decrease compiler warning thresholds and fix outstanding warnings.
Note: this round fixes clang / gcc -Wetra warnings. More fixing remains for icc -w3 errors.
2014-05-15 13:34:32 -07:00
Sergey Sharybin
f410190cde Fix some meory leaks in adaptive evaluator
- It used to create _computeContext twice.
- Ownership of refiner didn't set properly, because
  Initialize() forces evaluator to drop ownership.
  So now ownership sets after initialization from
  topology.
2014-05-11 13:37:03 +02:00
gelder
b85324dbf9 Merge pull request #299 from Nazg-Gul/dev
Implement C-API accessor to evaluator topology
2014-05-11 00:23:45 -07:00
Manuel Kraemer
827efd14e3 Reorganize EvalLimitContext and EvalLimitController
Moved transient states (current vertex buffer etc) to controller.
ComputeContext becomes constant so that it's well suited for coarse-grain
parallelism on cpu.

Client-facing API has changed slightly - limitEval example has been adjusted
2014-05-10 17:55:50 -07:00
Manuel Kraemer
ec89f76038 EvalStencil Context & Controller code cleanup
- fix some variable names (private vs. public)
    - implement constructors to guarantee initialized pointers (d'oh)
    - add a 'Reset' method to unbind buffers

Note: while the new contexts have been cleaned up, we now have a fair amount of duplicated code in the controllers...
2014-05-10 16:38:13 -07:00
Manuel Kraemer
e9b4006a56 Reorganize EvalStencilContext and EvalStencilController
Moved transient states (current vertex buffer etc) to controller.
ComputeContext becomes constant so that it's well suited for coarse-grain
parallelism on cpu.
2014-05-10 14:49:15 -07:00
Sergey Sharybin
c70daced19 Code cleanup: no need to use struct keyword in C++ code
It's only required for anonymous structures in C.

Also made a bit of whitespace cleanup.
2014-05-10 21:55:38 +02:00
Sergey Sharybin
c1dbc50527 Add getter of topology object to evaluator C-API
Useful for cases when some parts of the pipeline needs to know the
topology object. Simply helps saving memory so topology from the
evaluatgor can be re-used for stuff like HbrMesh creation.
2014-05-10 21:53:39 +02:00
Sergey Sharybin
8b627c1c73 Implement C-API accessor to evaluator topology
This way external application might check whether it need to
re-create evaluator from scratch or it might re-use existing
one without storing extra data from it's side.

TODO: Tags are still not accessible via C-API, it's marked as
to be solved later when it becomes more clear what is the best
way to expose them and when there'll be a real application to
test the tags.
2014-05-10 21:45:05 +02:00