Archived issue #0027596
Visualization, StdPrs_WFShape - pack isolines into single group of primitives
Description
Current implementation of StdPrs_WFShape::Add() adds isolines into dedicated group of primitives for each face. This significantly limits FPS by CPU due to large number of groups for big models.
Steps to reproduce
N/A
Public activity
12 archived notes
Participants are labeled by their role within this record.
Branch [archived branch] has been created by Author.
[revision removed]
Detailed log of new commits:
Author: Author
Date: Mon Jun 13 02:28:27 2016 +0300
0027596: Visualization, StdPrs_WFShape - pack isolines into single group of primitives
StdPrs_ShadedShape, computeFaceBoundaries() now does not create additional temporary buffer for edges.
StdPrs_Isolines::AddOnTriangulation() now reconstacts polylines from segments projected onto triangulation.
StdPrs_WFShape::Add() now packs isolines into single group in presentation (instead of per-face group).
Even more - StdPrs_WFShape now groups lines with the same aspects.
Prs3d_Drawer::UIsoAspect(), ::VIsoAspect(), ::VIsoAspect() - default width
has been changed from 0.5 to 1.0.
[revision removed]
Detailed log of new commits:
Author: Author
Date: Mon Jun 13 02:28:27 2016 +0300
0027596: Visualization, StdPrs_WFShape - pack isolines into single group of primitives
StdPrs_ShadedShape, computeFaceBoundaries() now does not create additional temporary buffer for edges.
StdPrs_Isolines::AddOnTriangulation() now reconstacts polylines from segments projected onto triangulation.
StdPrs_WFShape::Add() now packs isolines into single group in presentation (instead of per-face group).
Even more - StdPrs_WFShape now groups lines with the same aspects.
Prs3d_Drawer::UIsoAspect(), ::VIsoAspect(), ::VIsoAspect() - default width
has been changed from 0.5 to 1.0.
Patch is ready for review.
It improves FPS for wireframe presentation of bleriot model
(114912 faces in 4415 parts - thus it is quite heavy for CPU) on my PC from 1 FPS to 18.
A couple of public methods has been kept for API compatibility.
However it is unlikely that them have been used outside - probably better dropping them.
Prs3d_Drawer::LineArrowDraw() is now ignored by StdPrs_WFShape (before the patch it was semi-broken). I'm not sure if it is useful supporting it here.
It improves FPS for wireframe presentation of bleriot model
(114912 faces in 4415 parts - thus it is quite heavy for CPU) on my PC from 1 FPS to 18.
A couple of public methods has been kept for API compatibility.
However it is unlikely that them have been used outside - probably better dropping them.
Prs3d_Drawer::LineArrowDraw() is now ignored by StdPrs_WFShape (before the patch it was semi-broken). I'm not sure if it is useful supporting it here.
Branch CR27596 reviewed without remarks, ready for testing.
Branch [archived branch] has been updated by Author.
[revision removed]
Detailed log of new commits:
Author: Author
Date: Tue Jun 14 14:01:37 2016 +0300
fix compilation error on Android
[revision removed]
Detailed log of new commits:
Author: Author
Date: Tue Jun 14 14:01:37 2016 +0300
fix compilation error on Android
Branch [archived branch] has been created by Author.
[revision removed]
Detailed log of new commits:
Author: Author
Date: Tue Jun 14 14:02:27 2016 +0300
0027596: Visualization, StdPrs_WFShape - pack isolines into single group of primitives
StdPrs_ShadedShape, computeFaceBoundaries() now does not create additional temporary buffer for edges.
StdPrs_Isolines::AddOnTriangulation() now reconstacts polylines from segments projected onto triangulation.
StdPrs_WFShape::Add() now packs isolines into single group in presentation (instead of per-face group).
Even more - StdPrs_WFShape now groups lines with the same aspects.
Prs3d_Drawer::UIsoAspect(), ::VIsoAspect(), ::VIsoAspect() - default width
has been changed from 0.5 to 1.0.
[revision removed]
Detailed log of new commits:
Author: Author
Date: Tue Jun 14 14:02:27 2016 +0300
0027596: Visualization, StdPrs_WFShape - pack isolines into single group of primitives
StdPrs_ShadedShape, computeFaceBoundaries() now does not create additional temporary buffer for edges.
StdPrs_Isolines::AddOnTriangulation() now reconstacts polylines from segments projected onto triangulation.
StdPrs_WFShape::Add() now packs isolines into single group in presentation (instead of per-face group).
Even more - StdPrs_WFShape now groups lines with the same aspects.
Prs3d_Drawer::UIsoAspect(), ::VIsoAspect(), ::VIsoAspect() - default width
has been changed from 0.5 to 1.0.
Patch has been updated to fix compilation error on Android - please use branch CR27596_1 for testing.
Dear Commenter 1,
Branch CR27596_1 from occt git-repository (and master from products git-repository) was compiled on Linux, MacOS and Windows platforms and tested on Release mode.
[revision removed]
Number of compiler warnings:
occt component :
Linux: 0 (0 on master)
Windows: 0 (0 on master)
MacOS : 0 (0 on master)
products component :
Linux: 72 (72 on master)
Windows: 0 (4 on master)
MacOS : 1171
Regressions/Differences/Improvements:
No regressions/differences
Testing cases:
Not needed
Testing on Linux:
occt component :
Total MEMORY difference: 88334499 / 88280555 [+0.06%]
Total CPU difference: 19466.180000000008 / 19437.609999999968 [+0.15%]
products component :
Total MEMORY difference: 27438026 / 27641722 [-0.74%]
Total CPU difference: 5184.729999999985 / 5152.139999999989 [+0.63%]
Testing on Windows:
occt component :
Total MEMORY difference: 55761302 / 55981508 [-0.39%]
Total CPU difference: 18254.59741589893 / 19056.083753598912 [-4.21%]
products component :
Total MEMORY difference: 18637762 / 18707971 [-0.38%]
Total CPU difference: 4994.372014999952 / 5089.283023399957 [-1.86%]
There are following differences in images found by testdiff.
http://occt-tests/CR27596-1-master-Products/Debian70-64/diff-Debian70-64.html
http://occt-tests/CR27596-1-master-Products/Windows-64-VC10/diff-Windows-64-VC10.html
IMAGE sat read C4: C4.png differs
IMAGE sat read_parallel_1 E6: E6.png differs
Branch CR27596_1 from occt git-repository (and master from products git-repository) was compiled on Linux, MacOS and Windows platforms and tested on Release mode.
[revision removed]
Number of compiler warnings:
occt component :
Linux: 0 (0 on master)
Windows: 0 (0 on master)
MacOS : 0 (0 on master)
products component :
Linux: 72 (72 on master)
Windows: 0 (4 on master)
MacOS : 1171
Regressions/Differences/Improvements:
No regressions/differences
Testing cases:
Not needed
Testing on Linux:
occt component :
Total MEMORY difference: 88334499 / 88280555 [+0.06%]
Total CPU difference: 19466.180000000008 / 19437.609999999968 [+0.15%]
products component :
Total MEMORY difference: 27438026 / 27641722 [-0.74%]
Total CPU difference: 5184.729999999985 / 5152.139999999989 [+0.63%]
Testing on Windows:
occt component :
Total MEMORY difference: 55761302 / 55981508 [-0.39%]
Total CPU difference: 18254.59741589893 / 19056.083753598912 [-4.21%]
products component :
Total MEMORY difference: 18637762 / 18707971 [-0.38%]
Total CPU difference: 4994.372014999952 / 5089.283023399957 [-1.86%]
There are following differences in images found by testdiff.
http://occt-tests/CR27596-1-master-Products/Debian70-64/diff-Debian70-64.html
http://occt-tests/CR27596-1-master-Products/Windows-64-VC10/diff-Windows-64-VC10.html
IMAGE sat read C4: C4.png differs
IMAGE sat read_parallel_1 E6: E6.png differs
Dear kgv,
Branch [archived branch] has been rejected due to:
- differences in images
Branch [archived branch] has been rejected due to:
- differences in images
Changes in images are OK, please switch to tested.
Dear Commenter 1,
Branch CR27596_1 is TESTED.
Branch CR27596_1 is TESTED.
Branch [archived branch] has been deleted by Participant.
[revision removed]
[revision removed]
Branch [archived branch] has been deleted by Participant.
[revision removed]
[revision removed]
Related records
- #0023519 · related to · closedMixing wireframe and shaded visualization impacts performance
- #0025300 · related to · closedVisualization - Build wireframe representation consistent with the shape's triangulation
- #0026612 · related to · closedHigh memory footprint displaying model with big amount of solids
- #0022618 · related to · assignedVisualization - Tool for building generic wireframe representation of a face