View Issue Details

IDProjectCategoryView StatusLast Update
0032648Open CASCADEOCCT:Visualizationpublic2021-11-21 13:00
Reporterkgv Assigned Toinv  
PrioritynormalSeverityfeature 
Status verifiedResolutionfixed 
Target Version7.7.0 
Summary0032648: Visualization, TKOpenGles - support MSAA anti-aliasing within WebGL 2.0
DescriptionOpenGl_FrameBuffer builds FBO with texture attachments for proper rendering workflow.

MSAA textures are supported since OpenGL 3.2+ and OpenGL ES 3.1+, which is fine for modern desktop and mobile environments.

Unfortunately, WebGL 2.0 has been stuck in the past and functionally limited to OpenGL ES 3.0, with no extensions available for MSAA textures.
At the same time, OpenGL ES 3.0 / WebGL 2.0 support MSAA render-targets - a limited semi-broken API which might be used to implement anti-aliasing on such platforms.

It is proposed trying to implement support of MSAA render-targets for compatibility with such environments.
Steps To Reproducetest opengles3 general msaa 1
TagsNo tags attached.
Test case numberopengles3/general/msaa

Relationships

related to 0032647 closedbugmaster Visualization, TKOpenGles - maximized window has stretched content 

Activities

git

2021-11-02 16:23

administrator   ~0105004

Branch CR32648 has been created by kgv.

SHA-1: 212756699f60e97a00d06e9a73d298f785cee9da


Detailed log of new commits:

Author: kgv
Date: Tue Nov 2 16:23:25 2021 +0300

    0032648: Visualization, TKOpenGles - support MSAA anti-aliasing within WebGL 2.0

git

2021-11-02 22:57

administrator   ~0105026

Branch CR32648_1 has been created by kgv.

SHA-1: 32b89613e9c0b300e3e79cdd515f56b0682eb38a


Detailed log of new commits:

Author: kgv
Date: Tue Nov 2 16:23:25 2021 +0300

    0032648: Visualization, TKOpenGles - support MSAA anti-aliasing within WebGL 2.0
    
    OpenGl_FrameBuffer::Init() now creates MSAA render buffer in case if MSAA textures are unsupported.
    In this case OpenGl_View::prepareFrameBuffers() creates MSAA render buffer for main content
    and non-MSAA FBO for immediate content as blitting of MSAA render buffers into MSAA targets is unsupported by OpenGL ES 3.0.

git

2021-11-02 23:00

administrator   ~0105027

Branch CR32648_1 has been updated forcibly by kgv.

SHA-1: 5817b8f447e6cca35bd76ebbb770a4614e4eb8e6

git

2021-11-02 23:31

administrator   ~0105028

Branch CR32648_1 has been updated forcibly by kgv.

SHA-1: f64df5958d5d0f321509ac95e22c0bccc7af9939

git

2021-11-03 10:40

administrator   ~0105032

Branch CR32648_1 has been updated forcibly by kgv.

SHA-1: 292f5d7e85a742c34f023f11d12177a6a193af52

kgv

2021-11-03 14:32

developer   ~0105039

git

2021-11-03 15:36

administrator   ~0105041

Branch CR32648_1 has been updated forcibly by kgv.

SHA-1: 17dabf6c755c60d51cce6459bd037072f85e48b7

kgv

2021-11-03 16:47

developer   ~0105042

Last edited: 2021-11-03 16:47

Patch caused tests failures on Jenkins due to older ANGLE libraries being loaded from qt5.11.2 installation instead of custom builds. The error occurs within the valid glBlitFramebuffer() call and lands somewhere inside ANGLE trying to create some shading program using D3D11:
  Failed to create shader resource view to resolve multisampled framebuffer.


Versions tracked from weird hash codes within ANGLE git, so it seems the bug has been fixed a while ago (problem is not reproducible in Browsers within WASM builds):

ANGLE 2.1.0.8613f4946861 from qt5.11.2-vc14-64 [2016-02-11]
KO, glBlitFramebuffer() fails with MSAA render buffer.

ANGLE 2.1.0-46ad513f4e5b (occt700products) [2016-08-13]
OK, but there is a bug with window resizing.

ANGLE 2.1.0-57ea533f79a7 from qtcreator-4.13, MinGW64 [2017-11-23]
OK.

kgv

2021-11-03 17:07

developer   ~0105043

Patch is ready for review
- OCCT: branch CR32648_1.

http://jenkins-test-12.nnov.opencascade.com:8080/view/CR32648_1-master-KGV/

osa

2021-11-15 10:27

developer   ~0105186

