View Issue Details

IDProjectCategoryView StatusLast Update
0027925Open CASCADEOCCT:Visualizationpublic2021-02-19 14:24
Reporterkgv Assigned Tobugmaster  
PrioritynormalSeverityfeature 
Status closedResolutionfixed 
Target Version7.2.0Fixed in Version7.2.0 
Summary0027925: Visualization - implement order-independent transparency algorithm within rasterization rendering
DescriptionFor the moment, only Ray-Tracing rendering core handles material transparency in order-independent way.

Traditional rasterization approach is not able to provide correct transparency in complex cases, because this is possible only by manual sorting of transparent objects.

It is proposed implementing one or several order-independent rendering techniques using traditional rasterization pipeline and GLSL programs, which should be compatible with and fast enough for desktop and mobile (OpenGL ES) platforms (and thus would be less expensive than RayTracing).

References to the known algorithms:
- Order-Independent Transparency using Linked Lists.
  https://habrahabr.ru/post/224003/
  http://on-demand.gputechconf.com/gtc/2014/presentations/S4385-order-independent-transparency-opengl.pdf
- Depth Peeling / Reverse Depth Peeling / Dual Depth Peeling.
- Stencil Routed A-Buffer.
- Weighted Blended Order-Independent Transparency.
  http://jcgt.org/published/0002/02/09/
Steps To Reproducev3d transparency blend
v3d transparency highlight
TagsNo tags attached.
Test case numberv3d transparency blend, highlight

Attached Files

  • cpu_cooler_regular_order_msaa.png (77,126 bytes)
  • cpu_cooler_oit_msaa.png (80,748 bytes)
  • blend_blend_artifacts_unordered.png (50,493 bytes)
  • blend_blend_artifacts_oit.png (52,977 bytes)
  • blend_occlusion_unordered.png (47,598 bytes)
  • blend_occlusion_oit_nodepth.png (55,120 bytes)
  • blend_occlusion_oit.png (63,410 bytes)
  • cadass_transp_normal.jpg (209,200 bytes)
  • cadass_transp_oit_weight.jpg (207,447 bytes)
  • cadass_transp_raytrace.jpg (201,514 bytes)
  • cadass_san_miguel_oit_OFF.png (3,337,258 bytes)
  • cadass_san_miguel_oit_ON.png (3,345,591 bytes)
  • cadass_san_miguel_oit_OFF_cut.png (1,481,189 bytes)
  • cadass_san_miguel_oit_ON_cut.png (1,474,974 bytes)

Relationships

related to 0030982 closedbugmaster Open CASCADE Visualization, OpenGl_View::MinMaxValues() - do not add background quad into depth range 
parent of 0028760 closedkgv Open CASCADE Visualization, TKOpenGl - avoid excessive frustum culling traverse within extra OIT rendering pass 
parent of 0028826 closedmkv Open CASCADE Visualization, TKOpenGl - fix compatibility with strict OpenGL ES drivers 
parent of 0029051 closedbugmaster Open CASCADE Visualization, TKOpenGl - wrong color of transparent dynamic highlight with OIT tuned ON 
parent of 0029477 closedapn Open CASCADE Visualization, TKOpenGl - MSAA FBO initialization failure on OpenGL ES 3.2 device 
parent of 0029507 closedapn Open CASCADE Visualization, TKOpenGl - uninitialized class field OpenGl_FrameBuffer::myIsOwnDepth 
parent of 0029509 closedapn Open CASCADE Visualization, TKOpenGl - Weighted OIT + MSAA shader compilation errors 
parent of 0030374 closedapn Open CASCADE Visualization, TKOpenGl - activate texture unit Graphic3d_TextureUnit_1 after OpenGl_LayerList::renderTransparent() 
parent of 0032143 closedbugmaster Open CASCADE Visualization - add option excluding transparent object from sorting 
has duplicate 0027716 closedbugmaster Community Visualization - incorrect treatment of multiple transparent objects in 3D view 
has duplicate 0028155 closedbugmaster Community Visual artefacts when setting transparency 
has duplicate 0028253 closedbugmaster Community Incorrect treatment of transparency if a spline face overlaps itself in 3D view 
related to 0026062 closedbugmaster Open CASCADE Visualization - implicitly increase priority of MeshVS_Mesh while setting transparency 
related to 0028400 closedapn Open CASCADE Visualization, Graphic3d_MaterialAspect - remove undocumented and unsupported flag EnvReflexion() 
related to 0027527 closedbugmaster Community Visualization - can't highlight polyline presentation of Wire after setting transparency 
related to 0029508 closedapn Open CASCADE Visualization, TKOpenGl - visual artifacts on Adreno 305/308 

Activities

git

2017-01-10 19:18

administrator   ~0062468

Branch CR27925 has been created by apl.

SHA-1: 34b39aa481c6a6d594eb372c0580eeae2f6d5417


Detailed log of new commits:

