Commit Graph

397 Commits

Author SHA1 Message Date
manuelk
dae55d68e2 fix FarPatchTables::GetNumFaces() and FarPatchTables::GetFaceVertices() :
These functions are exclusive to uniformly subdivided topology. With the recent refactoring
of PatchTables and the generalization of topology, uniform meshes only retain the topology
of the highest level of subdivision by default. These functions are now fixed to reflect the
change.
2013-06-19 16:31:06 -07:00
manuelk
f89d3614ba fix OsdMash to catch up with some of the 1.2 code refactoring - thanks Sheng for digging this one up.
fixes #178
2013-06-19 14:53:03 -07:00
manuelk
a419830ee8 OsdGLDrawRegistry : fixing an OSD error message prefix when program linking fails 2013-06-19 12:59:43 -07:00
manuelk
85be47a135 OsdGlMesh : adding accessors for the FarMesh and the VertexBuffer for Scot 2013-06-19 12:55:12 -07:00
Takahito Tejima
043044827f Fix a bug of patch level computation for non-quad faces. 2013-06-18 19:17:41 -07:00
Takahito Tejima
047a943bf2 Added an #ifdef around glew.h to avoid a conflict with gl.h in a client code. 2013-06-18 16:16:38 -07:00
manuelk
12f572946e fix read/write permissions on files 2013-06-18 15:02:46 -07:00
Takahito Tejima
3885c4a6f7 Fix bug of incorrect patchParam table splicing. 2013-06-18 14:07:32 -07:00
manuelk
12e25f076a Release 1.2.3 2013-06-17 19:35:29 -07:00
manuelk
bbe4435b19 minor API refactor of for EvalLimit :
- Replaced EvalData and EvalVertexData classes with a simpler DataStream class that only
  accesses a single data stream, binds and unbinds it

- DataStream has both an input and an output version which avoids much of the const-ness
  const-related ambiguity of the previous design pattern

- Vertex, varying and face-varying data now all have a dedicate struct (VertexData, VaryingData, FaceVaryingData)
  as a way of gathering the various data-streams required to perform sampling

- renamd some "Buffers" into "Tables" for better naming consistency with Far
2013-06-17 18:13:13 -07:00
David G Yu
185e55b859 Fixed VS2010 error/warning 2013-06-14 09:54:38 -07:00
manuelk
795dec5fdc Merge branch 'dev' of github.com:PixarAnimationStudios/OpenSubdiv into dev 2013-06-13 14:02:08 -07:00
manuelk
54bef92aab switch cpuEvalLimitController to use a quad-tree based patch access map :
- remove PatchMap from FarPatchTables

- add a new FarPatchMap quad-tree class (constructed from FarPatchTables)

- refactor the EvalLimitController to use the quad-tree search instead of a
  serial loop access

fixes #174
2013-06-13 14:01:23 -07:00
manuelk
642bb27d68 fix FarPatchParm : adding version.h include 2013-06-11 17:25:54 -07:00
manuelk
fab0527f91 minor FarPatchTables::PatchMap code refactor :
- replace use of std::multimap with an std::sort
- refactor some methods into PatchParam
2013-06-11 15:59:43 -07:00
David G Yu
61b8fb4713 Removed extraneous clipFlag declaration. 2013-06-10 23:00:38 -07:00
David G Yu
f5f524322a Fixed VS2010 build warning/error 2013-06-10 16:32:45 -07:00
David G Yu
2b972f3117 Consolidated OpenGL includes into osd/opengl.h 2013-06-10 16:32:45 -07:00
David G Yu
967fc4db72 Fixed glsl shader portability edgeDistance
Moved all edgeDistance declarations to client shader code.
2013-06-10 16:32:45 -07:00
David G Yu
1461deb308 Fixed glsl shader portability (input,output) 2013-06-10 16:31:30 -07:00
David G Yu
ffe427dc65 Fixed glsl unsigned conversions in Gregory shaders 2013-06-10 16:21:48 -07:00
David G Yu
2551c32448 Fixed glsl shader portability
- defined a fallback value for ROTATE
- made GetPatchLevel() a macro to avoid
  referencing gl_PrimitiveID from vertex shaders
- fixed float array initializers
2013-06-10 16:21:47 -07:00
David G Yu
e1930e58cd Fixed some glsl preprocessor tests
Changed #if --> #ifdef for OSD_ENABLE_SCREENSPACE_TESSELLATION
2013-06-10 16:21:47 -07:00
David G Yu
c185968809 Updated glsl code texelFetchBuffer -> texelFetch
This allows us to remove unnecessary directives
to require GL_EXT_gpu_shader4
2013-06-10 16:21:47 -07:00
manuelk
7cb2463dc7 fix FarPatchTables::IsFeatureAdaptive() :
- trivial return if Gregory specific patch data is set
- or iterate through the patch-arrays until an adaptive patch is found (REGULAR,...,GREGORY_BOUNDARY)

fixes #173
2013-06-10 14:36:25 -07:00
manuelk
c18cf5bff2 first pass at face-varying interpolation for CpuEvalLimit - still
a couple of kinks to be worked out...
2013-06-06 18:07:46 -07:00
Takahito Tejima
f0be0b5799 Fix bug : multi mesh wasn't working correctly. FarMultiMesh has to set meshIndex to FarKernelBatch.
fixes #170
2013-06-06 16:20:40 -07:00
manuelk
043369485c - adding varying data interpolation to the EvalLimit module
- minor refactoring of the LimitEvalContext to accomodate all the data buffers

