Commit Graph

2429 Commits

Author SHA1 Message Date
David G Yu
ed6fcd7245
Merge pull request #980 from barfowl/real_templates_beta
Extend the public interface of Far to support double precision
2018-08-02 14:55:28 -07:00
barry
3b484997a1 Modified a couple of examples for testing multi-precision support:
- regression/far_perf - can run single/double from command line
    - tutorials/far/tutorial_6 - change typedef to run as single/double
2018-07-28 15:06:32 -07:00
barry
647039a8ee Major public addition of class templates for multiple precision:
- converted classes for stencils, tables and factories to templates
    - added backward compatible class wrappers around new templates
    - extended PatchTable to support variable precision stencil tables
    - extended PatchTableBuilder to manage PatchTable's new stencil tables
    - templated PatchTableBuilder conversion from SparseMatrix to stencils
    - extended public PatchTableFactory interface to specify precision
    - converted PrimvarRefiner class to template and added wrapper class
2018-07-28 14:56:43 -07:00
barry
f6172f9608 Minor public extensions to support multi-precision evaluation of patches:
- templated PatchParam normalization methods for multiple precision
    - instantiated double precision basis evaluation templates
    - converted PatchTable::EvaluateBasis...() methods to templates
        - added overloaded versions to assist template parameter resolution
    - extended PatchMap::FindPatch() to double precision
2018-07-28 14:43:32 -07:00
barfowl
83b90eb00b
Merge pull request #979 from davidgyu/primvar_refiner_fvar_fix
Thanks, David
2018-07-28 14:11:21 -07:00
David G Yu
cdcec73088 Fixed Far::PrimvarRefiner::limitFVar prototype
Fixed the method signature of the internal limitFVar method to make
the dst argument a reference rather than a pointer to be more consistent
with earlier changes for other primvar classes. This also makes it
easier to use the public template LimitFaceVarying method to operate
on a wider range of primvar container types.
2018-07-28 13:37:03 -07:00
David G Yu
e7b0448220
Merge pull request #978 from barfowl/header_ordering
Superficial header reordering in far/catmarkPatchBuilder.cpp
2018-07-28 13:05:45 -07:00
barry
a0fcfb54f9 Reordered #includes in far/catmarkPatchBuilder.cpp to match convention 2018-07-27 12:07:31 -07:00
David G Yu
b3ab407553
Merge pull request #977 from barfowl/real_templates_internal
Internal improvements to support double precision
2018-07-24 13:42:05 -07:00
barry
9b2d161c4e Internal numerical extensions to retain double precision:
- retained precision of constants in Sdc Catmark scheme
    - improved precision of constants & intermediate values in Sdc Loop scheme
    - improved precision of constants & intermediate values CatmarkPatchBuilder
    - converted all internal Far patch basis evaluation to templates
2018-07-23 11:10:56 -07:00
barry
f15d4ae02f Internal refactoring to support multiple precision:
- overloaded PatchBuilder to populate SparseMatrix as float or double
    - simplified PatchTableBuilder handling of matrices and Varying stencils
2018-07-23 11:00:35 -07:00
David G Yu
aa7eba45bc
Merge pull request #973 from Nazg-Gul/fix_stencil_viewer
Fix stencil viewer
2018-07-22 18:26:53 -07:00
barfowl
b1ce41dc26
Merge pull request #974 from Nazg-Gul/fix_obj_buffer_underflow
Thanks
2018-07-20 13:36:29 -07:00
barfowl
7a4fe81351
Merge pull request #975 from Nazg-Gul/fix_topology_refiner_stack_memory
Thanks again!
2018-07-20 13:35:18 -07:00
David G Yu
3b5c3d99d2 Release 3.3.3 2018-07-17 19:17:49 -07:00
David G Yu
dd9c94e391
Merge pull request #976 from barfowl/varying_patch_fix
Fixed regression in PatchTable construction with varying patches
2018-07-17 18:58:07 -07:00
barry
13b36490a7 Fixed PatchTable's ordering of varying patches when multiple arrays present:
- added new member to PatchArrayBuilder for varying patch points
    - assign varying patch points similar to vertex and fvar patches
