Commit Graph

434 Commits

Author SHA1 Message Date
Takahito Tejima
d2fc86ba5e Move table splicing functions of FarMultiMeshFactory into factories,
in preparation for relocating MultiMesh to OsdUtil.
2014-03-20 14:52:42 -07:00
Takahito Tejima
76818e630b Refactor FarSubdivisionTables.
Delete scheme specialized subdivision tables. The base class FarSubdivisionTables
already has all tables, so we just need scheme enum to identify which scheme
the subdivision tables belong to.
This brings a lot of code cleanups around far factory classes.
2014-03-19 17:19:08 -07:00
takahito-tejima
e5c54cc9eb fix typo in gcdComputeController 2014-03-19 11:51:54 -07:00
Takahito Tejima
44a7cb6a45 Refactor Far API.
* replace void* of all kernel applications with CONTEXT template parameter.
  It eliminates many static_casts from void* for both far and osd classes.
* move the big switch-cases of far default kernel launches out of Refine so
  that osd controllers can arbitrary mix default kernels and custom kernels.
* change FarKernelBatch::kernelType from enum to int, clients can add
  custom kernel types.
* remove a back-pointer to farmesh from subdivision table.
* untemplate all subdivision table classes and template their compute methods
  instead. Those methods take a typed vertex storage.
* remove an unused argument FarMesh from the constructor of subdivision
  table factories.
2014-03-19 11:44:51 -07:00
Takahito Tejima
1d8cb62255 Add OsdUtilPatchPartitioner. It splits patcharray into subsets so that clients can draw partial surfaces for both adaptive and uniform.
Also added a new example facePartition which uses OsdUtilPatchPartitioner.
2014-03-19 10:25:12 -07:00
Takahito Tejima
40dbbfd294 Fix another multi mesh splicing bug of face varying data.
Change FarPatchTables::Descriptor::begin() to take starting patch type so that we can use a desc iterator for uniform quads/tris as well.
2014-03-19 09:10:49 -07:00
manuelk
3fe1d97342 Fix build warning in FarMultiMeshFactory 2014-03-17 14:59:28 -07:00
manuelk
bea9d59a97 Release 2.3.5 2014-03-17 11:45:09 -07:00
manuelk
a9f321482a Update release notes for release 2.3.5 2014-03-17 11:41:58 -07:00
manuelk
90a21ca74b Fix doxygen parameter documentation for OsdCPUSmoothNormalContext 2014-03-17 11:39:45 -07:00
Takahito Tejima
cf6e9bc6de Fix a splicing bug in FarMultiMeshFactory.
* the number of split vertices has to be taken into account when splicing vertex valence table.
* followed patch descriptor iterator api changes.
2014-03-17 11:20:02 -07:00
manuelk
5d3ca52e1a Minor code cleanup in FarPatchTablesFactory
- remove crufty #defines
- directly allocate & populate quadOffsets table
2014-03-11 18:37:25 -07:00
manuelk
d0c3ed9f38 Refactoring FarPatchTables and FarPatchTablesFactory
minor code cleanups:
- change Descriptor::iterator to use a static vector instead of overly complicated logic
- change the private factory PatchType struct for better readability
- variable name changes
2014-02-24 17:12:39 -08:00
David G. Yu
ead34f1662 Added 'static' specifiers for non-kernel CL funcs at program scope. 2014-02-23 21:25:47 -08:00
David G Yu
ff4fe169bb Removed address space qualifiers from OpenCL kernel functions
These aren't needed and will raise errors on some implementations.
2014-02-22 22:35:36 +00:00
manuelk
9fda7b73f7 Minor code cleanup of FarMeshFactory 2014-02-13 11:46:31 -08:00
manuelk
f1518a5f59 Fix Gregory Boundary patch buffer overrun
Prevent boundaryEdgeNeighbors[2] from being overrun when an interior
vertex has more than 2 boundary neighbor vertices. The fix is applied
to the GLSL / HLSL and CPU implementations.