- pushing some minor sub-patch functionality back to FarPatchParams

- extend example code with randomly generated varying vertex colors
2013-06-05 11:44:30 -07:00
Takahito Tejima
b0e8533ef4 Fix cmakefile and #ifdefs for opencl configuration. 2013-06-05 10:44:21 -07:00
manuelk
5fe38c3ac0 If Hbr carries no fvar data, then we shouldn't attempt to build fvar data tables in Far,
where the factory requests it or not...

fixes #169
2013-06-04 17:53:28 -07:00
Takahito Tejima
a6bf169344 Fix fvardata interpolation on adaptive patches. 2013-06-04 11:02:27 -07:00
manuelk
6ea2dee727 Release 1.2.2 2013-06-03 17:51:58 -07:00
manuelk
b270f99ea0 - prevent corner gutter texels from going into an infinite loop by
adding an arbitrary break if vertex valence is > 256

- add a Warning function to Osd error reporting

- minor cleanup /refactor / document of OsdError

fixes #167
2013-06-03 17:33:02 -07:00
Takahito Tejima
b037fc3307 Added early exit to Refine method to avoid unnecessary interop. 2013-06-03 17:06:33 -07:00
manuelk
21b9fbbb95 Moving some member variables of OsdGlDrawContext from public to protected
and adding the requisite accessors

Note : all our example code goes through the same boiler-plate texture
binding code - we might want to move it as a member function of the DrawContext.
2013-05-31 17:11:16 -07:00
manuelk
bcc31df715 doc fix for EvalLimitSample 2013-05-31 14:17:23 -07:00
manuelk
e52af3660e fix cpuEvalLimitController : some samples were being dropped because
of bad parameterization on non-quad faces
2013-05-31 13:51:21 -07:00
manuelk
87188355f1 fix the last bugs in the GregoryBoundary EvalLimit CPU kernel 2013-05-30 18:12:09 -07:00
manuelk
49b710ee77 bug fixes to cpuEvalLimitKernel.cpp (use unsinge ivalence in the correct places)
minor code cleanup

Note : there is still a resilient bug in the Gregory Boundary patch case
2013-05-28 16:37:45 -07:00
manuelk
2849965f59 bug fixes for Gregory Boundary patches in cpuEvelLimitKernel.cpp 2013-05-28 13:54:37 -07:00
manuelk
262a0d43a1 fix some MSVC++ build warnings (mostly float precision literals) 2013-05-24 16:51:13 -07:00
manuelk
85a3001120 Work in progress on EvalLimit : added Gregory & GregoryBoundary kernels.
Note : GregoryBoundary does not generate the correct surface yet (bug to be squashed soon)
2013-05-24 16:29:28 -07:00
manuelk
f617cdd6ed Work in Progress : checkin in function kernels for boundary and corner patches.
Casual testing doesn't reveal any bug within our sample shapes.

Remaining : gregory & gregory boundary patches.
2013-05-22 18:56:27 -07:00
manuelk
f25e89b745 Work-in-progress check-in for EvalLimit :
- added boundary / corner kernel code

- bug fixes for Gregory patch kernel

- wired the new kernels in the controller class

Note 1 : corner / gregory kernels are not working yet