Author: apl
Date: Tue Jan 10 19:17:53 2017 +0300

    Prototype development and test: necessary code to enable Weighted-OIT algorithm

git

2017-01-11 14:26

administrator   ~0062490

Branch CR27925 has been updated by apl.

SHA-1: 017ffecdf45c95553ee42c996054dd6cfe29f392


Detailed log of new commits:

Author: apl
Date: Wed Jan 11 14:26:46 2017 +0300

    Weighted OIT

git

2017-01-24 11:53

administrator   ~0062932

Branch CR27925 has been updated by apl.

SHA-1: 1fbc9e3111e8ca2c1f1e0c902af48d84d33fcbcb


Detailed log of new commits:

Author: apl
Date: Tue Jan 24 11:52:47 2017 +0300

    Implemented processing of OIT layers

Author: apl
Date: Fri Jan 20 20:01:18 2017 +0300

    Deeper integration into TKOpenGl

Author: apl
Date: Thu Jan 19 19:18:26 2017 +0300

    Intermediate commit

git

2017-01-24 13:10

administrator   ~0062938

Branch CR27925 has been updated by apl.

SHA-1: 4b8ce1bafd956178b880dbffbb324696074540c2


Detailed log of new commits:

Author: apl
Date: Tue Jan 24 13:09:50 2017 +0300

    Use same code-path for regular and OIT transparency draw

git

2017-01-24 13:54

administrator   ~0062941

Branch CR27925 has been updated by apl.

SHA-1: 56bd15761a7efa8c4dc7d891a273d1309412baac


Detailed log of new commits:

Author: apl
Date: Tue Jan 24 13:54:02 2017 +0300

    Framebuffer color formats

git

2017-01-24 14:05

administrator   ~0062942

Branch CR27925 has been updated by apl.

SHA-1: 3baed84a400abe2c03de960d5361a53ab8d00130


Detailed log of new commits:

Author: apl
Date: Tue Jan 24 14:04:51 2017 +0300

    FBO for vdump

git

2017-01-24 15:51

administrator   ~0062951

Branch CR27925 has been updated by apl.

SHA-1: 98f8dbe7504d611c0a2b5673f6bab380b2648e3e


Detailed log of new commits:

Author: apl
Date: Tue Jan 24 15:51:47 2017 +0300

    Capping algorithm with OIT blending; Rewrite implementation of MRT OpenGl_Framebuffer.

git

2017-01-24 16:10

administrator   ~0062954

Branch CR27925_1 has been created by apl.

SHA-1: b0aec3cebd2ce11224cf7bd48a71b9c8b8daf9b5


Detailed log of new commits:

Author: apl
Date: Tue Jan 24 16:09:52 2017 +0300

    Weighted, blended order-independent transparency

git

2017-01-24 16:55

administrator   ~0062962

Branch CR27925_OCCT710 has been created by apl.

SHA-1: 6a0cd38c124a3b2b8f9fcf4c44ad82f9de5de84f


Detailed log of new commits:

Author: apl
Date: Tue Jan 24 16:54:40 2017 +0300

    Weighted, blended order-independent transparency

git

2017-01-24 18:17

administrator   ~0062977

Branch CR27925_OCCT710 has been updated by apl.

SHA-1: 8b042e7ac631788a8d227e9125997f4005c9ca34


Detailed log of new commits:

Author: apl
Date: Tue Jan 24 18:17:09 2017 +0300

    Minor fix for regular transparency

git

2017-01-24 18:51

administrator   ~0062978

Branch CR27925_1 has been updated by apl.

SHA-1: c80678d5e1aa5c46f253ce10b2a35f06a3618f6b


Detailed log of new commits:

Author: apl
Date: Tue Jan 24 18:17:09 2017 +0300

    Minor fix for regular transparency

apl

2017-01-25 15:29

developer  

cpu_cooler_regular_order_msaa.png (77,126 bytes)

apl

2017-01-25 15:29

developer  

cpu_cooler_oit_msaa.png (80,748 bytes)

git

2017-01-25 19:48

administrator   ~0063054

Branch CR27925_1 has been updated by apl.

SHA-1: 12d186df8a6a383442d33a03e61f53503daf8dc5


Detailed log of new commits:

Author: apl
Date: Wed Jan 25 19:47:40 2017 +0300

    MSAA support

git

2017-01-26 19:45

administrator   ~0063108

Branch CR27925_1 has been updated by apl.

SHA-1: d92913d1db31ab135749f7a7e50aff775139a429


Detailed log of new commits:

Author: apl
Date: Thu Jan 26 19:45:44 2017 +0300

    OIT variables for custom shaders

Author: apl
Date: Thu Jan 26 15:40:46 2017 +0300

    - Transparency does not change priority
    - Controlling OIT enable flag from DRAW

git

2017-01-27 18:30

administrator   ~0063152

Branch CR27925_1 has been updated by apl.

SHA-1: 9d2de06cac9f7ffd495bb5e6df6f4337e4cc5aa9


