Archived issue #0028129
Visualization, Path Tracing - Improve interactivity in "steady" rendering mode
Description
In similar issue (28114, Visualization, Ray tracing - Make ray tracing mode interactive in high resolutions) an attempt has been made to improve interactivity during interaction with the scene. However, when the camera is stabilized the performance drops significantly (to its "normal" level).
However, it is possible to prevent this drop also by improving adaptive screen sampling mode. The important feature of this mode is that it is possible to keep the same number of tiles for any screen resolution (e.g. 256 tiles can be used for both 512 x 512 window and 1920 x 1080 window). So, a smaller number of tiles allows to increase interactivity (FPS), but at the cost of higher per-frame variance ('noise'). On the contrary a larger number of tiles decrease interactivity, but leads to lower per-frame variance. Note that the total time needed to produce final final image is the same for both cases. In frames of this issue, it is proposed to keep number of tiles quite low (e.g. 256) independently on the window size. This will allow:
1) Keep interactivy at a high level (FPS) which is especially important for low-performance GPUs.
2) Prevent freezing of application GUI and possible crashes due to driver's limit on maximum frame rendering time (it is related to complex scenes).
However, it is possible to prevent this drop also by improving adaptive screen sampling mode. The important feature of this mode is that it is possible to keep the same number of tiles for any screen resolution (e.g. 256 tiles can be used for both 512 x 512 window and 1920 x 1080 window). So, a smaller number of tiles allows to increase interactivity (FPS), but at the cost of higher per-frame variance ('noise'). On the contrary a larger number of tiles decrease interactivity, but leads to lower per-frame variance. Note that the total time needed to produce final final image is the same for both cases. In frames of this issue, it is proposed to keep number of tiles quite low (e.g. 256) independently on the window size. This will allow:
1) Keep interactivy at a high level (FPS) which is especially important for low-performance GPUs.
2) Prevent freezing of application GUI and possible crashes due to driver's limit on maximum frame rendering time (it is related to complex scenes).
Steps to reproduce
Now it is inherent feature of ISS mode (importance screen sampling) activated by a command:
vrenderparams -iss
Also, number of tiles used for adaptive screen sampling can be changed using command:
vrenderparams -nbtiles <64..1024>
This allows to balance GPU loading and interactivity and adapt to wide range of GPUs.
vrenderparams -iss
Also, number of tiles used for adaptive screen sampling can be changed using command:
vrenderparams -nbtiles <64..1024>
This allows to balance GPU loading and interactivity and adapt to wide range of GPUs.
Public activity
26 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: Fri Nov 18 17:53:10 2016 +0300
0028129: Visualization, Path Tracing - Improve interactivity in "steady" rendering mode
[revision removed]
Detailed log of new commits:
Author: Author
Date: Fri Nov 18 17:53:10 2016 +0300
0028129: Visualization, Path Tracing - Improve interactivity in "steady" rendering mode
Dear kgv,
Could you please review the patch in branch CR28129?
Could you please review the patch in branch CR28129?
Branch [archived branch] has been updated forcibly by Author.
[revision removed]
[revision removed]
Please add test case for this functionality.
Branch [archived branch] has been created by Author.
[revision removed]
Detailed log of new commits:
Author: Author
Date: Fri Nov 18 17:53:10 2016 +0300
0028129: Visualization, Path Tracing - Improve interactivity in "steady" rendering mode
[revision removed]
Detailed log of new commits:
Author: Author
Date: Fri Nov 18 17:53:10 2016 +0300
0028129: Visualization, Path Tracing - Improve interactivity in "steady" rendering mode
New test case added:
v3d raytrace sample_ball_iss
See images attached for the reference result.
v3d raytrace sample_ball_iss
See images attached for the reference result.
+#include <vector> + #include <OpenGl_Texture.hxx> #include <OpenGl_HaltonSampler.hxx> -#include <vector>
Why this change is required?
It is a common practice to list OCCT headers first
(as far as this header does not define a mess of macros like "windows.h").
Branch [archived branch] has been updated forcibly by Author.
[revision removed]
[revision removed]
Dear kgv,
Really, it is strange change. It was reverted. Please find updated code in the same branch.
Really, it is strange change. It was reverted. Please find updated code in the same branch.
Please test the patch.
Branch [archived branch] has been updated forcibly by Author.
[revision removed]
[revision removed]
Branch [archived branch] has been updated forcibly by Author.
[revision removed]
[revision removed]
Dear BugMaster,
Branch CR28129_1 from occt git-repository (and master from products git-repository) was compiled on Linux, MacOS and Windows platforms and tested.
[revision removed]
Number of compiler warnings:
occt component:
Linux: 0 (0 on master)
Windows: 0 (0 on master)
MasOS: 0 (0 on master)
products component:
Linux: 63
Windows: 0
MacOS: 1161
Regressions/Differences:
Not detected
Testing cases:
v3d raytrace sample_ball_iss - FAILED
http://occt-tests/CR28129_1-master-OCCT/Debian70-64/v3d/raytrace/sample_ball_iss.html
http://occt-tests/CR28129_1-master-OCCT/Windows-64-VC10/v3d/raytrace/sample_ball_iss.html
Testing on Linux:
Total MEMORY difference: 93509351 / 92908046 [+0.65%]
Total CPU difference: 21390.860000000303 / 21505.8700000003 [-0.53%]
Testing on Windows:
Total MEMORY difference: 58646104 / 58649007 [-0.00%]
Total CPU difference: 19478.752862998495 / 19749.742200098677 [-1.37%]
There is difference in images found by testdiff:
http://occt-tests/CR28129_1-master-OCCT/Debian70-64/diff-Debian70-64.html
http://occt-tests/CR28129_1-master-OCCT/Windows-64-VC10/diff-Windows-64-VC10-image.html
v3d raytrace bug26617
Branch CR28129_1 from occt git-repository (and master from products git-repository) was compiled on Linux, MacOS and Windows platforms and tested.
[revision removed]
Number of compiler warnings:
occt component:
Linux: 0 (0 on master)
Windows: 0 (0 on master)
MasOS: 0 (0 on master)
products component:
Linux: 63
Windows: 0
MacOS: 1161
Regressions/Differences:
Not detected
Testing cases:
v3d raytrace sample_ball_iss - FAILED
http://occt-tests/CR28129_1-master-OCCT/Debian70-64/v3d/raytrace/sample_ball_iss.html
http://occt-tests/CR28129_1-master-OCCT/Windows-64-VC10/v3d/raytrace/sample_ball_iss.html
Testing on Linux:
Total MEMORY difference: 93509351 / 92908046 [+0.65%]
Total CPU difference: 21390.860000000303 / 21505.8700000003 [-0.53%]
Testing on Windows:
Total MEMORY difference: 58646104 / 58649007 [-0.00%]
Total CPU difference: 19478.752862998495 / 19749.742200098677 [-1.37%]
There is difference in images found by testdiff:
http://occt-tests/CR28129_1-master-OCCT/Debian70-64/diff-Debian70-64.html
http://occt-tests/CR28129_1-master-OCCT/Windows-64-VC10/diff-Windows-64-VC10-image.html
v3d raytrace bug26617
Dear Denis,
Branch [archived branch] has been rejected due to:
- failed test-case for issue
- differences in images
Branch [archived branch] has been rejected due to:
- failed test-case for issue
- differences in images
Branch [archived branch] has been created by Author.
[revision removed]
Detailed log of new commits:
Author: Author
Date: Fri Nov 18 17:53:10 2016 +0300
0028129: Visualization, Path Tracing - Improve interactivity in "steady" rendering mode
[revision removed]
Detailed log of new commits:
Author: Author
Date: Fri Nov 18 17:53:10 2016 +0300
0028129: Visualization, Path Tracing - Improve interactivity in "steady" rendering mode
Dear kgv,
Could you please review fixes in CR28129_2 branch?
Could you please review fixes in CR28129_2 branch?
Branch [archived branch] has been updated forcibly by Author.
[revision removed]
[revision removed]
Please test updated patch.
Dear Denis,
Please, rebase branch CR28129_2 on the current master. Thank you in advance.
Please, rebase branch CR28129_2 on the current master. Thank you in advance.
Branch [archived branch] has been created by Author.
[revision removed]
Detailed log of new commits:
Author: Author
Date: Tue Jan 24 10:43:26 2017 +0300
Re-basing the patch on current master.
Author: Author
Date: Fri Nov 18 17:53:10 2016 +0300
0028129: Visualization, Path Tracing - Improve interactivity in "steady" rendering mode
[revision removed]
Detailed log of new commits:
Author: Author
Date: Tue Jan 24 10:43:26 2017 +0300
Re-basing the patch on current master.
Author: Author
Date: Fri Nov 18 17:53:10 2016 +0300
0028129: Visualization, Path Tracing - Improve interactivity in "steady" rendering mode
Dear apv,
Please find rebased patch in branch CR28129_3.
Please find rebased patch in branch CR28129_3.
Dear BugMaster,
Branch CR28129_3 from occt git-repository (and master from products git-repository) was compiled on Linux, MacOS and Windows platforms and tested.
[revision removed]
Number of compiler warnings:
occt component:
Linux: 0 (0 on master)
Windows: 0 (0 on master)
MasOS: 0 (0 on master)
products component:
Linux: 63
Windows: 0
MacOS: 1140
Regressions/Differences:
Not detected
Testing cases:
v3d raytrace sample_ball_iss - OK
http://occt-tests/CR28129_3-master-OCCT/Debian70-64/v3d/raytrace/sample_ball_iss.html
http://occt-tests/CR28129_3-master-OCCT/Windows-64-VC10/v3d/raytrace/sample_ball_iss.html
Testing on Linux:
Total MEMORY difference: 93088553 / 92067848 [+1.11%]
Total CPU difference: 21100.680000000197 / 21062.360000000153 [+0.18%]
Testing on Windows:
Total MEMORY difference: 58324712 / 58324216 [+0.00%]
Total CPU difference: 19602.290054898545 / 19152.585972198493 [+2.35%]
Branch CR28129_3 from occt git-repository (and master from products git-repository) was compiled on Linux, MacOS and Windows platforms and tested.
[revision removed]
Number of compiler warnings:
occt component:
Linux: 0 (0 on master)
Windows: 0 (0 on master)
MasOS: 0 (0 on master)
products component:
Linux: 63
Windows: 0
MacOS: 1140
Regressions/Differences:
Not detected
Testing cases:
v3d raytrace sample_ball_iss - OK
http://occt-tests/CR28129_3-master-OCCT/Debian70-64/v3d/raytrace/sample_ball_iss.html
http://occt-tests/CR28129_3-master-OCCT/Windows-64-VC10/v3d/raytrace/sample_ball_iss.html
Testing on Linux:
Total MEMORY difference: 93088553 / 92067848 [+1.11%]
Total CPU difference: 21100.680000000197 / 21062.360000000153 [+0.18%]
Testing on Windows:
Total MEMORY difference: 58324712 / 58324216 [+0.00%]
Total CPU difference: 19602.290054898545 / 19152.585972198493 [+2.35%]
Branch [archived branch] has been deleted by Commenter 3.
[revision removed]
[revision removed]
Branch [archived branch] has been deleted by Commenter 3.
[revision removed]
[revision removed]
Branch [archived branch] has been deleted by Commenter 3.
[revision removed]
[revision removed]
Branch [archived branch] has been deleted by Commenter 3.
[revision removed]
[revision removed]
Related records