Note 2 : the vertex mirroring solution used for boundary / corner kernels could be incorrect...
2013-05-22 12:10:49 -07:00
manuelk
492238edd6 extending the "firstLevel" parameter to farMesh constructor.
the parameter controls which levels of refinement to include in patchTables in the case of uniformly subdivided meshes.
2013-05-22 11:09:43 -07:00
David G Yu
b4b02fcc2d Updated version number 2013-05-21 19:25:09 -07:00
Takahito Tejima
0e99d69b40 Added cuda runtime error check. 2013-05-21 19:19:00 -07:00
David G Yu
58bb23cf66 Release 1.2.0 2013-05-21 19:03:17 -07:00
Takahito Tejima
87114f7428 Rename osd_util to osdutil.
Cleanup the batching classes so that DrawCollection() no longer caches
current batch and effect. Any kind of binding optimization will be
handled in client's delegate class.
Also remove InitializeVertexBuffer method and add some arguments to
constructor instead.
2013-05-21 17:20:22 -07:00
manuelk
e1dce9f75e fix copyright banner missing line 2013-05-20 12:10:47 -07:00
Manuel Kraemer
cc89f30dc1 Merge pull request #165 from manuelk/dev
Merge big refactoring & batching work
2013-05-20 07:41:40 -07:00
David G Yu
c82627d6e6 Release 1.1.0 2013-05-17 17:33:47 -07:00
Takahito Tejima
f18b7a2015 Fix a bug of not splicing ptexTables for uniform patches. 2013-05-17 16:38:15 -07:00
manuelk
1cfcb2ae79 comments 2013-05-17 16:02:03 -07:00
manuelk
2a298442f4 minor refactor : move PatchMap and PatchHandles into FarPatchTables where they belong (instead of OsdLimitEval) 2013-05-17 15:46:29 -07:00
David G Yu
17199885f1 Updated GCD kernel interfaces. 2013-05-17 15:29:05 -07:00
manuelk
209239c7c0 adding a missing 'static' to an internal function 2013-05-17 14:56:39 -07:00
manuelk
5dd23e8e27 more doxy comment fixes 2013-05-17 14:39:07 -07:00
manuelk
5dec62f786 Merge branch 'dev' of github.com:manuelk/OpenSubdiv into dev 2013-05-17 14:08:25 -07:00
manuelk
5ed3488493 more doxy / comment fixes 2013-05-17 14:07:53 -07:00
Takahito Tejima
ccbf1c1716 patchParam.h should be in install files 2013-05-17 14:06:03 -07:00
Takahito Tejima
317962697a fix d3d11DrawContext and dxViewer to follow API changes 2013-05-17 13:30:43 -07:00
Takahito Tejima
aa76d9c645 Add constructor to FarPatchTables. Add enums to FarPatchTables::Type. 2013-05-17 12:49:57 -07:00
Takahito Tejima
bfbf51fda7 Merge branch 'dev' of https://github.com/manuelk/OpenSubdiv into dev 2013-05-17 12:05:50 -07:00
Takahito Tejima
bab8438cd6 optimize OsdUtilDrawController a little bit. using std::map seems faster in most case 2013-05-17 10:21:53 -07:00
manuelk
1b80f01ee3 style cleanup + doxy comments 2013-05-17 10:21:38 -07:00
manuelk
3869be18b7 Renaming PtexCoord as PatchParam and general cleanup of the ptex name where it
doesn't belong
2013-05-17 09:47:44 -07:00
manuelk
c2cec239cd removing osd/patch.h (and cleaning up attending dependencies) 2013-05-17 09:06:40 -07:00
manuelk
dbdde33bef make the use of OsdVertexDescriptor consistent across all classes (and doxy / typo fixes) 2013-05-16 19:53:49 -07:00
manuelk
78d7ce0867 add the ability to FarPatchTablesFactory to select how many levels of subdivision to
create patch tables arrays for when instantiating the FarPatchArrayVector.

default of -1 selects the highest level of subdivision that the factory is able to generate

note : this functionality will eventually have to be exposed to client code from the
FarMeshFactory API
2013-05-16 18:38:06 -07:00
Takahito Tejima
da4fc9c653 Fix multiMeshFactory to splice uniform patches correctly.
(IP) refactor osdbatch
2013-05-16 16:55:53 -07:00
manuelk
6256010296 re-factoring the EvalLimit portion of the code (and other minor comment / typo fixes) 2013-05-16 14:21:11 -07:00
manuelk
456dfbbedf Merge branch 'dev' of github.com:manuelk/OpenSubdiv into dev 2013-05-15 17:55:21 -07:00
manuelk
ad3bacbbbb remove topology data from FarMesh and refactor uniform / adaptive
code paths using FarPatchTables for all serialized topological data.
2013-05-15 17:53:40 -07:00
Takahito Tejima
b273a19b7c bug fix : ptex coord tables wasn't spliced in FarMultiMeshFactory 2013-05-14 18:10:19 -07:00
Takahito Tejima
b16272d6a5 more msvc fixes. make dxViewer working. 2013-05-14 10:48:48 -07:00
Takahito Tejima
d8734690b7 msvc build fixes 2013-05-13 18:43:05 -07:00
Takahito Tejima
1a2b71d929 Refactor OsdGLDrawContext to be constructed from FarPatchTables, instead of FarMesh.
Removed reference to FarMesh from OsdUtilMeshBatch.
Added const qualifier to ComputeContext constructor.
2013-05-10 19:35:25 -07:00
manuelk
8d8e0e9a24 - doxy doc
- inlining critical operators
2013-05-10 11:18:41 -07:00
manuelk
f4c448c52f doxy doc 2013-05-10 10:44:03 -07:00
Takahito Tejima
b7814266c9 Add OpenCL specialized batching class 2013-05-10 09:20:45 -07:00
Takahito Tejima
7632489758 bug fix of OsdGLVertexBuffer::UpdateData. the starting index was wrong. 2013-05-10 08:53:06 -07:00
Takahito Tejima
23ba172397 First draft of OsdUtil batching API 2013-05-09 19:18:05 -07:00
Takahito Tejima
1b879d706f fix FarMultiMeshFactory to work with refactored FarPatchTables. 2013-05-09 19:16:51 -07:00
Takahito Tejima
42f84b78d0 add levelBaseUniform and gregoryQuadOffsetBaseUniform locations as default member 2013-05-09 19:15:50 -07:00
Takahito Tejima
7b6630cf40 fix simpleCpu and ptexViewer to be compilable with new patch tables. 2013-05-09 13:48:00 -07:00
Takahito Tejima
3eaf0362bd split patch descriptor into two parts, far intrinsic properties and osd's.
more OsdGLDrawContext clean up.
2013-05-09 13:14:02 -07:00
Takahito Tejima
ecced51814 factor out createPatchArray function into drawContext.
cleanup glDrawContext
2013-05-09 10:53:58 -07:00
Takahito Tejima
31f7a215d0 reorder less than comparison to match with descriptor iterator 2013-05-09 10:53:22 -07:00
Takahito Tejima
a2bbed2a8b Merge branch 'dev' of https://github.com/manuelk/OpenSubdiv into dev
Conflicts:
	opensubdiv/far/patchTables.h
	opensubdiv/far/patchTablesFactory.h
