Commit Graph

914 Commits

Author SHA1 Message Date
Jeremy Cowles
f35849ef4b Merge pull request #592 from barfowl/far_doxygen
Added Doxygen tags to some Far headers
2015-06-03 12:03:43 -07:00
barfowl
35f64d085d Added Doxygen tags to some Far headers 2015-06-02 23:35:39 -07:00
Takahito Tejima
16d566884a Fix gregory patch shader: wrong tangents on corner corners
Besides we've not been computing accurate derivatives on gregory patch,
there was a separate bug in shaders which gives completely bogus dUdV on
corner vertices. This change fixes that significant artifact, however,
is still approximating derivatives by ignoring rational components.
2015-06-02 18:27:36 -07:00
David G Yu
5590c62f0a Merge pull request #590 from takahito-tejima/dev
Fix tessellation cracks when screen space tesselation is turned off.
2015-06-02 17:27:30 -07:00
Takahito Tejima
670ce267f3 Fix tessellation cracks when screen space tesselation is turned off.
The tess factor of transition edges has to be clamped to 2.
2015-06-02 17:08:17 -07:00
Jeremy Cowles
8966519b8b Merge pull request #589 from barfowl/topology_descriptor
Separated Far's TopologyDescriptor from the RefinerFactory classes
2015-06-02 17:07:18 -07:00
barfowl
6c61f1b006 Separated Far's TopologyDescriptor from the RefinerFactory classes:
- moved TopologyRefiner out of the RefinerFactoryBase into Far
    - moved implementation of its Factory<MESH> to far/topologyDescriptor.*
    - updated examples and tutorials (no more references to FactoryBase)
2015-06-02 16:27:19 -07:00
Takahito Tejima
5c54962d3b Improve OpenCL/DX interop configuration
build osd and examples with DX/CL interop only of cmake finds
cl_d3d11.h or cl_d3d11_ext.h.
2015-06-02 16:20:59 -07:00
Takahito Tejima
36465ed96c Merge pull request #586 from davidgyu/fvarRename
Renamed per-patch face-varying access methods
2015-06-02 14:26:25 -07:00
David G Yu
0243f54b29 Updated patch table face-varying interface
Now the channel specifier is the last parameter in a method's
parameter list with a default of 0.  This is consistent with the
topological face-varying queries and also simplifies the common
case of just a single face-varying channel.
2015-06-02 13:51:32 -07:00
David G Yu
d0f8975117 Merge pull request #584 from takahito-tejima/singleCrease
Unlabel rotation of single crease patch.
2015-06-02 13:06:21 -07:00
Takahito Tejima
1e02fbebf8 Sync HLSL shaders for the single crease orientation fix.
- add HLSL equivalents of the previous GLSL change
- rename OsdGetSingleCreaseSegmentParameter to
OsdGetPatchSingleCreaseSegmentParameter.
- add shadingMode UI for dxViewer similar to glViewer
2015-06-02 12:03:27 -07:00
David G Yu
385df434ec Renamed per-patch face-varying access methods
This matches more closely the pattern used elsewhere in Far:
    GetFVarPatchValues() --> GetPatchFVarValues()
    GetFVarPatchesValues() --> GetFVarValues()
2015-06-02 09:13:17 -07:00
Takahito Tejima
fe92265db9 Unlabel the rotation of single crease patch.
use boundaryMask to identify the crease edge from 4 edges.
with this change, single-crease patch no longer needs to be rotated on
its population.

In shader, experimentally use same infinite sharp matrix for both
boundary and single-crease patch.
2015-06-01 21:26:39 -07:00
barfowl
39eae0195f Renamed internal face-varying methods for consistency with public
- renamed Vtr::Level::getFVarFaceValues() to getFaceFVarValues()
    - updated all usage