Detailed log of new commits:

Author: apl
Date: Fri Jan 27 17:40:29 2017 +0300

    Fixed problem with use of environment texture

git

2017-02-06 20:20

administrator   ~0063469

Branch CR27925_1 has been updated by apl.

SHA-1: 840b4e9799305c43c199fa7c19466d3113f49a8b


Detailed log of new commits:

Author: apl
Date: Mon Feb 6 20:20:44 2017 +0300

    OpenGL ES 2.0/3.0 support

git

2017-02-09 19:35

administrator   ~0063742

Branch CR27925_1 has been updated forcibly by apl.

SHA-1: 00f28c7975379e7d98c26f267952fffde2b543dc

git

2017-02-10 17:29

administrator   ~0063751

Branch CR27925_1 has been updated forcibly by apl.

SHA-1: cb43c533756945f0f2da45f4770e7c651a74d7fa

kgv

2017-02-13 19:18

developer   ~0063779

--- a/src/AIS/AIS_Shape.cxx
+++ b/src/AIS/AIS_Shape.cxx
-    aPrs->SetDisplayPriority (10); // force highest priority for translucent objects

Prbably worth mentioning in upgrade guide...

+  Standard_ASSERT_RETURN (Functions()->glDrawBuffers != NULL,

Better using myFuncs instead of Functions().

+    else if (aDrawBuffer != GL_NONE)
+    {
+      myDrawBuffers.SetValue (anI, aDrawBuffer);
+    }

What will be the meaning of GL_NONE in-between?
Should loop beeing broken on GL_NONE occurrence?

+  Functions()->glDrawBuffers (theNb, (const GLenum*)theDrawBuffers);

At least static assert should be added to ensure that types match size.

+  const Standard_Boolean hasDrawBuffersExt = (IsGlGreaterEqual (3, 0) || CheckExtension ("GL_EXT_draw_buffers"))
+                                          && FindProc ("glDrawBuffersEXT", myFuncs->glDrawBuffers);

It is possible that driver supports 3.0 but not extension - the function will not exist in this case.

+  bool                   myIsOwnDepth;          //!< flag indicating that FBO should be deallocated by this class

Incorrect description.

+    static const Standard_Integer aDrawBuffers[3] = { GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1 };

It is better initializing 3rd value explicitly.

+Standard_Boolean OpenGl_LayerList::OpenGl_OpaqueFilter::ShouldRender
...
+  {
+    const OpenGl_AspectFace* anAspect = theWorkspace->ApplyAspectFace();

Is it really expected to apply aspect here?

+      if (myStackSpace)

Please use IsNull() explicitly.

+    NCollection_Handle<NCollection_Array1<const OpenGl_Layer*> > myStackSpace;

NCollection_Shared is preferred, when applicable.

+        while (true) // seemly responding to driver limitation (GL_FRAMEBUFFER_UNSUPPORTED)

Please use "for (;;)" instead (there will be warnings on some compilers).

+  "  #if (GL_ES && GL_EXT_draw_buffers) || (GL_ARB_draw_buffers)\n"

Is it valid GLSL preprocessor syntax to not check if macros was defined?

+OpenGl_LayerList::renderTransparent()
+  theWorkspace->SetRenderFilter (myRenderTranspFilter);

Within current state, the transparent objects are processed twice - within opaque objects (skipped) and then within transparent objects (actually rendered).
This logic is managed by element filters - this implies some additional penalty for processing structures multiple times even within skipping pass for computing matrix and clipping states.
It might be better extending filter interface to skip entire OpenGl_Structure, when possible.

git

2017-02-17 00:05

administrator   ~0063859

Branch CR27925_OCCT710 has been updated forcibly by apl.

SHA-1: ace6916cafef6b9601631ac7bfae45edbbe3d8be

git

2017-04-17 18:02

administrator   ~0065268

Branch CR27925_2 has been created by apl.

SHA-1: b07c6a59f91d78acf1b87266a6bea44f4aa5d373


Detailed log of new commits:

Author: apl
Date: Mon Apr 17 18:01:28 2017 +0300

    0027925: Visualization - implement order-independent transparency algorithm within rasterization rendering
    
    The weighted, blended order-independent transparency algorithm has been added rasterization pipeline.
    It requires shaders, multiple render targets extension and floating point texture format.
    Patch does not modify API and does not require porting - it adds new rendering options (vrenderparams):
    - OIT-enabling flag and,
    - Scalar factor [0-1] controlling influence of a fragment's depth to its visibility.
    The feature supports MSAA, OpenGL ES 2.0, ES 3.0 and ANGLE.
    
    The usage rules for default transparency algorithm become simpler - rendering priority of transparent graphical
    structures is managed automatically, therefore no need to change it application side.

git

2017-04-25 13:09

administrator   ~0065499

Branch CR27925_2 has been updated forcibly by apl.

SHA-1: bde728c64d74f61678b1830d7207ec97abe5d58b

git

2017-04-25 13:12

administrator   ~0065500

Branch CR27925_2 has been updated forcibly by apl.

SHA-1: 1aff380167df72d41ef60df6040224c6c38480cd

apl

2017-04-25 13:12

developer   ~0065501

Dear Kirill,

Patch is ready for review in "CR27925_2" branch.

apl

2017-04-25 13:14

developer  

blend_blend_artifacts_unordered.png (50,493 bytes)

apl

2017-04-25 13:14

developer  

blend_blend_artifacts_oit.png (52,977 bytes)

apl

2017-04-25 13:14

developer  

blend_occlusion_unordered.png (47,598 bytes)

apl

2017-04-25 13:15

developer  

blend_occlusion_oit_nodepth.png (55,120 bytes)

apl

2017-04-25 13:15

developer  

blend_occlusion_oit.png (63,410 bytes)

git

2017-04-25 15:10

administrator   ~0065512

Branch CR27925_2 has been updated forcibly by apl.

SHA-1: 023e579597139e47b02f64224107b20cc6db2056

git

2017-04-25 18:18

administrator   ~0065521

Branch CR27925_2 has been updated by kgv.

SHA-1: 041e5b7330b2b7232d24523002d5f3a701b07a4e


Detailed log of new commits:

Author: kgv
Date: Tue Apr 25 18:18:45 2017 +0300

    cosmetics

kgv

2017-04-25 18:20

developer   ~0065522

Last edited: 2017-04-25 18:20

Could you please check that changes in src/Shaders/Declarations.glsl has been pushed to branch?

kgv

2017-04-26 10:38

developer   ~0065531

Last edited: 2017-04-26 10:40

+#if defined(GL_ES_VERSION_2_0)
+  if (CheckExtension ("GL_ARB_color_buffer_float"))
+#else
+  if (IsGlGreaterEqual (3, 0) || CheckExtension ("GL_ARB_color_buffer_float"))
+#endif
+  {
+    hasFloatBuffer     = Standard_True;
+    hasHalfFloatBuffer = Standard_True;
+  }
+  else
+  {
+    hasFloatBuffer     = CheckExtension ("GL_EXT_color_buffer_float");
+    hasHalfFloatBuffer = CheckExtension ("GL_EXT_color_buffer_half_float");
+  }

GL_ARB_color_buffer_float is not defined for OpenGL ES and there are no known implementations pretending to support it.
In contrast to - GL_EXT_color_buffer_float and GL_EXT_color_buffer_half_float are defined only for OpenGL ES, no use to check them on desktop.

Please also add check for OpenGL ES 3.2, introduces renderable float formats in core
(but only 16-bit float formats are required to support texture filtering - it might be need to be protected from using within Graphic3d_RenderingParams::RenderResolutionScale != 1.0f
relying on linear texture filtering).

kgv

2017-04-26 10:47

developer   ~0065532

+Standard_Boolean OpenGl_View::checkOitCompatibility (const Handle(OpenGl_Context)& theGlContext,
+                                                     const Standard_Boolean theMSAA)

Please add new query items for OpenGl_GraphicDriver::InquireLimit(), so that application will be check in advance if OIT can be enabled or not on hardware.

git

2017-04-26 11:13

administrator   ~0065534

Branch CR27925_2 has been updated by apl.

SHA-1: eb8c32fedc8c9a8a89c576a9ba802ea79918bb5a


Detailed log of new commits:

Author: apl
Date: Wed Apr 26 10:32:21 2017 +0300

    remarks from kgv

git

2017-04-26 12:15

administrator   ~0065542

Branch CR27925_2 has been updated by apl.

SHA-1: 537168094caaea237ebdb5367505ab088dac1bf2


Detailed log of new commits:

Author: apl
Date: Wed Apr 26 12:15:20 2017 +0300

    Extended status of Gl feature availability

git

2017-04-26 14:00

administrator   ~0065547

Branch CR27925_2 has been updated forcibly by apl.

SHA-1: bcebce3cf06fd19b2243d9068437fd36a0337f90

kgv

2017-04-26 14:03

developer   ~0065550

Please test the patch.

mkv

2017-04-27 11:35

tester   ~0065589

Dear BugMaster,
Branch CR27925_2 from occt git-repository (and master from products git-repository) was compiled on Linux, MacOS and Windows platforms on Release mode.
SHA-1: bcebce3cf06fd19b2243d9068437fd36a0337f90

There are compilation errors on Windows platform:
http://jenkins-test-07.nnov.opencascade.com:8080/view/CR27925_2-master/job/CR27925_2-master-OCCT-Windows-64-VC10-opt-compile/1/parsed_console/

34> RWStepShape_RWSolidReplica.cxx
44>..\..\..\src\D3DHost\D3DHost_FrameBuffer.cxx(197): error C2065: 'myColorTexture' : undeclared identifier
44>..\..\..\src\D3DHost\D3DHost_FrameBuffer.cxx(197): error C2227: left of '->Release' must point to class/struct/union/generic type
44> type is ''unknown-type''

.....

1> D3DHost_FrameBuffer.cxx
1>..\..\..\src\D3DHost\D3DHost_FrameBuffer.cxx(197): error C2065: 'myColorTexture' : undeclared identifier
1>..\..\..\src\D3DHost\D3DHost_FrameBuffer.cxx(197): error C2227: left of '->Release' must point to class/struct/union/generic type
1> type is ''unknown-type''

kgv

2017-04-27 17:37

developer   ~0065624

Within the following test case the shaded dynamic highlighting does not work correctly:
pload MODELING VISUALIZATION
psphere s 1
vclear
vinit View1
vdisplay -dispMode 1 s
vfit
vsettransp s 0.5
vrenderparams -oit 0
vselprops dynHighlight -dispMode -1
vmoveto 250 250

git

2017-04-28 10:12

administrator   ~0065632

Branch CR27925_2 has been updated by apl.

SHA-1: 6542f694b788dd93f348d948ce742906f762f1e0


Detailed log of new commits:

Author: apl
Date: Fri Apr 28 10:12:00 2017 +0300

    Handle HighlightStyle in transparency

git

2017-04-28 10:16

administrator   ~0065633

Branch CR27925_2 has been updated by apl.

SHA-1: 493ef47743b0b84f709e28a20c4ff552cca114a9


Detailed log of new commits:

Author: apl
Date: Fri Apr 28 10:15:51 2017 +0300

    remarks

git

2017-05-01 20:04

administrator   ~0065657

Branch CR27925_2 has been updated forcibly by apl.

SHA-1: ae47f6bfc2bfe9c87f21bdc186863e8fd2dac25f

git

2017-05-02 11:44

administrator   ~0065673

Branch CR27925_2 has been updated forcibly by apl.

SHA-1: 8d841b963d4681fb69ebf2e116c214d98221d093

apl

2017-05-02 11:45

developer   ~0065674

1) D3D compilation fixed
2) Shading highlight issue fixed