2013-05-09 09:34:58 -07:00
Takahito Tejima
f592e90067 fix OsdGLDrawContext to follow far patchtables refactoring. 2013-05-09 09:23:01 -07:00
manuelk
20641e3b2c code cleanup / comments 2013-05-08 18:47:36 -07:00
manuelk
4230e12d95 first pass at refactoring FarPatchTables 2013-05-08 17:06:59 -07:00
manuelk
cd380e0a1a Refactoring :
- moving the SubdivisionTables enum from osd/tables.h to FarSubdivisionTables

- renaming various buffer names to _devicePtr for consistency
2013-05-07 15:25:49 -07:00
manuelk
5ec2320d9a adding doxy comments to Compute Controllers
fixes #138
2013-05-07 13:55:14 -07:00
manuelk
4c0c6161d4 Feature adaptive refinement causes Hbr::GuaranteeNeighbors() to leave behind
some un-connected face-vertices. FarSubdivisionTablesFactory has been hardened
so as to not trip over these, but apparently Gregory patch valence tables
generation is tripping over one of those in FarPatchTablesFactory.

fixes #162
2013-05-07 12:32:05 -07:00
David G Yu
9e371e4e89 Fixed DX11 build errors from KernelBatch refactoring 2013-05-06 23:59:58 -07:00
David G Yu
6b96d531bd Fixed GCD build errors from KernelBatch refactoring 2013-05-06 23:59:54 -07:00
manuelk
3ea2a3e472 fixing / adding doxy comments
fixes #138
2013-05-06 19:05:50 -07:00
manuelk
aed197628c KernelBatch tables refactor / cleanup :
- FarKernelBatch becomes a class w/ accessors
- split the FarKernelBatchFactory to its own header file
- add doxy doc
- propagate fallout to the rest of the code base
2013-05-06 17:50:58 -07:00
manuelk
7554321413 Minor code clean-up of FarPatchTablesFactory :
- removed redundant counter / pointer struct
- renamed some of the variables to be less confusing
2013-05-06 15:00:39 -07:00
manuelk
711c693d6b Exposing a previously unused private method that scans an Hbr mesh for
creases and other features and determine the isolation level needed.

Minor improvements:
- we now have a custom "corner" isolation level : with edge-only boundary
  interpolation rules, corner vertices are rounded and would require an
  isolation level of 10. In practice however, 5 appears to be more than
  enough to produce a perfectly rounded shape and is set as a default
  for this value.

- the logic has been made a little more efficient by moving the vertex
  sharpness tags tests to a separate loop so as not to repeat the check
  multiple times for a given vertex

Also added some doxy comments

fixes #161
2013-05-03 12:15:20 -07:00
manuelk
26601c5fb7 More 0th. STL vector accesses checked in FarSubdivisionTables factories.
fixes #155
2013-05-03 12:04:04 -07:00
manuelk
309c7f085e More 0th. STL vector accesses checked in FarSubdivisionTables factories.
fixes #155
2013-05-03 12:02:22 -07:00
manuelk
20d61cd93c A quad face with 2 non-consecutive boundary edges causes the 4 vertices
of this quad to be tagged as boundary. These vertices will cause the
feature adaptive pass to generate sub-faces where appropriate, however
the face itself will not be identified as "non-patch", which causes the
FarPatchTables factory to mis-identify it and fall-back on an assert.

This fix flags these particular quad faces in the first adaptive pass.

The particular shape that caused the crash has also been addded to our
regression suite.

fixes #159
2013-05-02 19:37:34 -07:00
manuelk
65c92bbe72 oops : osd_dynamic_gpu and osd_dynamic_cpu don't always build under windows, so they
don't always have an install target.

fixes #154
2013-05-02 12:02:52 -07:00
manuelk
12eea1cf0b Checking all accesses to 0th. element of std::vectors in FarPatchTablesFactory for empty vectors.
This should fix the exceptions thrown by Windows checking STL vector boundaries.

fixes #155
2013-05-01 19:36:28 -07:00
Takahito Tejima
3df04db2cd FarSubdivisionTables: fixed vertsOffsets and removed unused members.
a new function is added to avoid confusion.
-GetNumVertices() returns number of vertices
-GetNumVerticesTotal() returns total number of vertices includins number of lower levels.

#closes 156
2013-04-25 12:01:06 -07:00
manuelk
b815aff333 First pass at fixing the installation part of the Cmake build : now CMAKE_INSTALL_PREFIX can
be used as intended to specify an installation directory, which can be located anywhere on the
file system.

Also improved the doxygen target and made the doxy build "quiet".

fixes #154
2013-04-22 19:35:41 -07:00
manuelk
eadd1b3ce4 fixing some doxygen @param tags not matching variable names in the code
fixes #138
2013-04-22 18:26:53 -07:00
manuelk
d82ce253eb minor fix for a doxygen typo : its @param (singular, not plural)
fixes #138
2013-04-22 18:17:30 -07:00
manuelk
4bf24d9b95 First pass at our "Eval" API : this checkin is a mileston and is still missing
code paths for certain types of feature adaptive patches.

