DiscussionsIssue archiveOCCT:Visualization

Archived issue #0028129

Visualization, Path Tracing - Improve interactivity in "steady" rendering mode

Open CASCADEOCCT:Visualizationclosed26 public notes

Search issues

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).

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.

Public activity

26 archived notes

Participants are labeled by their role within this record.

01Commenter 2
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
02Commenter 2
Dear kgv,

Could you please review the patch in branch CR28129?
03Commenter 2
Branch [archived branch] has been updated forcibly by Author.

[revision removed]
04Commenter 3
Please add test case for this functionality.
05Commenter 2
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
06Commenter 6
New test case added:
v3d raytrace sample_ball_iss

See images attached for the reference result.
07Commenter 3
+#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").
08Commenter 2
Branch [archived branch] has been updated forcibly by Author.

[revision removed]
09Commenter 9
Dear kgv,

Really, it is strange change. It was reverted. Please find updated code in the same branch.
10Commenter 3
Please test the patch.
11Commenter 2
Branch [archived branch] has been updated forcibly by Author.

[revision removed]
12Commenter 2
Branch [archived branch] has been updated forcibly by Author.

[revision removed]
13Commenter 13
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
14Commenter 14
Dear Denis,

Branch [archived branch] has been rejected due to:
- failed test-case for issue
- differences in images
15Commenter 2
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
16Commenter 16
Dear kgv,

Could you please review fixes in CR28129_2 branch?
17Commenter 2
Branch [archived branch] has been updated forcibly by Author.

[revision removed]
18Commenter 3
Please test updated patch.
19Commenter 19
Dear Denis,

Please, rebase branch CR28129_2 on the current master. Thank you in advance.
20Commenter 2
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
21Commenter 21
Dear apv,

Please find rebased patch in branch CR28129_3.
22Commenter 22
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%]
23Commenter 2
Branch [archived branch] has been deleted by Commenter 3.

[revision removed]
24Commenter 2
Branch [archived branch] has been deleted by Commenter 3.

[revision removed]
25Commenter 2
Branch [archived branch] has been deleted by Commenter 3.

[revision removed]
26Commenter 2
Branch [archived branch] has been deleted by Commenter 3.

[revision removed]

Related records