Please review branch CR27925_2

kgv

2017-05-02 11:47

developer   ~0065675

Please test the patch.

mkv

2017-05-02 19:49

tester   ~0065687

Dear BugMaster,
Branch CR27925_2 from occt git-repository (and master from products git-repository) was compiled on Linux, MacOS and Windows platforms and tested on Release mode.
SHA-1: 8d841b963d4681fb69ebf2e116c214d98221d093

Number of compiler warnings:

occt component :
Linux: 0 (0 on master)
Windows: 0 (0 on master)
MacOS : 0 (0 on master)

products component :
Linux: 64 (64 on master)
Windows: 0 (0 on master)
MacOS : 1203

Regressions/Differences/Improvements:
No regressions/differences

Testing cases:
http://occt-tests/CR27925_2-master-OCCT/Debian70-64/v3d/transparency/blend.html
http://occt-tests/CR27925_2-master-OCCT/Windows-64-VC10/v3d/transparency/blend.html
v3d transparency blend: OK
http://occt-tests/CR27925_2-master-OCCT/Debian70-64/v3d/transparency/highlight.html
http://occt-tests/CR27925_2-master-OCCT/Windows-64-VC10/v3d/transparency/highlight.html
v3d transparency highlight: OK

Testing on Linux:
occt component :
Total MEMORY difference: 91972214 / 91154015 [+0.90%]
Total CPU difference: 19116.420000000406 / 18823.770000000273 [+1.55%]
products component :
Total MEMORY difference: 30035367 / 30192494 [-0.52%]
Total CPU difference: 5199.859999999974 / 5085.359999999965 [+2.25%]
Testing on Windows:
occt component :
Total MEMORY difference: 58417846 / 58212722 [+0.35%]
Total CPU difference: 17792.27285229875 / 17248.7497681988 [+3.15%]
products component :
Total MEMORY difference: 22693794 / 22640194 [+0.24%]
Total CPU difference: 5304.002799799965 / 5324.158128999971 [-0.38%]