The check-in adds a new "limitEval" code example.

More to come soon...

fixes #45
2013-04-18 19:55:05 -07:00
manuelk
24356cc680 making MSVC++ happy...
fixes #153
2013-04-18 19:22:20 -07:00
manuelk
7e63b20c58 Small refactoring of the DrawContext code to remove duplication of vertex / patch counting code.
fixes #153
2013-04-18 17:54:12 -07:00
manuelk
4bab37310d minor clean up of the patch parametric bitfields API
note : this is not using traditional bit-fields as we cannot guarantee that the CPU-side
compiler will match the bit-packing of the compilers used on the GPU-side.
2013-04-11 14:26:03 -07:00
manuelk
9a6e84800b fix a comment in FarMeshFactory to reflect the changes in FarPtexCoord
fixes #143
2013-04-01 16:45:15 -07:00
David G Yu
ecd5419718 Fixed type of depth var in computePtexCoordinate
Fixes #143
2013-03-25 10:55:03 -07:00
David G Yu
4a6ba2de64 Fixed function proto mismatch in d3d11DrawContext
Fixes #143
2013-03-25 10:54:40 -07:00
Manuel Kraemer
a5b7c0337e size_t requires #include <stdlib.h>
fixes #143
2013-03-25 07:32:17 -07:00
manuelk
e6e7c96a52 We need to leverage our per-patch ptex indexing scheme in the EvalLimit API.
- replace ptex indexing with the FarPtexCoord structure as a way to pass per-patch
  ptex data to the shaders.

  We are replacing a vector<int> arranged as :
  int[0] : ptex face index
  int[1] : (u,v) as 16 bits encoding the log2 coordinate of the top left corner

  Instead we are now using a struct arranged as :
  int[0] : ptex face index
  int[1] : is a bit-field containing u,v, rotation, depth and non-quad

  The u,v coordinates have been reduced to 10 bits instead of 16, which still
  gives us a lot of margin.

- Replace OsdVertexBufferDescriptor with something more adequate for general
  primvar representation (this name will probably eventually change...)

- Improve OsdPatchDescriptor
    - add a "loop" boolean (true if the patch is of loop type)
    - add a GetPatchSize() accessor

- OsdPatchArray :
    - remove some redundant elements (still more to do there)

- Fix all shader / examples / regressions & stuff to make this all work.

fixes #143
2013-03-22 18:20:50 -07:00
manuelk
86c805fd67 fixes #138 2013-03-20 14:07:22 -07:00
David G Yu
8849a9682b Fixed far public header file install rule 2013-03-19 16:40:04 -07:00
manuelk
b93ab652c6 - adding param descriptions for FarMeshFactory constructor
fixes #138
2013-03-18 15:45:59 -07:00
Manuel Kraemer
95f326eed1 add OpenCL include directories when Cmake detects CL for the OSD build 2013-03-16 18:41:49 -07:00
Manuel Kraemer
5c9ae5537c fix build error : size_t requires stdlib.h 2013-03-16 18:40:53 -07:00
Takahito Tejima
f745aa2807 add paint test example 2013-03-15 12:39:44 -07:00
David G Yu
500bebefb4 Fixed VS2010 build warnings/errors 2013-03-08 12:07:09 -08:00
Takahito Tejima
291debd4a9 change access permissions on files 2013-03-08 08:57:42 -08:00
Takahito Tejima
fbc139d39c fix compile errors on gcd kernel 2013-03-07 22:43:47 -08:00
Takahito Tejima
8efecb0fca Batching stuffs: generalized kernel batches, table/dispatcher refactoring, multiMeshFactory, drawContext, etc.
2 client APIs are changed.
- VertexBuffer::UpdateData() takes start vertex offset
- ComputeController::Refine() takes FarKernelBatchVector

Also, ComputeContext no longer holds farmesh.
Client can free farmesh after OsdComputeContext is created.
(but still need FarKernelBatchVector to apply subdivision kernels)
2013-03-07 17:50:15 -08:00
Takahito Tejima
ced00bf107 fix crash bug when non-quad boundary face exists. 2013-03-07 14:56:14 -08:00
manuelk
d73d74f70b "const" the vertex index pointer in HbrMesh::NewFace (request from sbrew) 2013-03-06 14:31:15 -08:00
manuelk
ea1a87441f Add support for hierarchical hole edits.
- add tag parsing for h-hole in shape_utils
- re-create Renderman's test shape from the documentation (catmark_square_hedit.h)
- fix Hbr to correctly pass the hole tag from parent to child face
- fix FarSubdivisionTables to handle disconnected face-vertices without crashing

fixes #75
2013-03-01 18:27:19 -08:00
Andrew Wong
1c9cb04095 far: Fix compiler warnings 2013-02-25 22:36:30 -05:00
Andrew Wong
60d81afd02 ptexTextureLoader: Fix a few compiler warnings 2013-02-25 22:29:50 -05:00
manuelk
d21de79ac1 Merge branch 'master' of github.com:PixarAnimationStudios/OpenSubdiv 2013-02-20 14:16:57 -08:00
manuelk
25f79e7ff2 - change adaptive refinement in FarMeshFactory to not refine inside holes,
while retaining a necessary 1-ring on the inside of a hole edge