2018-07-17 09:29:45 -07:00
Sergey Sharybin
d6f68b17e8 Fix uninitialized stack memory used in topology refiner
The issue is that FeatureMask structure has size of an integer, but only
first 11 bytes are initialized, the rest is left non-initialized to a
stack memory of RefineAdaptive(). This will cause issues with IsEmpty()
which check whether any of integer's bits are set, effectively causing
jumps dependent on a non-initialized memory.
2018-07-14 15:57:16 +02:00
Sergey Sharybin
d1396e5581 Fix buffer underflow when reading OBJ data
It is possible to have an empty line at the end of data,
that would cause access to line element -1 when stripping
trailing newline,
2018-07-14 15:53:23 +02:00
Sergey Sharybin
ded704f72a Fix missing break statements in glStencilViewer
Changing adaptive subdivision option was affecting on
infinite sharp path option.
2018-07-04 11:46:04 +02:00
David G Yu
74601558e3
Merge pull request #972 from barfowl/fvar_patch_fix
Fixed regression in PatchTable construction with face-varying patches
2018-07-03 17:46:41 -07:00
barfowl
1c4a80ac0f
Merge pull request #971 from Nazg-Gul/fix_memset_transposed_args
Fix wrong argument order for memset
2018-07-03 15:29:20 -07:00
barry
52fc746bb2 Updated UVs of catmark_torus shape with new topology:
- assigned more regular UVs that don't require adaptive refinement
2018-07-03 12:07:24 -07:00
barry
365ba36d6f Fixed regression in PatchTable construction for face-varying patches:
- fixed stencil table size estimate when no adaptive refinement occurs
2018-07-03 12:06:23 -07:00
Sergey Sharybin
80cee207b6 Fix wrong argument order for memset 2018-07-03 14:40:33 +02:00
David G Yu
5b297d8866 Merge branch 'rc/v3_3_2' 2018-06-28 11:46:34 -07:00
David G Yu
70e3c5f300 Release 3.3.2 2018-06-27 14:29:08 -07:00
David G Yu
6f125a266d
Merge pull request #969 from barfowl/sparse_matrix_fix
Fixed misuse of vector::capacity() in internal SparseMatrix class
2018-06-27 14:24:48 -07:00
barry
02602e7abf Fixed misuse of vector::capacity() in Far::SparseMatrix:
- replaced use of capacity() with size()
    - added missing initializer
2018-06-26 17:42:13 -07:00
David G Yu
87cccde375
Merge pull request #966 from barfowl/patch_refactor
Performance improvement and refactoring of Far::PatchTable construction
2018-05-14 17:51:52 -07:00
barry
5e8e123d73 Major refactor of the construction of Far::PatchTable:
- new PatchTableBuilder class now implements PatchTableFactory::Create()
        - population of tables now independent of scheme or patch type
        - nested LocalPointHelper handles local point sharing and stencils
    - new PatchBuilder class encapsulates patch queries and conversions:
        - provides patch types associated with schemes and client options
        - handles all topological queries about patches in the base class
        - subclasses for the three subdivision schemes to support conversions
        - conversions encapsulated in new SparseMatrix class for re-use
    - removed Far end-cap factory classes and Far::GregoryBasis
    - extended adaptive refinement to support Bilinear scheme (not enabled)
    - extended Vtr::StackBuffer to avoid compiler inefficiencies
2018-05-08 17:24:14 -07:00
David G Yu
6b22e10875 Merge branch 'rc/v3_3_1' 2018-02-13 16:24:18 -08:00
David G Yu
171629fbd8 Release 3.3.1 2018-02-07 15:09:46 -08:00
barfowl
c8d6059367
Merge pull request #963 from davidgyu/fix_triangle_patch_param
Fixed computation of PatchParam for tri refinement
2018-02-06 17:15:02 -08:00
David G Yu
fe47db273c Fixed computation of PatchParam for tri refinement
Previously, Far::PatchTableFactory::computePatchParam() was
considering all faces with a face vertex count != 4 as
irregular.  This was incorrect for triangle refinement as
was the calculation of the UV subface parametric offsets for
triangle subfaces.