There are following differences in images found by testdiff.
http://occt-tests/CR27925_2-master-OCCT/Debian70-64/diff-Debian70-64.html
http://occt-tests/CR27925_2-master-OCCT/Windows-64-VC10/diff-Windows-64-VC10-image.html
IMAGE v3d materials bug24872_1: bug24872_1.png differs

git

2017-05-02 19:49

administrator   ~0065688

Branch CR27925_2 has been updated by mkv.

SHA-1: b913bcdb2893b6ae891aefed04c10f3a6c555311


Detailed log of new commits:

Author: mkv
Date: Tue May 2 19:42:08 2017 +0300

    // Small correction of test case for issue CR27925

mkv

2017-05-02 19:50

tester   ~0065689

Dear apl,
Branch CR27925_2 has been rejected due to:
- differences in images

kgv

2017-05-02 19:55

developer   ~0065690

The image difference is OK.

mkv

2017-05-03 14:53

tester   ~0065706

Dear BugMaster,
Branch CR27925_2 is TESTED.

kgv

2017-05-10 11:40

developer  

cadass_transp_normal.jpg (209,200 bytes)

kgv

2017-05-10 11:41

developer  

cadass_transp_oit_weight.jpg (207,447 bytes)

kgv

2017-05-10 11:41

developer  