Note: this appears to fix long-standing problems with Gregory patches,
but i am not entirely convinced that this fixes the general case.

fixes #259
2014-02-13 11:30:33 -08:00
manuelk
fea9288a1f Replacing un-necessary dynamic_cast with reinterpret_cast within FarDispatcher
First step in removing RTTI from Far and Hbr - further fixes require modifications of Hbr
and will tackled in another fix.

fixes #257
2014-02-03 14:29:53 -08:00
Takahito Tejima
75c02c6043 Fixes black texels when the resolution of a ptex face is less than 4.
Closes #253
2014-02-03 12:03:17 -08:00
manuelk
ec98c7fe03 Move VBO buffer allocation out of allocate() and into BindVBO()
fixes #256
2014-01-30 17:29:14 -08:00
manuelk
704a6129cb Fix build warnings (optimized) 2014-01-22 14:26:42 -08:00
manuelk
be9d23fedd Release 2.3.4 2014-01-13 10:57:21 -08:00
manuelk
14908b737c Update release notes for release 2.3.4 2014-01-13 10:52:17 -08:00
manuelk
89e18fb179 Adding OpenMP SmoothNormal Context & Controller 2014-01-10 15:31:48 -08:00
manuelk
dabaac8187 Adding a TBB SmoothNormal Context & Controller
Also:
    - Add a _numVertices member to cpuSmoothNormalContext (for memory reset function)
    - Fix memory reset function in cpuSmoothNormalContext (was performing redundant memsets)
    - Add a resetMemory boolean to cpuSmoothNormalContext to make reset step optional (default is off)
2014-01-10 14:56:59 -08:00
manuelk
6465d3594c Adding a Context / Controller pair for CPU evaluation of smooth normals 2014-01-09 17:36:35 -08:00
manuelk
8918173fda Improve stringification of shaders & kernels in build.
- added a _stringify function to top CMakeLists
- switched all stringification tasks to use the macro
- all suffixes are now .gen.h instead of .inc (to help cmake track dependencies)
2014-01-03 16:59:26 -08:00
manuelk
5c4e8286e5 Fix build warning from osdutil/adaptiveEvaluator.cpp 2014-01-03 15:43:16 -08:00
jcowles
eb09b9e14c Use obj targets for faster CPU/GPU lib builds
Further leverage cmake object libraries to share object files for CPU
and GPU OSD libraries, avoiding duplicate complation for dynamic/static
build passes.

CMake restricts object library inputs to header and source files, so the
.inc files were renamed to .gen.h (which seems like a better name
anyway) to make CMake happy.

Also updated the .gitignore file to ignore .gen.h files.

Conflicts:
	opensubdiv/osd/CMakeLists.txt
2014-01-03 14:52:35 -08:00
manuelk
00b0d95058 Remove CMake compiling redundancies
- set OBJECT targets for osd cpu & gpu libs, and use the obj target for
  static and dynamic linking

- add a new examples_common_obj OBJECT target
- replace direct source dependencies to obj target in all examples CMakeLists

This change makes it possible to not re-compile the same source files
multiple times when they are used in multiple targets. Thanks to jcowles
for uncovering the CMake functionality.

Note: it seems that multi-process build is working again (gmake -j <x>)
2014-01-03 13:39:48 -08:00
jcowles
e8a25c511a Make osd a cmake object library.
An object library allows other build targets to use the object files
from this library.

The change introduces osd_static_cpu_obj which is consumed by
osd_static_cpu.

This will be useful for emscripten integration where we cant use the
compiled library, rather it will use the object files, targeting
osd_static_cpu_obj.
2014-01-03 11:02:51 -08:00
Dirk Van Gelder
1329ea34de Update license headers to apache. 2014-01-01 21:08:53 -08:00
Dirk Van Gelder
01fa0eac63 Add C compatible API to access the adaptiveEvaluator class from non-C++.
This is the case with blender.
2014-01-01 21:02:56 -08:00
Dirk Van Gelder
7f22c49cd3 Install was incorrectly set to bindir. Changed to libdir. 2014-01-01 10:31:11 -08:00
David G. Yu
570ebf7156 Fixed VS2010 warnings/errors. 2013-12-31 23:50:55 -08:00
David G. Yu
fdc3d11852 Added 'f' suffix to float constants in stencil factory data tables. 2013-12-31 23:43:37 -08:00
Dirk Van Gelder
7e0f6955c7 Added adaptiveEvaluator class inspired by Sergey's work in blender.
Do feature adaptive refinement, then use the cpuEvalLimit API to evaluate
grids of points on faces.

