Commit Graph

1152 Commits

Author SHA1 Message Date
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
Takahito Tejima
727077a8e0 Fix mistakenly deleted memory barrier in glsl compute kernel. 2014-05-09 21:16:04 -07:00
manuelk
9424784fe5 Change EvalLimit Gregory patch kernels to the large weights table to accomodate higher valences.
This change matches this CPU kernel more closely to our GPU patch shaders.

fixes #298
2014-05-09 17:26:03 -07:00
Takahito Tejima
4589453608 Added new example 'topologySharing'.
It tests vbo interleaving, aggregation, sharing topology, etc
2014-05-09 15:44:52 -07:00
Takahito Tejima
9aaacae853 Added interleaved buffer mode in glViewer 2014-05-09 15:44:52 -07:00
Takahito Tejima
ee061291b7 Interleaved buffer support in OsdCompute. Removed OsdVertexDescriptor and replaced with OsdVertexBufferDescriptor.
All kernels take offset/length/stride to apply subdivision partially in each vertex elements.

Also the offset can be used for client-based VBO aggregation, without modifying index buffers.
This is useful for topology sharing, in conjunction with glDrawElementsBaseVertex etc.
However, gregory patch shader fetches vertex buffer via texture buffer, which index should also
be offsetted too. Although gl_BaseVertexARB extension should be able to do that job, it's a
relatively new extension. So we use OsdBaseVertex() call to mitigate the compatibility
issue as clients can provide it in their way at least for the time being.
2014-05-09 15:44:52 -07:00
Takahito Tejima
2372eb45ef Add tbb kernel to glBatchViewer 2014-05-09 15:44:52 -07:00
gelder
2e02892216 Remove debugging std::cout calls as these classes get used in Presto. 2014-05-06 09:25:55 -07:00
Takahito Tejima
a57dd034e7 Reorganize ComputeContext and ComputeController.
Moved transient states (current vertex buffer etc) to controller.
ComputeContext becomes constant so that it's well suited for coarse-grain
parallelism on cpu. The prims sharing same topology (ComputeContext) can
be refined simultaneously by having mutiple compute controllers.
Client facing API doesn't change.
2014-05-06 08:53:36 -07:00
David G. Yu
02da793be4 Fixed calculation of screen space LOD tess factors for transition corner patches.
fixes #296
2014-05-02 15:59:30 -07:00
Takahito Tejima
d937580b02 temporary workaround for the synchronization bug of glsl compute kernel.
closes #295
2014-05-02 15:46:03 -07:00
Takahito Tejima
a786b2de15 enable GLSL compute kernel in glBatchViewer 2014-05-02 15:21:44 -07:00
Takahito Tejima
207cd494d5 glViewer: stop updating during freeze. 2014-05-02 14:19:08 -07:00
takahito-tejima
b59d67f501 Fixed ptexViewer build error on mac 2014-04-30 20:53:37 -07:00
manuelk
bba6cda858 Fix incorrect FarMeshFactory logic for isolating multiple corner vertices in corner patches.
- the previous fix omitted to use the corner count which might have caused trouble with certain topologies

fixes #294
2014-04-30 19:02:28 -07:00
manuelk
1284fa958b Minor cosmetic fixes to the HUD's font 2014-04-30 16:41:55 -07:00
manuelk
ac04e124be Fix file permissions on farPatchTablesFactory.h 2014-04-30 16:10:32 -07:00
manuelk
d6889c2105 Fix HUD pulldown mouse-click to handle relative window coordinates. 2014-04-30 16:08:49 -07:00
manuelk
7100f41f6c Minor improvements to HUD pulldown
- don't close the pull-down when selecting an item
- change color of down-arrow to yellow when the pulldown is open
2014-04-30 15:41:05 -07:00
manuelk
42cd37e060 Fix adaptive isolation of sharp corner vertices
- fix the vertesIsBSpline logic to correctly recognize these sharp corner vertices
- fix another bug where a loop was missing vertices from from quad faces with 2
  non-consecutive boundaries

fixes #294
2014-04-30 14:37:21 -07:00
manuelk
69755c6f22 Fix OsdUtilAdaptiveEvaluator concurrency issue
- add a limit evaluation method to EvalLimitController that allows
  client code to directly pass the output buffer without binding it
  to the Context (the call only computes vertex interpolation of a
  single sample)

- switch the OsdUtilAdaptiveEvaluator to use the new method from the controller
  and stop stomping member

- cleanup buffer and member variables no longer used

- cleanup initialization logic to be better aware of uniform / adaptive

- add some assert sanity checks in the cpuEvalLimitKernels

fixes #293
2014-04-29 18:27:04 -07:00
manuelk
6b6fa11447 Fix OsdUtilRefiner incorrect "Invalid size of patch array" error reporting.
The size of the patch array can only be checked in uniform mode. An argument can be
made that this should be an assert...