- add IsInsideHole() function to HbrHalfEdge

- add HasChild() function to HbrVertex and HbrHalfedge

- add a regression shape with adjacent holes and creases (tests dart, crease & boundaries)

Note : this does not address hierarchical edits inside holes or hole tags in hierarchical edits

fixes #78
2013-02-20 14:12:09 -08:00
David G Yu
452b30f72f OsdMesh no longer owns its ComputeController
Now a ComputeController is passed as an
argument to OsdMesh::Create(). This is
a better match to the underlying object
model and can be much more efficient for
compute controllers that have expensive
resources, e.g. compiled shader kernels.

Fixes #103
2013-02-19 17:33:32 -08:00
manuelk
a52c70ab8b First pass implementation of holes :
- make sure HBR passes down the hole tag to children when subdividing faces
- minor API modification : allow to unset the hole flag on a face
- modify uniform / adaptive FarMeshFactory to be aware of the flag
- make the FarSubdivisionTableFactory assert when finding unconnected HBR vertices (as it should)

* Uniform subdivision :
    The refinement scheme only creates faces & vertices necessary
    to maintain the one-ring around the edges of a hole, so this solution
    is quite efficient.

* Adaptive subdivision :
    At the moment we are still performing full topological analysis on holes and
    only skipping patches associated to holes. This is sub-optimal in 2 ways :
        1. the topological analysis can potentially be cranking on a lot of unnecessary
           geometry
        2. even though we may not be drawing the patches, the compute stage is still
           applying kernels on all the control vertices of these patches.
    We will have to revisit feature adaptive subdivision & holes, so keep the issue active.

fixes #78
2013-02-13 14:34:33 -08:00
Manuel Kraemer
5ad40fe535 Merge pull request #121 from andrewkww/vs2012_warnings
VS2012 warnings: more conversion warnings and a few others
2013-02-12 17:26:25 -08:00
Andrew Wong
d4c62d4aef osd: fix conversion warnings in glDrawContext
warning C4242: 'argument' : conversion from 'int' to 'unsigned char', possible loss of data
2013-02-09 23:35:02 -05:00
Andrew Wong
e04c95988c far: fix conversion warnings in Far*SubdivisionTablesFactory
warning C4242: 'argument' : conversion from 'int' to 'unsigned char', possible loss of data
2013-02-09 23:35:02 -05:00
Andrew Wong
329a9a7b40 hbr: fix a few more warnings 2013-02-09 23:35:01 -05:00
Andrew Wong
08ca7af0c9 hbr: fix warnings in the Hbr*Edit constructors
warning C4242: 'initializing' : conversion from 'int' to 'const unsigned char', possible loss of data
2013-02-09 23:34:59 -05:00
Andrew Wong
b25226134f fix warnings for having assignments inside conditionals
warning C4706: assignment within conditional expression
2013-02-09 23:34:58 -05:00
Andrew Wong
108ee96317 subdivisionTablesFactory: Fix typo in assert 2013-02-09 19:06:06 -05:00
Manuel Kraemer
6d4565e6b8 Merge pull request #109 from aras-p/glvbo-fixes
CpuGLVertexBuffer performance fix + glViewer fixes

reviewed, approved & much appreciated : thank you

takahito + manuelk
2013-02-06 18:27:48 -08:00
Takahito Tejima
4738916173 Fix ptex guttering on corner pixels.
Fixes #114
2013-02-05 18:06:19 -08:00
manuelk
6f5d1e34be partial solution to run-time environment configuration :
- add bool OsdGLDrawContext::SupportsAdaptiveTessellation() method
- modify glViewer to use that instead of #ifdefs

Note : this is not the final word on this as OSD really needs a more comprehensive
system to provide run-time information about available features to the client code.

fixes #111
2013-02-05 15:04:07 -08:00
Aras Pranckevicius
0d5b543c4a CpuGLVB: code review changes 2013-02-04 22:10:36 +02:00
Aras Pranckevicius
58cb40ec5c CpuGLVB: dirty flag to not keep on uploading if data did not change 2013-02-04 20:57:19 +02:00
Aras Pranckevicius
a4a8cd122d CpuGLVB: reading data back from the GPU each time model is changed is not very efficient.
Model the GL VB after D3D11 one, where there are no data read backs, however this means
an extra memory copy of the buffer. 4th level uniform subdiv on Car, glGetBufferSubData
was taking 50% of CPU time before (actual subdiv 22%), now that is gone. Full CPU Draw
62ms -> 54ms, looks like most of overhead now is just waiting on GL queries).
2013-02-04 07:55:42 +02:00
Aras Pranckevicius
a379ec2b9a gcd: cleanup 2013-02-03 10:15:31 +02:00
Aras Pranckevicius
8b59d99d20 gcd: cleanup CMakeLists 2013-02-03 10:12:29 +02:00
Aras Pranckevicius
e8ceaba176 gcd: convert face loop to work in 32 item size batches.
MBP6,2 (2 core 4 thread), catmark_car Lv4: 31.2ms CPU, 15.8ms GCD (was 22ms)
2013-02-03 10:05:58 +02:00
Aras Pranckevicius
c4b463668a gcd: convert most of loops to submit work in 32 item size batches.
MBP6,2 (2 core 4 thread), catmark_car Lv3: 6.9ms CPU, 5.2ms GCD; Lv4: 31.2ms CPU, 22.ms GCD
2013-02-03 09:38:33 +02:00
Aras Pranckevicius
b556e9d6cd gcd: naive implementation using dispatch_apply for all loops. Not faster, dispatch overhead too high 2013-02-02 23:22:04 +02:00
Aras Pranckevicius
54c7329ba4 gcd: files for GCD dispatcher (right now just copy of OMP one), add items to glViewer 2013-02-02 22:53:33 +02:00
Nathan Litke
68488d86b0 Fixed a buffer overrun error in OsdCLGLVertexBuffer::UpdateData. 2013-01-30 00:20:37 -08:00
Takahito Tejima
ab4f79c128 Remove deprecated GL calls, comply with 4.2/3.3 core profile. Use VAO, update glsl shaders, remove immediate draws, etc.
In example code, GLUT has been replaced with GLFW so that glViewer/ptexViewer can run on OSX (10.7 or later).