cadass_transp_raytrace.jpg (201,514 bytes)

git

2017-05-12 11:35

administrator   ~0065884

Branch CR27925 has been deleted by kgv.

SHA-1: 98f8dbe7504d611c0a2b5673f6bab380b2648e3e

git

2017-05-12 11:35

administrator   ~0065885

Branch CR27925_1 has been deleted by kgv.

SHA-1: cb43c533756945f0f2da45f4770e7c651a74d7fa

git

2017-05-12 11:35

administrator   ~0065886

Branch CR27925_2 has been deleted by kgv.

SHA-1: b913bcdb2893b6ae891aefed04c10f3a6c555311

git

2019-10-02 17:53

administrator   ~0087705

Branch CR27925_OCCT710 has been deleted by kgv.

SHA-1: ace6916cafef6b9601631ac7bfae45edbbe3d8be

kgv

2019-12-17 14:57

developer   ~0089603

Please close the bug.

kgv

2019-12-17 14:57

developer  

cadass_san_miguel_oit_OFF.png (3,337,258 bytes)

kgv

2019-12-17 14:58

developer  

cadass_san_miguel_oit_ON.png (3,345,591 bytes)

kgv

2019-12-17 14:59

developer  

cadass_san_miguel_oit_OFF_cut.png (1,481,189 bytes)

kgv

2019-12-17 14:59

developer  

cadass_san_miguel_oit_ON_cut.png (1,474,974 bytes)

Related Changesets

occt: master a1073ae2

2017-04-25 12:10:15

apl


Committer: bugmaster Details Diff
0027925: Visualization - implement order-independent transparency algorithm within rasterization rendering

Weighted, Blended Order-Independent Transparency algorithm has been added rasterization pipeline.
In contrast to classical blending transparency it makes transparent objects look independent
from point of view. It also gives better depth occlusion when being used together with a weight factor
based on value of a GL depth buffer. The feature supports desktop OpenGL, OpenGL ES 3.0, ANGLE
and can be used together with MSAA on desktop GL.

To be used it require availability of:
1) Shaders pipeline.
2) Floating point color format for framebuffer (GL_ARB_color_buffer_float).
3) Multiple render targets (GL_ARB_draw_buffers).

Patch does not modify API and does not require application porting.
It adds new rendering options to Graphic3d_RenderingParams structure:
a) Transparency method from enumeration.
b) Scalar factor [0-1] controlling influence of a fragment's depth to its visibility.

Patch also simplifies processing of transparent objects for standard method:
rendering priority of transparent graphical structures is managed automatically,
therefore there is no need to care about it at application's side.
Affected Issues
0027925
mod - src/AIS/AIS_Shape.cxx Diff File
mod - src/AIS/AIS_Triangulation.cxx Diff File
mod - src/D3DHost/D3DHost_FrameBuffer.cxx Diff File
mod - src/Graphic3d/FILES Diff File
mod - src/Graphic3d/Graphic3d_RenderingParams.hxx Diff File
add - src/Graphic3d/Graphic3d_RenderTransparentMethod.hxx Diff File
mod - src/Graphic3d/Graphic3d_TypeOfLimit.hxx Diff File
mod - src/OpenGl/OpenGl_CappingAlgo.cxx Diff File
mod - src/OpenGl/OpenGl_CappingAlgo.hxx Diff File
mod - src/OpenGl/OpenGl_Context.cxx Diff File
mod - src/OpenGl/OpenGl_Context.hxx Diff File
mod - src/OpenGl/OpenGl_Element.hxx Diff File
mod - src/OpenGl/OpenGl_FrameBuffer.cxx Diff File
mod - src/OpenGl/OpenGl_FrameBuffer.hxx Diff File
mod - src/OpenGl/OpenGl_GlFunctions.hxx Diff File
mod - src/OpenGl/OpenGl_GraphicDriver.cxx Diff File
mod - src/OpenGl/OpenGl_Layer.cxx Diff File
mod - src/OpenGl/OpenGl_LayerList.cxx Diff File
mod - src/OpenGl/OpenGl_LayerList.hxx Diff File
mod - src/OpenGl/OpenGl_PrimitiveArray.hxx Diff File
mod - src/OpenGl/OpenGl_RenderFilter.hxx Diff File
mod - src/OpenGl/OpenGl_SetOfShaderPrograms.hxx Diff File
mod - src/OpenGl/OpenGl_ShaderManager.cxx Diff File
mod - src/OpenGl/OpenGl_ShaderManager.hxx Diff File
mod - src/OpenGl/OpenGl_ShaderProgram.cxx Diff File
mod - src/OpenGl/OpenGl_ShaderProgram.hxx Diff File
mod - src/OpenGl/OpenGl_ShaderStates.hxx Diff File
mod - src/OpenGl/OpenGl_Texture.cxx Diff File
mod - src/OpenGl/OpenGl_View.cxx Diff File
mod - src/OpenGl/OpenGl_View.hxx Diff File
mod - src/OpenGl/OpenGl_View_Redraw.cxx Diff File
mod - src/OpenGl/OpenGl_Workspace.cxx Diff File
mod - src/OpenGl/OpenGl_Workspace.hxx Diff File
mod - src/Shaders/Declarations.glsl Diff File
mod - src/Shaders/PhongShading.fs Diff File
mod - src/Shaders/Shaders_Declarations_glsl.pxx Diff File
mod - src/ViewerTest/ViewerTest_ViewerCommands.cxx Diff File
add - tests/v3d/transparency/begin Diff File
add - tests/v3d/transparency/blend Diff File
add - tests/v3d/transparency/highlight Diff File