fixes #292
2014-04-29 10:21:38 -07:00
manuelk
a7d5db4d7d More cosmetic fixes to examples' GUI
- fix default selection for pulldown widgets
- move widgets around to prevent overlap in examples
- add a little triangle indicator to the pulldown widget
- switch color from white to yellow for selected pulldown item
2014-04-28 16:36:39 -07:00
manuelk
6e7404f150 Cosmetic fixes to the ptexViewer example GUI
- switch to pulldown widget
- move GUI components around
- add TBB as a compute controller
2014-04-28 12:09:15 -07:00
Manuel Kraemer
a497528c59 Adding a NO_MAYA flag to CMakeLists to disable all Autodesk Maya dependencies in the build 2014-04-28 10:21:39 -07:00
Manuel Kraemer
48c119cb26 More cosmetic changes to the examples GUI
- switch shading radio buttons to pulldowns
- re-ordered elements on screen in most viewers

note: the ptex viewer has not been updated to the new look yet
2014-04-28 10:10:10 -07:00
Manuel Kraemer
00f2419388 Additional GUI updates to GL example code
- switch Compute selection to pull-down menu
- add TBB controller to ptexViewer
- small cleanup in Hud

note: shading should also switch to a pull-down
2014-04-27 23:05:18 -07:00
Manuel Kraemer
aa584ed2ce Adding a PullDown widget to our HUD in examples/common
- adding pulldown type menu selector
- updated shape selection to use the new widget in various Gl examples
2014-04-27 18:38:51 -07:00
manuelk
25cee425f3 Fix shape_utils genRIB function to use streams correctly.
fixes #290
2014-04-25 10:49:59 -07:00
Manuel Kraemer
73d891fa12 Merge pull request #289 from nathan-at-digitalfish/fix_fvar_triangulation
OsdUtilPatchPartitioner failure for triangle patches
2014-04-23 10:18:00 -07:00
Nathan Litke
180c1804cc Fixes a bug introduced in 808aabf that causes OsdUtilPatchPartitioner to fail to rebuild the face-varying data table correctly for triangle patches. 2014-04-22 18:52:11 -07:00
manuelk
068035c26a Fix Windows build warning in FarPatchTablesFactory 2014-04-22 14:45:43 -07:00
Manuel Kraemer
808aabfbc5 Merge pull request #284 from nathan-at-digitalfish/add_far_triangulate
Generate triangle patches for a uniformly subdivided mesh
2014-04-22 11:42:56 -07:00
Nathan Litke
d5deab632c Changes to address comments in #284.
* rolled getNumFVarVertices into allocateTables
* renamed tessellate to triangulateQuads (technically speaking, Loop scheme uses a trivial triangulation)
* condensed the pointer arithmetic used for triangulating the data tables
2014-04-21 17:59:46 -07:00
Manuel Kraemer
d4b85556b8 Merge pull request #280 from Nazg-Gul/dev
Return success status from openSubdiv_finishEvaluatorDescr()
2014-04-21 17:14:31 -07:00
gelder
96baf03c68 Add missing third parameter to templated OsdDrawContext usage, caught in Presto build. 2014-04-21 16:14:35 -07:00
Manuel Kraemer
2dbf93f90c Merge pull request #285 from nathan-at-digitalfish/add_osd_mesh_ctor
Add a public constructor to OsdMesh
2014-04-21 14:34:12 -07:00
manuelk
1da79593fa Merge branch 'release/v2_4_1' into dev 2014-04-21 12:28:56 -07:00
manuelk
4747dd84e7 Release 2.4.1 2014-04-21 12:28:17 -07:00
manuelk
b643c28b99 Update release notes for release 2.4.1 2014-04-21 12:18:16 -07:00
gelder
2545306e21 Add correct OpenSubdiv namespace begin/end blocks. 2014-04-21 10:25:38 -07:00
Nathan Litke
0c837b73b2 Added a public constructor to OsdMesh that initializes the members objects from its arguments, allowing those members to be created by a subclass or an external function.
* maintainance work on the D3D11 specialization of OsdMesh to bring it in line with the other template specializations
* updated the facePartition example to derive PartitionedMesh from OsdMesh in order to allow other vertex buffer and compute controller configurations
2014-04-18 20:52:13 -07:00
Nathan Litke
5195d93947 Added an option to FarMeshFactory to generate triangle patches instead of quadrilateral patches for a uniformly subdivided mesh. This option is applicable to GL-ES, which does not support quadrilateral primitives. 2014-04-18 16:19:13 -07:00
gelder
feb74f51f0 Compile osdutil with -fPIC for correct linking in Presto. 2014-04-18 16:19:09 -07:00