View Issue Details

IDProjectCategoryView StatusLast Update
0028760Open CASCADEOCCT:Visualizationpublic2018-06-29 21:19
Reporterkgv Assigned Tokgv  
PrioritynormalSeverityminor 
Status closedResolutionfixed 
Product Version7.2.0 
Target Version7.3.0Fixed in Version7.3.0 
Summary0028760: Visualization, TKOpenGl - avoid excessive frustum culling traverse within extra OIT rendering pass
DescriptionOpenGl_LayerList::renderTransparent() performs rendering of transparent objects by calling OpenGl_Layer::Render(), which implies OpenGl_Layer::traverse() being called twice for each Layer - first within direct rendering of opaque groups (event if there no opaque groups) and then for transparent groups.

The second pass looks redundant.
Steps To ReproduceN/A
TagsNo tags attached.
Test case numberNot required

Relationships

child of 0027925 closedbugmaster Open CASCADE Visualization - implement order-independent transparency algorithm within rasterization rendering 

Activities

git

2017-11-08 10:24

administrator   ~0072033

Branch CR28760 has been created by kgv.

SHA-1: b5ab16015c1c5b813bc03acbeb3a1feda23dd97b


Detailed log of new commits:

Author: kgv
Date: Wed Nov 8 09:44:27 2017 +0300

    0028760: Visualization, TKOpenGl - avoid excessive frustum culling traverse within extra OIT rendering pass
    
    Culling traverse is no more called implicitly within OpenGl_Layer::Render().
    Instead, all layers are traversed at onces within OpenGl_View::render() beforehand.
    
    OpenGl_BVHTreeSelector methods have been renamed to better reflect their meaning.
    Non-persistent culling options has been moved to dedicated structure OpenGl_BVHTreeSelector::CullingContext
    so that OpenGl_BVHTreeSelector instance can be used for different Layers without modifying its state.

Author: kgv
Date: Wed Nov 8 00:11:57 2017 +0300

    0029300: Visualization, TKOpenGl - provide depth pre-pass option
    
    OpenGl_LayerList::Render() now handles new option Graphic3d_RenderingParams::ToEnableDepthPrepass
    which prepends additional pass to rendering pipeline filling Depth Buffer in advance.

git

2017-11-08 11:19

administrator   ~0072042

Branch CR28760 has been updated forcibly by kgv.

SHA-1: b7e9a73d4518271810d4b5538cf6e815fe86b807

kgv

2017-11-08 11:33

developer   ~0072043

Last edited: 2017-11-08 17:47

Patch is ready for review.

http://jenkins-test-10.nnov.opencascade.com/view/CR28760-master-KGV

san

2017-11-09 14:57

developer   ~0072119

Branch CR28760 reviewed without remarks, ready for testing.

git

2017-11-10 07:35

administrator   ~0072129

Branch CR28760 has been updated forcibly by kgv.

SHA-1: 2b8832bb0ebd09520819fa2bc574e1a3e112b132

bugmaster

2017-11-10 11:04

administrator   ~0072141

Combination -
OCCT branch : CR28760 SHA-1: b7e9a73d4518271810d4b5538cf6e815fe86b807
Products branch : master
was compiled on Linux, MacOS and Windows platforms and tested on optimize mode.

Number of compiler warnings:
No new/fixed warnings

Regressions/Differences/Improvements:
No regressions/differences

CPU differences:
Linux:
OCCT
Total CPU difference: 20630.430000000477 / 20729.730000000465 [-0.48%]
Products
Total CPU difference: 7946.680000000076 / 7934.890000000088 [+0.15%]
Windows:
OCCT
Total CPU difference: 18824.843471298504 / 18506.86663299847 [+1.72%]
Products
Total CPU difference: 7957.06500649995 / 7981.338762099939 [-0.30%]

Image differences :
No differences that require special attention

Memory differences :
No differences that require special attention

git

2017-12-07 21:07

administrator   ~0072791

Branch CR28760 has been deleted by kgv.

SHA-1: 2b8832bb0ebd09520819fa2bc574e1a3e112b132

Related Changesets

occt: master 2b8832bb

2017-11-08 06:44:27

kgv

Details Diff
0028760: Visualization, TKOpenGl - avoid excessive frustum culling traverse within extra OIT rendering pass

Culling traverse is no more called implicitly within OpenGl_Layer::Render().
Instead, all layers are traversed at onces within OpenGl_View::render() beforehand.

OpenGl_BVHTreeSelector methods have been renamed to better reflect their meaning.
Non-persistent culling options has been moved to dedicated structure OpenGl_BVHTreeSelector::CullingContext
so that OpenGl_BVHTreeSelector instance can be used for different Layers without modifying its state.
Affected Issues
0028760
mod - src/OpenGl/OpenGl_BVHTreeSelector.cxx Diff File
mod - src/OpenGl/OpenGl_BVHTreeSelector.hxx Diff File
mod - src/OpenGl/OpenGl_Layer.cxx Diff File
mod - src/OpenGl/OpenGl_Layer.hxx Diff File
mod - src/OpenGl/OpenGl_LayerList.cxx Diff File
mod - src/OpenGl/OpenGl_LayerList.hxx Diff File
mod - src/OpenGl/OpenGl_Structure.hxx Diff File
mod - src/OpenGl/OpenGl_View.hxx Diff File
mod - src/OpenGl/OpenGl_View_Redraw.cxx Diff File

Issue History

Date Modified Username Field Change
2017-05-19 11:02 kgv New Issue
2017-05-19 11:02 kgv Assigned To => kgv
2017-05-19 11:04 kgv Relationship added child of 0027925
2017-08-16 16:03 kgv Target Version 7.2.0 => 7.3.0
2017-11-08 10:18 kgv Summary Visualization, TKOpenGl - Avoid excessive frustum culling traverse within extra OIT rendering pass => Visualization, TKOpenGl - avoid excessive frustum culling traverse within extra OIT rendering pass
2017-11-08 10:24 git Note Added: 0072033
2017-11-08 11:19 git Note Added: 0072042
2017-11-08 11:33 kgv Note Added: 0072043
2017-11-08 11:33 kgv Assigned To kgv => san
2017-11-08 11:33 kgv Status new => resolved
2017-11-08 11:33 kgv Target Version 7.3.0 => 7.4.0
2017-11-08 17:47 kgv Note Edited: 0072043
2017-11-09 14:57 san Note Added: 0072119
2017-11-09 14:57 san Assigned To san => bugmaster
2017-11-09 14:57 san Status resolved => reviewed
2017-11-10 07:35 git Note Added: 0072129
2017-11-10 11:00 bugmaster Test case number => Not required
2017-11-10 11:04 bugmaster Note Added: 0072141
2017-11-10 11:04 bugmaster Status reviewed => tested
2017-11-17 16:10 kgv Changeset attached => occt master 2b8832bb
2017-11-17 16:10 kgv Assigned To bugmaster => kgv
2017-11-17 16:10 kgv Status tested => verified
2017-11-17 16:10 kgv Resolution open => fixed
2017-12-07 21:07 git Note Added: 0072791
2018-02-20 12:58 aiv Target Version 7.4.0 => 7.3.0
2018-06-29 21:15 aiv Fixed in Version => 7.3.0
2018-06-29 21:19 aiv Status verified => closed