2015-06-01 20:31:27 -07:00
George ElKoura
4536d44c31 Merge pull request #582 from barfowl/catmark_adaptive
Disabling feature-adaptive refinement for non-Catmark schemes
2015-06-01 19:02:57 -07:00
George ElKoura
8f7dc4ae8f Merge pull request #581 from barfowl/vtr_members
Re-protected members of all major Vtr classes
2015-06-01 19:01:11 -07:00
barfowl
d8f139ae47 Disabling feature-adaptive refinement for non-Catmark schemes 2015-06-01 18:21:55 -07:00
barfowl
13e0850ac6 Re-protected members of all major Vtr classes:
- change public status of members back to protected/private
    - mimized friends (primarily Refinements as builders for Levels)
    - added any missing accessors to prevent member access (mainly Tags)
    - added the Tri/Quad refinement subclasses to private header list
2015-06-01 17:38:11 -07:00
barfowl
dc5056fe76 Renaming of face-varying methods to access values per face:
- replaced FVarFaceValues with FaceFVarValues in a couple Far methods
    - rewrote face-varying Factory assignement to be clearer with terminology
2015-06-01 16:25:44 -07:00
David G. Yu
2bad68e029 Added include of algorithm for min/max 2015-06-01 11:12:20 -07:00
barfowl
e52dd83b14 Removed unnecessary files include by public headers in Far 2015-06-01 00:14:19 -07:00
barfowl
2e6cab8df4 Eliminated direct member access to Vtr classes from Far:
- added required/missing access methods to Vtr
    - replaced direct member access in Far with appropriate methods
2015-05-31 18:26:13 -07:00
David G. Yu
1b6d9ba409 Workaround GLSL shader compiler on AMD
Added a size specifier to the shader output array declaration
in the GregoryBasis and Gregory control shaders. This seems
to be required by the GLSL compiler on AMD and is harmless elsewhere.
2015-05-31 10:59:01 -07:00
David G. Yu
99b214ca92 Workaround GLSL shader compiler on AMD
Added a size specifier to the shader output array declaration
in the BSpline control shader. This seems to be required by the
GLSL compiler on AMD and is harmless elsewhere.
2015-05-31 10:26:50 -07:00
David G. Yu
bd6d9b4ea9 Sync'd screen-space single-crease patch fix to DX 2015-05-31 08:18:18 -07:00
David G Yu
4bf1ef722c Merge pull request #564 from takahito-tejima/singlecrease
Fix screen-space tessellation on single crease patch.
2015-05-30 23:58:39 -07:00
George ElKoura
cb5044c462 Fix out of bounds mem access in CPU stencil eval.
When the stencil table contains no stencils, bail out
on the EvalStencil before indexing into the stencil table.
2015-05-30 22:55:43 -07:00
Takahito Tejima
2102b4f6b2 Fix screen-space tessellation on single crease patch.
- Rename OsdPerPatchVertexBSpline to OsdPerPatchVertexBezier
- Split OsdGetTessLevels into 3 functions,
  OsdGetTessLevelUniform, OsdGetTessLevelAdaptiveRefinedPoints,
  OsdGetTessLevelAdaptiveLimitPoints.
- Add a regression test shape : catmark_single_crease
2015-05-30 22:41:24 -07:00
Takahito Tejima
997d6035b9 Merge pull request #558 from davidgyu/fvarFix
Fixed a couple of problems with FVar handling
2015-05-30 12:00:32 -07:00
Jeremy Cowles
de69c5100c Merge pull request #556 from barfowl/primvar_interpolate
Removed multi-level interpolation methods of Far::PrimvarRefiner
2015-05-30 10:26:33 -07:00
David G Yu
cd782e3728 Fixed a couple of problems with the FVar handling
This fixes a couple of minor regressions with linear FVar
display in the glViewer and glFVarViewer.
2015-05-29 23:58:40 -07:00
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
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
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
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
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
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
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
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
barfowl
9a14bf72d4 Added missing scaling to derivatives of Bilinear patches 2015-05-27 15:11:35 -07: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