OSX note: still have some problem with clang, may need to explicitly specify gcc on cmake cmdline
 -DCMAKE_CXX_COMPILE=/usr/bin/g++

fixes #98
2013-01-29 15:54:18 -08:00
manuelk
d03a04d088 Fix OSD crash bug within CUDA & CL compute modules :
- remove the GL error check in cudaGLVertexBuffer :
  * unrelated GL errors left on the stack were triggering erroneous
  vertexBuffer allocation errors
  * we should not be checking for GL errors here anyway (as most other
  buffer allocations aren't checked either)

- add some pointer checking in the GL / D3D drawContexts in case the
  vertexBuffer pointers passed are NULL

- add some additional typedefs in OsdError to report some of the new
  CUDA / GL related errors
2013-01-25 18:31:40 -08:00
manuelk
9ed6ac7da8 - clean up all unused variables / constructors...
- add a -Wall flag, but leave it commented out for now until the same is done for other compilers

fixes #96
2013-01-22 14:47:46 -08:00
manuelk
54dff770d4 clean access permissions on files (rw-rw-r--) 2013-01-18 13:40:39 -08:00
Manuel Kraemer
ba7bf7b41c fix compiler warnings on class constructors 2013-01-18 13:30:31 -08:00
opensubdiv
96520b4845 Fixed a few VS2010 build warnings 2013-01-10 13:33:04 -08:00
manuelk
2baa3c82c1 removing some crusty tabs & other minor formatting 2013-01-10 11:14:41 -08:00
manuelk
f9dd284be0 Some notes :
- still need to change these changes with other compilers (MSVC / clang...)

- had to add a -Wno-invalid-offsetof for GCC (still need to test w/ other compilers) : apparently gcc 4.4 is somewhat incorrect in tagging our templated class as POD.

- had to change fvarData.h to initialize bitfields to 0 as gcc generates truncated int warnings when trying to initialize 31 bits to -1

- in mesh.h replaced original tbb::concurrent_vector with std::vector until a better solution can be found

Fixes #93
2013-01-10 10:47:50 -08:00
David G Yu
95c84b8f56 Adaptive tess using projected bounding sphere
This avoids adaptive tessellation artifacts near silhouette edges
by using the projected diameter of an edge's bounding sphere
rather than the length of the projected edge itself.

There is a nice writeup of this by Bryan Dudash of NVIDIA at:
https://developer.nvidia.com/content/dynamic-hardware-tessellation-basics
2013-01-04 19:15:24 -08:00
David G Yu
8440d83607 Fixed build to switch on features not platforms
Also, allow updated to allow the default install path
to be overriden for Android NDK builds.
2012-12-20 19:11:46 -08:00
David G Yu
1547b59570 Updated to support GLES 2.0 on iOS and Android 2012-12-20 10:25:41 -08:00
David G Yu
ce2f29d368 Upload only the coarse vertex data from CPU to GPU 2012-12-19 23:30:36 -08:00
manuelk
9ac6c3081e - fix broken ptex block allocation : iterates over all faces to find the longest edge
- code style fixes

fixes #89
2012-12-17 10:31:55 -08:00
manuelk
607b62337a Switching ptex coordinates structures to centroid based interpolation. This does not fix completely the problem though and we will have to revisit our guttering.
fixes #88
2012-12-17 10:26:14 -08:00
David G Yu
49a493a7bf Fixed a typo in the DirectCompute dispatch code. 2012-12-17 09:48:49 -08:00
David G Yu
77bdde36c6 Fixed a few build issues for OS X
Also, updated viewer_compat.cpp to more closely match viewer.cpp
2012-12-15 20:34:31 -08:00
David G Yu
6042649efa Added DirectCompute backend for Osd Compute 2012-12-13 10:22:30 -08:00
David G Yu
4f00990ae1 Fixed SRV format for level and valence buffers 2012-12-13 10:00:46 -08:00
manuelk
ab47ee53b3 adding some ASCII art to document cryptic CV names in Gregory shader code.
fixes #86
2012-12-11 14:26:06 -08:00
manuelk
419741442d defining M_PI to fix some compiler errors on OSX 10.8
fixes #44
2012-12-11 13:50:27 -08:00
manuelk
10c687ecd5 Release Candidate 1.0 :
- [Feature Adaptive GPU Rendering of Catmull-Clark Surfaces](http://research.microsoft.com/en-us/um/people/cloop/tog2012.pdf).

- New API architecture : we are planning to lock on to this new framework as the basis for backward compatibility, which we will enforce from Release 1.0 onward. Subsequent releases of OpenSubdiv should not break client code.

- DirectX 11 support

- and much more...
2012-12-10 17:15:13 -08:00
Jeremy Cowles
0f6efb6aec Make VertexKernelBatch public when building with clang.
There seems to be a bug in clang: despite the fact that FarMeshFactory is
declared to be a friend class from FarSubdivisionTables, clang protests that
VertexKernelBatch is not accessable.

This hack adds an #ifdef __clang__ block to make that structure public and keep
Far compiling under OSX.
2012-11-11 23:17:27 -08:00
Manuel Kraemer
7fd99b421f Taking a first stab at a doxygen config file and matching cmake rules.
Also reformatting a chunk of FAR's comments to work w/ doxygen.

Closes #75
2012-10-06 17:53:51 -07:00
manuelk
5f5207999f Refactoring far (cliff notes):
- All data representation classes are now single-templated for a vertex class 'U'

    - All constructors / instancing code has been moved into "Factory" functions that are dual-templated
      for two vertex classes <class T, class U=T>. This allows hbr specialization with a placeholder
      vertex flass 'T' for faster analysis without paying interpolation costs, while far can still specialize
      a fully implemented vertex class 'U' with full subdivision functionality.

    - Some preliminary clean-up work on FarVertexEditTables with the addition of a FarVertexEdit class
      as a replacement for the former HbrVertedEdit which was introducing back dependencies on hbr. The
      implementation is very lightweight. Some slight renaming / cleanup of the code, with some more to
      be done.

    - there are no more dependencies on hbr (not even #include) from far's data structure !

Notes :
    - the FarDispatcher mechanism has become somewhat awkward and should be re-evaluated when refactoring osd.

    - the "Factory" pattern survives this round of refactoring until we can find something better.

Closes #34
2012-09-17 18:41:48 -07:00
manuelk
9d37554969 Making CMakeLists more consistent 2012-09-12 15:01:32 -07:00
manuelk
60d92d7212 Making CMakeList more consistent 2012-09-12 15:00:04 -07:00
manuelk
56d4bbdd3c Fix sanity check for max value of level in FarMeshFactory::sumList()
Closes #73
2012-09-12 13:05:11 -07:00
manuelk
07b4c064d0 tiny comment fix 2012-09-11 15:12:16 -07:00
manuelk
bddf9a87e2 Fix FarVertexEditTables : include the correct hbr file and fix templating problems
Closes #62
2012-08-23 13:33:10 -07:00
Takahito Tejima
b4ff94d8af forgot to add new files. sorry! 2012-08-22 16:22:08 -07:00
Takahito Tejima
a157628b08 OsdMesh refactoring. Added OsdElementArrayBuffer and OsdPtexCoordinatesTextureBuffer, which manage GL resources on behalf of OsdMesh. 2012-08-22 13:57:36 -07:00
Julian Fong
2420738dad Merge branch 'master' of github.com:PixarAnimationStudios/OpenSubdiv 2012-08-20 13:35:05 -07:00
Julian Fong
0866814fb3 HbrFace::Unrefine() needs to work with new face allocation strategy. 2012-08-20 13:29:05 -07:00
Julian Fong
59edf56416 Change container get methods (HbrMesh::GetVertices, etc) to take
output iterators instead of std::vector - eases prman integration
for cases where std::list makes more sense.

Block allocate face children array in common case (<= 4 children).

Other, minor consistency edits.
2012-08-20 13:21:12 -07:00
Takahito Tejima
fad4a2b7ae Changed deprecated GLenum names 2012-08-20 09:38:45 -07:00
manuelk
3c16c2c18f Good catch - in practice this should be pretty hard to get into... but
better safe than sorry.

Closes #46
2012-08-10 15:24:04 -07:00
manuelk
e2217e182c From now on, hbr assumes that its clients will provide the defition of a
mutex class with Lock / Unlock public functions.

- remove Mutex implementation from Hbr (and revert to original PRman code)
- provide a Mutex class stub in osd
- add some forward declarations in OsdMesh to limit some of the mutex spills
- #include <osd/mutex.h> where needed (little hackish until we can refactor
some of far better)
- remove ILM_BASE from some CMakeLists

Closes #48
2012-08-10 15:14:02 -07:00
manuelk
bc959f6411 renaming verion to BETA_1_1 2012-08-10 12:03:58 -07:00
manuelk
004591ba70 Adding legal header to osd/vertex.h 2012-08-10 12:02:41 -07:00
Takahito Tejima
e3d939ee61 fix for win64 build 2012-08-03 20:15:24 -07:00
manuelk
a1552cfe82 Siggrpah 2012 - rolling over all of prepro work into beta 1.1 2012-08-03 19:51:27 -07:00