Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-05-27OpenSubdiv: Add regression tests for mesh topologySergey Sharybin
While this looks trivial it already allowed to catch issues in one of previous attempt to optimize memory usage. It will totally be useful for an upcoming refactor of face topology storage.
2020-05-27OpenSubdiv: Hide individual topology elementsSergey Sharybin
Move all API to happen via MeshTopology. This is a preparation for an upcoming memory optimization.
2020-05-27OpenSubdiv: Cleanup, remove unused codeSergey Sharybin
There is no need in edge map anymore.
2020-05-27OpenSubdiv: Add TODO avoid checking face-varying topology for equalitySergey Sharybin
2020-05-27OpenSubdiv: Move preliminary geometry counters check to mesh topologySergey Sharybin
2020-05-27OpenSubdiv: Keep explicit storage of base mesh facesSergey Sharybin
Allows to perform comparison by doing linear comparison of indices. Before cyclic match was used to deal with possibly changed winding from OpenSubdiv side. Speeds up comparison (and hence improves FPS), makes code more reliable nut uses more memory.
2020-05-27OpenSubdiv: Compare edge topologySergey Sharybin
This change makes it so topology refiner comparison will check vertices of all existing/provided edges. The initial claim that due to manifold nature of mesh there is no need in "deep" edges check was wrong: some areas might only provide edges with non-zero creases. So if crease of one edge goes changes from 1.0 to 0.0 and crease of other edge goes from 0.0 to 1.0 the old comparison code would not have caught it.
2020-05-27OpenSubdiv: Refactor, move mesh topology comparison to own fileSergey Sharybin
Makes it easier to follow and extend.
2020-05-27OpenSubdiv: Use explicit storage for edge sharpnessSergey Sharybin
Similar to previous change in vertex sharpness, explicitly store value provided by the converter. Allows to avoid rather fragile check for boundary edges. Also allows to avoid need in constructing edge map. This lowers memory footprint of the comparison process and avoids memory allocations during the comparison (which is an extra benefit from the performance point of view).
2020-05-27OpenSubdiv: Allow use of regular ordered mapSergey Sharybin
2020-05-27OpenSubdiv: Refactor, move comparison to own fileSergey Sharybin
2020-05-27OpenSubdiv: Compare sharpness based on converterSergey Sharybin
This change starts the transition of topology refiner comparison to compare actual values given by the converter, which will not be affected by the refinement or face winding synchronization steps. Currently is only implemented for vertex sharpness, but will be extended further as followup development. Fixes T71908: Subdiv: Incorrect topology comparison, leading to poor performance
2020-05-27OpenSubdiv: Add explicit storage for mesh topologySergey Sharybin
The idea is to use this explicit storage for topology comparison rather than using base level. While this will have memory overhead it allows to simplify comparison of such things as: - Vertex sharpness (where base level from topology refiner will have it refined, meaning it will be different from what application requested for non-manifold and corner vertices). - It will allow to simplify face-vertices comparison, where currently O(N^2) algorithm is used due to possible difference in face winding. - It will also allow to avoid comparison-time allocation of edge map. Currently no functional changes, just preparing for development which will happen next.
2020-05-27OpenSubdiv: Add move semantic to the namespaceSergey Sharybin
2020-05-27OpenSubdiv: Refactor, pass higher level object through comparisonSergey Sharybin
2020-05-27OpenSubdiv: Refactor, move utils to baseSergey Sharybin
Also split them across utilities and types.
2020-05-27OpenSubdiv: Refactor, move base C-API file to base folderSergey Sharybin
2020-05-27OpenSubdiv: Cleanup, use C++ range based loopSergey Sharybin
Avoid indirection via define.
2020-05-27OpenSubdiv: Cleanup, move utility function to base type conversionSergey Sharybin
2020-05-27OpenSubdiv: Refactor, move type conversion to base fodlerSergey Sharybin
2020-05-27OpenSubdiv: Refactor, move evaluator to own folderSergey Sharybin
2020-05-27OpenSubdiv: Completely disable topology verificationSergey Sharybin
Previously it was enabled for debug builds, now it is to be enabled explicitly. The reason for this is to reduce overhead when debugging other areas which might involve subdivision surface. When conversion is to be debugged set this manually in the code.
2020-05-27OpenSubdiv: Refactor, move edge map to base folderSergey Sharybin
2020-05-27OpenSubdiv: Refactor creation of topology refinerSergey Sharybin
Consolidate it inside of the topology refiner implementation class, which would allow to store extra data acquired during construction of the OpenSubdiv's object.
2020-05-27OpenSubdiv: Refactor, use C++ allocation for internal classesSergey Sharybin
Only use OBJECT_GUARDED_{NEW. DELETE} for structures which are part of public C-API (and hence can not have new/delete operators overloaded). Could try being brave and override new/delete from under C++ ifdef.
2020-05-27OpenSubdiv: Refactor, move topology refiner factory to topology folderSergey Sharybin
2020-05-27OpenSubdiv: Refactor, move topology refiner to own folderSergey Sharybin
In the future factory will also be moved there.
2020-05-27OpenSubdiv: Refactor, move device specific code to own filesSergey Sharybin
Also, move all device files to own folder. Makes it so checks for device availability are done in a localized place.
2020-05-18OIpenSubdiv: Cleanup, move to a better sounding namespaceSergey Sharybin
The code is not only part of C-API, but also implements Blender-specific glue level implementation.
2020-05-18OpenSubdiv: Cleanyp, remove old GPU codeSergey Sharybin
All parts of drawing (shaders, GL mesh descriptor, material partitioner and so on) needs to be redone for the draw manager and new OpenSubdiv library. Removing untested code which is doomed to be replaced to make localized refactoring easier.
2020-05-18OpenSubdiv: Cleanup, remove unused topology orientation codeSergey Sharybin
The code was trying to make winding consistent and manifold, same as OpenSubdiv expects it to. Unfortunately, the code was having some issues in corner cases so the winding wasn't really correct. Fortunately, the latter (compared to when this code was originally written) supports orientation on OpenSubdiv side. Removing code which is currently unused in Blender and which had known issues. Is simple enough to bring the code from Git history if the functionality is needed in the future.
2020-04-22Subdiv: Fix wrong non-manifold subdivision in certain casesSergey Sharybin
Was happening when only partial subset of callbacks was specified. The reason was that there was a callback to specify edges sharpness but no callback to specify vertex sharpness, so the special case for non-manifold edges was not run. Fixes T75697: Multires in simple mode doesn't work correct on a plane
2020-03-19Cleanup: `make format` after SortedIncludes changeDalai Felinto
2020-03-13OpenSubdiv: Make non-full geometry less strict for sharpnessSergey Sharybin
Allow to mark individual vertices as infinitely sharp even if there is no full topology and no access to edges: infinite sharp vertices do not need connectivity information.
2020-02-28OpenSubdiv: Allow less topology callbacks assignedSergey Sharybin
Useful for cases when topology does not need to have any crease or UV layers. Now instead of assigning callbacks which returns zero data is possible to simply assign the callback itself to NULL.
2019-12-05Fix T63766: Multiresolution behavior when using crease edgeSergey Sharybin
Switch to Gregory basis patches which are tangent continuous across their boundaries. Originally we've used BSpline basis patches to be more compatible with the old subdivision code, but a lot of things changed anyway.
2019-10-30OpenSubdiv: Initial implementation of batched evaluationSergey Sharybin
The idea is to give multiple coordinates to evaluator and evaluate them all at once, avoiding any possible overhead.
2019-10-30OpenSubdiv: Make internal evaluator aware of batched evaluationSergey Sharybin
Allows to pass multiple patch coordinates for evaluation.
2019-10-30OpenSubdiv: Use more generic access to patch coordinatesSergey Sharybin
Saves another unnecessary temporary data copy during evaluation.
2019-10-30OpenSubdiv: Cleanup, remove old compatibility codeSergey Sharybin
Consider that all builders have face-varying evaluation now.
2019-10-30OpenSubdiv: Cleanup, remove unused classSergey Sharybin
2019-10-30OpenSubdiv: Avoid unnecessary memory copiesSergey Sharybin
Make evaluator itself to write directly to the output buffer. Brings unmeasurable speedup and makes it possible to simplify some buffer class logic.
2019-10-30OpenSubdiv: Use smaller buffer sizes and stridesSergey Sharybin
We currently don't support interleaved varying data, so can make some buffer smaller.
2019-10-30OpenSubdiv: Cleanup, remove unused PatchBuffer classSergey Sharybin
2019-10-30OpenSubdiv: Cleanup, remove unused evaluator memberSergey Sharybin
2019-10-30OpenSubdiv: Cleanup, remove unused static methodsSergey Sharybin
2019-10-03OpenSubdiv: Add accessor to vertex edges via refiner C-APISergey Sharybin
2019-10-03Fix error in opensubdiv topology refiner face matching checkCampbell Barton
2019-06-23Fix T66022: crash adding subdivision surface modifier to some meshesBrecht Van Lommel
This reverts commit 7c9f64d00835: "Fix T63766: Multiresolution behavior when using crease edge"
2019-06-21Fix T63766: Multiresolution behavior when using crease edgeSergey Sharybin
Switch to Gregory basis patches which are tangent continuous across their boundaries. Originally we've used BSpline basis patches to be more compatible with the old subdivision code, but a lot of things changed anyway.