Issue History

Date Modified Username Field Change
2016-10-03 13:58 kgv New Issue
2016-10-03 13:58 kgv Assigned To => kgv
2016-10-03 14:06 kgv File Added: transp_raster_rand_KO.png
2016-10-03 14:07 kgv File Added: transp_raytrace_OK.png
2016-10-03 14:07 kgv File Deleted: transp_raytrace_OK.png
2016-10-03 14:07 kgv File Added: transp_raster_sorted.png
2016-10-03 14:07 kgv File Added: transp_raytrace_OK.png
2016-10-03 14:08 kgv Relationship added related to 0027716
2016-10-03 14:10 kgv Description Updated
2016-10-03 14:13 kgv Description Updated
2016-10-03 15:50 san Description Updated
2016-10-13 12:44 kgv Relationship added related to 0026062
2016-10-25 09:25 kgv Target Version 7.1.0 => 7.2.0
2016-11-25 16:56 kgv Relationship added has duplicate 0028155
2016-12-20 16:32 kgv Relationship added has duplicate 0028253
2017-01-09 11:48 kgv Assigned To kgv => apl
2017-01-09 11:48 kgv Status new => assigned
2017-01-10 19:18 git Note Added: 0062468
2017-01-11 14:26 git Note Added: 0062490
2017-01-24 11:53 git Note Added: 0062932
2017-01-24 13:10 git Note Added: 0062938
2017-01-24 13:54 git Note Added: 0062941
2017-01-24 14:05 git Note Added: 0062942
2017-01-24 15:51 git Note Added: 0062951
2017-01-24 16:10 git Note Added: 0062954
2017-01-24 16:55 git Note Added: 0062962
2017-01-24 18:17 git Note Added: 0062977
2017-01-24 18:51 git Note Added: 0062978
2017-01-25 15:29 apl File Added: cpu_cooler_regular_order_msaa.png
2017-01-25 15:29 apl File Added: cpu_cooler_oit_msaa.png
2017-01-25 19:48 git Note Added: 0063054
2017-01-26 19:45 git Note Added: 0063108
2017-01-27 18:17 kgv Relationship added related to 0028400
2017-01-27 18:30 git Note Added: 0063152
2017-02-06 20:20 git Note Added: 0063469
2017-02-07 11:20 kgv Relationship added related to 0027527
2017-02-09 19:35 git Note Added: 0063742
2017-02-10 17:29 git Note Added: 0063751
2017-02-13 19:18 kgv Note Added: 0063779
2017-02-17 00:05 git Note Added: 0063859
2017-04-17 18:02 git Note Added: 0065268
2017-04-25 13:09 git Note Added: 0065499
2017-04-25 13:12 git Note Added: 0065500
2017-04-25 13:12 apl Note Added: 0065501
2017-04-25 13:12 apl Assigned To apl => kgv
2017-04-25 13:12 apl Status assigned => resolved
2017-04-25 13:12 apl Steps to Reproduce Updated
2017-04-25 13:14 apl File Added: blend_blend_artifacts_unordered.png
2017-04-25 13:14 apl File Added: blend_blend_artifacts_oit.png
2017-04-25 13:14 apl File Added: blend_occlusion_unordered.png
2017-04-25 13:15 apl File Added: blend_occlusion_oit_nodepth.png
2017-04-25 13:15 apl File Added: blend_occlusion_oit.png
2017-04-25 15:10 git Note Added: 0065512
2017-04-25 18:18 git Note Added: 0065521
2017-04-25 18:20 kgv Note Added: 0065522
2017-04-25 18:20 kgv Assigned To kgv => apl
2017-04-25 18:20 kgv Status resolved => assigned
2017-04-25 18:20 kgv Note Edited: 0065522
2017-04-26 10:38 kgv Note Added: 0065531
2017-04-26 10:39 kgv Note Edited: 0065531
2017-04-26 10:40 kgv Note Edited: 0065531
2017-04-26 10:40 kgv Note Edited: 0065531
2017-04-26 10:40 kgv Note Edited: 0065531
2017-04-26 10:47 kgv Note Added: 0065532
2017-04-26 11:13 git Note Added: 0065534
2017-04-26 12:15 git Note Added: 0065542
2017-04-26 14:00 git Note Added: 0065547
2017-04-26 14:03 kgv Note Added: 0065550
2017-04-26 14:03 kgv Assigned To apl => bugmaster
2017-04-26 14:03 kgv Status assigned => resolved
2017-04-26 14:03 kgv Status resolved => reviewed
2017-04-26 14:45 mkv Assigned To bugmaster => mkv
2017-04-27 11:35 mkv Note Added: 0065589
2017-04-27 11:35 mkv Assigned To mkv => apl
2017-04-27 11:35 mkv Status reviewed => assigned
2017-04-27 17:37 kgv Note Added: 0065624
2017-04-28 10:12 git Note Added: 0065632
2017-04-28 10:16 git Note Added: 0065633
2017-05-01 20:04 git Note Added: 0065657
2017-05-02 11:44 git Note Added: 0065673
2017-05-02 11:45 apl Note Added: 0065674
2017-05-02 11:45 apl Assigned To apl => kgv
2017-05-02 11:45 apl Status assigned => resolved
2017-05-02 11:45 apl Steps to Reproduce Updated
2017-05-02 11:47 kgv Note Added: 0065675
2017-05-02 11:47 kgv Assigned To kgv => bugmaster
2017-05-02 11:47 kgv Status resolved => reviewed
2017-05-02 12:10 mkv Assigned To bugmaster => mkv
2017-05-02 19:49 mkv Note Added: 0065687
2017-05-02 19:49 git Note Added: 0065688
2017-05-02 19:50 mkv Note Added: 0065689
2017-05-02 19:50 mkv Assigned To mkv => apl
2017-05-02 19:50 mkv Status reviewed => feedback
2017-05-02 19:50 mkv Test case number => v3d transparency blend, highlight
2017-05-02 19:55 kgv Note Added: 0065690
2017-05-02 19:55 kgv Assigned To apl => bugmaster
2017-05-03 14:53 mkv Note Added: 0065706
2017-05-03 14:53 mkv Status feedback => tested
2017-05-05 13:34 bugmaster Changeset attached => occt master a1073ae2
2017-05-05 13:34 bugmaster Status tested => verified
2017-05-05 13:34 bugmaster Resolution open => fixed
2017-05-10 11:40 kgv File Added: cadass_transp_normal.jpg
2017-05-10 11:41 kgv File Added: cadass_transp_oit_weight.jpg
2017-05-10 11:41 kgv File Added: cadass_transp_raytrace.jpg
2017-05-12 11:35 git Note Added: 0065884
2017-05-12 11:35 git Note Added: 0065885
2017-05-12 11:35 git Note Added: 0065886
2017-05-19 11:04 kgv Relationship added parent of 0028760
2017-06-08 10:22 kgv Relationship added parent of 0028826
2017-08-16 08:55 kgv File Deleted: transp_raster_rand_KO.png
2017-08-16 08:55 kgv File Deleted: transp_raster_sorted.png
2017-08-16 08:56 kgv File Deleted: transp_raytrace_OK.png
2017-08-16 09:48 bugmaster Project Internal => Open CASCADE
2017-08-25 15:42 kgv Relationship added parent of 0029051
2017-09-29 16:17 aiv Fixed in Version => 7.2.0
2017-09-29 16:29 aiv Status verified => closed
2018-02-02 20:36 kgv Relationship added parent of 0029477
2018-02-14 12:43 kgv Relationship added parent of 0029507
2018-02-14 15:03 kgv Relationship added related to 0029508
2018-02-14 23:05 kgv Relationship added parent of 0029509
2018-03-13 14:41 kgv Relationship replaced has duplicate 0027716
2018-11-14 15:26 kgv Relationship added parent of 0030374
2019-10-02 17:53 git Note Added: 0087705
2019-12-17 14:57 kgv Note Added: 0089603
2019-12-17 14:57 kgv Status closed => feedback
2019-12-17 14:57 kgv Resolution fixed => reopened
2019-12-17 14:57 kgv File Added: cadass_san_miguel_oit_OFF.png
2019-12-17 14:58 kgv File Added: cadass_san_miguel_oit_ON.png
2019-12-17 14:59 kgv File Added: cadass_san_miguel_oit_OFF_cut.png
2019-12-17 14:59 kgv File Added: cadass_san_miguel_oit_ON_cut.png
2019-12-17 15:01 kgv Relationship added related to 0030982
2019-12-25 16:11 bugmaster Status feedback => closed
2019-12-25 16:11 bugmaster Resolution reopened => fixed
2021-02-19 14:24 kgv Relationship added parent of 0032143