The patch was reviewed without remarks

bugmaster

2021-11-21 12:31

administrator   ~0105288

Combination -
OCCT branch : IR-2021-11-19
master SHA - ea0ffd6efe2e05d9764495fa0a877ab75ab5f4e9
49e51745631c52b6c452c65adae4d6dfa21a1b1e
Products branch : IR-2021-11-19 SHA - 24ac02cc67913557271bc70687b86b53e78f9c44
was compiled on Linux, MacOS and Windows platforms and tested in optimize mode.

Number of compiler warnings:
No new/fixed warnings

Regressions/Differences/Improvements:
No regressions/differences

CPU differences:
Debian80-64:
OCCT
Total CPU difference: 17763.090000000444 / 17742.320000000425 [+0.12%]
Products
Total CPU difference: 11658.550000000125 / 11669.660000000133 [-0.10%]
Windows-64-VC14:
OCCT
Total CPU difference: 19745.71875 / 19762.140625 [-0.08%]
Products
Total CPU difference: 13066.0625 / 12843.21875 [+1.74%]


Image differences :
No differences that require special attention

Memory differences :
No differences that require special attention

git

2021-11-21 13:00

administrator   ~0105307

Branch CR32648 has been deleted by mnt.

SHA-1: 212756699f60e97a00d06e9a73d298f785cee9da

git

2021-11-21 13:00

administrator   ~0105308

Branch CR32648_1 has been deleted by mnt.

SHA-1: 17dabf6c755c60d51cce6459bd037072f85e48b7

Related Changesets

occt: master c8365a1c

2021-11-02 13:23:25

kgv


Committer: inv Details Diff
0032648: Visualization, TKOpenGles - support MSAA anti-aliasing within WebGL 2.0

OpenGl_FrameBuffer::Init() now creates MSAA render buffer in case if MSAA textures are unsupported.
In this case OpenGl_View::prepareFrameBuffers() creates MSAA render buffer for main content
and non-MSAA FBO for immediate content as blitting of MSAA render buffers into MSAA targets is unsupported by OpenGL ES 3.0.

env.bat.in has been corrected to include path to custom ANGLE (GLES2_DIR)
in front of Qt which might include its own older ANGLE build.
Affected Issues
0032648
mod - adm/templates/env.bat.in Diff File
mod - src/OpenGl/OpenGl_Context.cxx Diff File
mod - src/OpenGl/OpenGl_Context.hxx Diff File
mod - src/OpenGl/OpenGl_FrameBuffer.cxx Diff File
mod - src/OpenGl/OpenGl_FrameBuffer.hxx Diff File
mod - src/OpenGl/OpenGl_Texture.cxx Diff File
mod - src/OpenGl/OpenGl_View.cxx Diff File
mod - src/OpenGl/OpenGl_Window.cxx Diff File

Issue History

Date Modified Username Field Change
2021-11-02 16:22 kgv New Issue
2021-11-02 16:22 kgv Assigned To => kgv
2021-11-02 16:23 git Note Added: 0105004
2021-11-02 22:57 kgv Test case number => opengles3/general/msaa
2021-11-02 22:57 kgv Steps to Reproduce Updated
2021-11-02 22:57 git Note Added: 0105026
2021-11-02 23:00 git Note Added: 0105027
2021-11-02 23:31 git Note Added: 0105028
2021-11-03 10:40 git Note Added: 0105032
2021-11-03 14:32 kgv Note Added: 0105039
2021-11-03 15:36 git Note Added: 0105041
2021-11-03 16:47 kgv Note Added: 0105042
2021-11-03 16:47 kgv Note Edited: 0105042
2021-11-03 16:47 kgv Note Edited: 0105042
2021-11-03 17:07 kgv Note Added: 0105043
2021-11-03 17:07 kgv Assigned To kgv => osa
2021-11-03 17:07 kgv Status new => resolved
2021-11-09 21:49 kgv Relationship added related to 0032647
2021-11-15 10:27 osa Note Added: 0105186
2021-11-15 10:27 osa Assigned To osa => bugmaster
2021-11-15 10:27 osa Status resolved => reviewed
2021-11-21 12:27 bugmaster Status reviewed => tested
2021-11-21 12:31 bugmaster Note Added: 0105288
2021-11-21 12:46 inv Changeset attached => occt master c8365a1c
2021-11-21 12:46 inv Assigned To bugmaster => inv
2021-11-21 12:46 inv Status tested => verified
2021-11-21 12:46 inv Resolution open => fixed
2021-11-21 13:00 git Note Added: 0105307
2021-11-21 13:00 git Note Added: 0105308