This is foundational work for implementing full support
for Loop scheme patch tables. This fix also allows correct
decoding of the parameter mapping for triangles resulting
from uniform refinement of Loop scheme meshes.
2018-02-06 16:51:17 -08:00
barfowl
9c9108c3db
Merge pull request #959 from davidgyu/hlsl_patch_normals
Thanks David
2018-01-16 15:31:33 -08:00
barfowl
dcd82f4137
Merge pull request #960 from davidgyu/mtl_patch_normals
Metal patch shader changes for degenerate normals
2018-01-16 15:31:11 -08:00
David G Yu
dc4948fa75
Merge pull request #957 from barfowl/reserve_overflow_bugs
Fixed integer overflow bugs for large meshes in PatchTable factories
2017-12-15 14:59:47 -08:00
David G Yu
226f1a27fd
Merge pull request #948 from barfowl/glsl_patch_normals
Improved GLSL patch shaders to compute normals in common degenerate cases
2017-12-12 08:50:30 -08:00
David G Yu
6e02082bd7 Metal patch shader changes for degenerate normals
Updated Metal patch shaders to resolve degenerate normals.
This fix was ported from the GLSL patch shader source.

Also, added missing inf sharp test cases to mtlViewer.
2017-12-12 08:46:00 -08:00
David G Yu
917fc36dde HLSL patch shader changes for degenerate normals
Updated HLSL patch shaders to resolve degenerate normals.
This fix was ported from the GLSL patch shader source.

Also, added missing inf sharp test cases to dxViewer.
2017-11-21 18:01:57 -08:00
barry
1b03b1ef09 Fixed integer overflow bugs for large meshes in PatchTable factories 2017-11-20 16:09:40 -08:00
David G Yu
3e2f76e6dd Merge pull request #950 from barfowl/uniform_fvar_patch_bugs
More fixes for face-varying patches in uniform PatchTables
2017-09-25 10:45:19 -07:00
barfowl
0ecaed2021 Merge pull request #951 from davidgyu/glimaging_test_stability
Great, thanks for taking time out to look into this.
2017-09-25 09:35:32 -07:00
David G Yu
bb227dbd36 Disabled GL tests during CI runs on Linux
The glImaging test continues to have inconsistent
pass/fail state during Travis CI runs on Linux.
Disabling this test while we investigate ways to
improve stability.
2017-09-25 08:46:17 -07:00
David G Yu
2ce82af257 Improved stability of examples/glImaging
The glImaging test now checks the GL version of the
current context before attempting to run GL XFB or
GLSL Compute kernels.

This example can run as part of the ctest suite during
continuous integration testing and adding these checks
should improve consistency of runs across different
test conditions.
2017-09-25 03:37:36 -07:00
barry
d31c913532 Fixed a few more minor issues with face-varying patches in uniform PatchTables:
- corrected assertion to use face-varying index offset instead of vertex
    - added missing face-varying conditional when generateAllLevels set
    - factored base-level index offsets into local options for clarity
    - added Doxygen comments to describe overall indexing behavior
2017-09-22 15:43:16 -07:00
David G Yu
ece6a64db3 Merge pull request #946 from barfowl/uniform_fvar_patch_bug
Fixed bug in face-varying patches of uniformly refined Far::PatchTable
2017-09-13 13:54:38 -07:00
barry
0c2dd830b0 Updated GLSL patch shaders to resolve degenerate normals:
- modified Gregory patch shader to use existing Bezier patch evaluation
    - rewrote Bezier patch evaluation to use intermediate bilinear points
    - added detection and resolution of degenerate normal
    - eval normal partials no longer uses Weingarten eqns (requires N != 0)
    - updated normal partials to use differentiation/projection
2017-09-13 11:03:03 -07:00
barry
d376944dd1 Fixed bug in face-varying patches of uniformly refined Far::PatchTable:
- added missing initialization of face-varying PatchParams
2017-09-13 10:50:58 -07:00