Test harness is tessellateObjFile which has a -blender option to trigger
the gridding tessellation code.
2013-12-31 22:35:52 -08:00
Dirk Van Gelder
8b65c1b2f4 Updates for blender development. Add convenience function
for adding faces and specify that osdutil is an installed
library.
2013-12-23 08:59:13 -08:00
manuelk
1a8b41287e Fix OsdCpuEvalLimitKernel
Correct some vertex buffer descriptor mixups between length & stride

fixes #248
2013-12-20 15:40:52 -08:00
manuelk
d41cb5cd1f Fix maxvalence calculation in FarMeshFactory
The lowest max valence should always be 4: even a triangle
generates 4 quads.

fixes #249
2013-12-20 15:24:14 -08:00
manuelk
69ebcb8cc3 Fix FarStencilTablesFactory: replace limit tangents table
The new table accomodates verts with valence up to 20.

Dr. DeRose provided me with a python script to generate the tables, but wants to
investigate a closed-form alternative to pre-computed tables.

Also: our logic is incorrect - it is missing adjacent face-points in the
interpolation (apparently this has been incorrect since day 1). Further fixes
coming next year...

fixes #246
2013-12-20 11:01:58 -08:00
David G Yu
8990d5712f Fixed iOS build 2013-12-15 23:39:32 -08:00
manuelk
bb13047db2 Fix FarStencilFactory control stencil caching
The logic that invalidates the vertices in the control stencil and
the cached bspline patch weights was not triggering correctly.
Hopefully this new bit of logic should clear up some of the incorrect results.

fixes #246
2013-12-13 16:23:19 -08:00
manuelk
a4f3627ec2 Removing asset for high-valence vertices running off limit tangent pre-computed table.
Note: the stencils generated will be incorrect for extraordinary crease vertices with valence > 11.

fixes #246
2013-12-11 13:30:36 -08:00
manuelk
96b63884f0 Fix degenerate stencil limit tangent code path.
Limit tangent stencil crease rule was accumulating the wrong vertices. This
change switches from using an Hbr operator to using a less efficient std::list,
but allows us to rotate around the vertex from an arbitrary starting incident
edge.

The values returned are "plausible", but more extensive testing would be required
to validate this new code.

fixes #246
2013-12-10 14:13:30 -08:00
Manuel Kraemer
a565526977 Fix unused variable build warnings (gcc 4.8.2 - Fedora 19) 2013-12-08 13:47:14 -08:00
manuelk
8a335c3858 Release 2.3.3 2013-12-05 11:28:42 -08:00
manuelk
14f5d60af9 Update release notes for release 2.3.3 2013-12-05 11:12:38 -08:00
Takahito Tejima
f7f2ca2581 Move uniform block definitions out of osd common shader into client shader.
Important notice: all client shader code must have following functions and compose them to osd intrinsic shaders (vertex/tessEval/tessControl)

mat4 OsdModelViewMatrix()
mat4 OsdProjectionMatrix()
mat4 OsdModelViewProjectionMatrix()
float OsdTessLevel()
int OsdGreogryQuadOffsetBase()
int OsdPrimitiveIdBase()

We probably should write a utility class for basic binding of them, to make client code simpler.
2013-12-03 15:59:38 -08:00
manuelk
469a196fee Fix FarStencilTablesFactory to correctly check for tangent output pointers
And not perform interpolation if output pointers for tangents weren't passed to the
factory

fixes #243
2013-12-03 10:53:05 -08:00