View Issue Details

IDProjectCategoryView StatusLast Update
0028912Open CASCADEOCCT:Visualizationpublic2019-11-29 20:15
Reporterkgv Assigned Tobugmaster  
PrioritynormalSeverityfeature 
Status closedResolutionfixed 
Target Version7.2.0Fixed in Version7.2.0 
Summary0028912: Visualization, TKOpenGl - multi-texture support
DescriptionIt is desired to allow custom GLSL programs using more then a one texture input.
TagsNo tags attached.
Test case numberv3d glsl texture_multi1

Relationships

parent of 0029503 closedapn Open CASCADE Visualization, TKOpenGl - fix access violation due to misprint in OpenGl_AspectMarker 
parent of 0030963 closedbugmaster Open CASCADE Visualization, TKOpenGl - texture unit error during FFP global texture's parameters processing 
parent of 0031096 closedbugmaster Open CASCADE Visualization, TKOpenGl - support metallic-roughness texture mapping 
related to 0030337 closedbugmaster Open CASCADE Draw Harness, ViewerTest - do not restrict vtexture to AIS_Shape 

Activities

git

2017-07-12 17:32

administrator   ~0068223

Branch CR28912 has been created by kgv.

SHA-1: b86f756ac87920650866f97e80e40e9b7d36dbf4


Detailed log of new commits:

Author: kgv
Date: Mon Jul 10 15:43:25 2017 +0300

    0028912: Visualization, TKOpenGl - multi-texture support
    
    Graphic3d_AspectFillArea3d now stores array of textures.
    Graphic3d_TextureParams stores texture unit for mapping texture.
    
    OpenGl_Context::BindTextures() - context now manages the set of active textures.
    Related code has been removed from OpenGl_Workspace.
    
    OpenGl_Sampler has been extended to hold texture parameters structure.
    OpenGl_Texture now holds OpenGl_Sampler instance as class field.
    OpenGl_Texture inherits new class OpenGl_NamedResource and holds
    texture identifier used for sharing resource in OpenGl_Context.
    
    OpenGl_RaytraceGeometry now creates bindless textures taking
    Sampler object directly from OpenGl_Texture.
    OpenGl_Context::BindTextures() automatically recreates immutable
    Sampler Object on texture parameters change.
    
    Declared new structure OpenGl_ArbSamplerObject for platform-neutral
    usage of related functionality.
    Related functions are now loaded within OpenGL ES 3.0+.
    
    Declarations.glsl - occActiveSampler has been renamed to occSampler0
    with aliases occSamplerBaseColor (main) and occActiveSampler (for compatibility).
    Additional texture samplers should be declared explicitly
    within specific GLSL program as occSampler1, occSampler2, etc.
    
    AIS_Shape and AIS_ColoredShape now computes Shaded presentation
    with UV coordinates if texture mapping is enabled in Drawer.
    
    vaspects - added new parameter "-settexture".
    vshaderprog now accepts Shader source code as parameter.

git

2017-07-12 18:50

administrator   ~0068227

Branch CR28912 has been updated forcibly by kgv.

SHA-1: 7844843e74f1b90cc01110ee7839a1ea1ac3dbb6

git

2017-07-13 08:42

administrator   ~0068235

Branch CR28912 has been updated forcibly by kgv.

SHA-1: 2ecd6455b6472d207fa1ab159d5d6b1119ddbc15

git

2017-07-13 09:54

administrator   ~0068238

Branch CR28912_1 has been created by kgv.

SHA-1: 5ccad424b012b1359f68959dbc00e75cb536f276


Detailed log of new commits:

Author: kgv
Date: Mon Jul 10 15:43:25 2017 +0300

    0028912: Visualization, TKOpenGl - multi-texture support
    
    Graphic3d_AspectFillArea3d now stores array of textures.
    Graphic3d_TextureParams stores texture unit for mapping texture.
    
    OpenGl_Context::BindTextures() - context now manages the set of active textures.
    Related code has been removed from OpenGl_Workspace.
    
    OpenGl_Sampler has been extended to hold texture parameters structure.
    OpenGl_Texture now holds OpenGl_Sampler instance as class field.
    OpenGl_Texture inherits new class OpenGl_NamedResource and holds
    texture identifier used for sharing resource in OpenGl_Context.
    
    OpenGl_RaytraceGeometry now creates bindless textures taking
    Sampler object directly from OpenGl_Texture.
    OpenGl_Context::BindTextures() automatically recreates immutable
    Sampler Object on texture parameters change.
    
    Declared new structure OpenGl_ArbSamplerObject for platform-neutral
    usage of related functionality.
    Related functions are now loaded within OpenGL ES 3.0+.
    
    Declarations.glsl - occActiveSampler has been renamed to occSampler0
    with aliases occSamplerBaseColor (main) and occActiveSampler (for compatibility).
    Additional texture samplers should be declared explicitly
    within specific GLSL program as occSampler1, occSampler2, etc.
    
    AIS_Shape and AIS_ColoredShape now computes Shaded presentation
    with UV coordinates if texture mapping is enabled in Drawer.
    
    vaspects - added new parameter "-settexture".
    vshaderprog now accepts Shader source code as parameter.

git

2017-07-13 09:55

administrator   ~0068239

Branch CR28912_1 has been updated forcibly by kgv.

SHA-1: 9d124126c449cf4cbb43f97c7bdfcc42ac71c305

kgv

2017-07-13 09:56

developer   ~0068240

Patch is ready for review.

git

2017-07-13 09:57

administrator   ~0068241

Branch CR28912_1 has been updated forcibly by kgv.

SHA-1: 40ad3818e87e4b534c97d4fc64eff1281efea9f0

git

2017-07-13 14:38

administrator   ~0068257

Branch CR28912_1 has been updated forcibly by kgv.

SHA-1: e1b952f2e0e0aedd4624f84e113faa5212720e71

git

2017-07-17 09:57

administrator   ~0068329

Branch CR28912_1 has been updated forcibly by kgv.

SHA-1: 7e15b446b21745f16cd1fa98d75f040190b20b8a

git

2017-07-18 10:54

administrator   ~0068397

Branch CR28912_2 has been created by kgv.

SHA-1: 2ad0bc5f718a79a51f6f3decebc78801f8c8022c


Detailed log of new commits:

Author: kgv
Date: Mon Jul 10 15:43:25 2017 +0300

    0028912: Visualization, TKOpenGl - multi-texture support
    
    Graphic3d_AspectFillArea3d now stores array of textures.
    Graphic3d_TextureParams stores texture unit for mapping texture.
    
    OpenGl_Context::BindTextures() - context now manages the set of active textures.
    Related code has been removed from OpenGl_Workspace.
    
    OpenGl_Sampler has been extended to hold texture parameters structure.
    OpenGl_Texture now holds OpenGl_Sampler instance as class field.
    OpenGl_Texture inherits new class OpenGl_NamedResource and holds
    texture identifier used for sharing resource in OpenGl_Context.
    
    OpenGl_RaytraceGeometry now creates bindless textures taking
    Sampler object directly from OpenGl_Texture.
    OpenGl_Context::BindTextures() automatically recreates immutable
    Sampler Object on texture parameters change.
    
    Declared new structure OpenGl_ArbSamplerObject for platform-neutral
    usage of related functionality.
    Related functions are now loaded within OpenGL ES 3.0+.
    
    Declarations.glsl - occActiveSampler has been renamed to occSampler0
    with aliases occSamplerBaseColor (main) and occActiveSampler (for compatibility).
    Additional texture samplers should be declared explicitly
    within specific GLSL program as occSampler1, occSampler2, etc.
    
    AIS_Shape and AIS_ColoredShape now computes Shaded presentation
    with UV coordinates if texture mapping is enabled in Drawer.
    
    vshaderprog now accepts Shader source code as parameter.

kgv

2017-07-18 19:11

developer   ~0068417

CR28912_2-CR28912-KGV-Products-Debian70-64-opt-tests-compare-linux - Build # 1 - Successful:
Check console output at http://jenkins-test-10.nnov.opencascade.com:8080/job/CR28912_2-CR28912-KGV-Products-Debian70-64-opt-tests-compare-linux/1/ to view the results.

CR28912_2-CR28912-KGV-Products-Windows-64-VC10-opt-tests-compare-windows - Build # 1 - Successful:
Check console output at http://jenkins-test-10.nnov.opencascade.com:8080/job/CR28912_2-CR28912-KGV-Products-Windows-64-VC10-opt-tests-compare-windows/1/ to view the results.

apl

2017-07-19 16:52

developer   ~0068435

Dear bugmaster,

The patch is reviewed.

bugmaster

2017-07-20 08:43

administrator   ~0068462

Kirill,
Diff images:
http://occt-tests/CR28912_2-CR28912-KGV-OCCT/Debian70-64/diff-Debian70-64-image.html
http://occt-tests/CR28912_2-CR28912-KGV-OCCT/Windows-64-VC10/diff-Windows-64-VC10-image.html

Linux and Windows:
Improvement
IMAGE bugs vis bug23385: bug23385.png differs

Windows:
The text on image became poorly readable.
IMAGE demo samples cpu: cpu.png differs

kgv

2017-07-20 08:54

developer   ~0068463

> The text on image became poorly readable.
> IMAGE demo samples cpu: cpu.png differs
This is unrelated to this patch - I've seen this difference randomly occurred on this test case while testing other patches for a long time.

bugmaster

2017-07-20 09:10

administrator   ~0068465

Last edited: 2017-07-20 09:13

Branch CR28912_2 from occt git-repository and CR28912 from products git-repository was compiled on Linux, MacOS and Windows platforms and tested on Release mode.
OCCT SHA-1: 2ad0bc5f718a79a51f6f3decebc78801f8c8022c
Products SHA-1: febcd5194f88bc3922206dc3d5186f4cfef34672
Number of compiler warnings:

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

products component :
Linux: 10 (10 on master)
Windows: 0 (0 on master)
MacOS : 28 (28 on master)

Regressions/Differences/Improvements:
No regressions/differences

Testing cases:
v3d glsl texture_multi1

Testing on Linux:
occt component :
Total CPU difference: 19279.920000000177 / 19401.700000000146 [-0.63%]
Total MEMORY difference: 92466631 / 92413321 [+0.06%]
products component :
Total CPU difference: 6488.360000000054 / 6548.950000000075 [-0.93%]
Total MEMORY difference: 38168914 / 38040477 [+0.34%]
Testing on Windows:
occt component :
Total CPU difference: 18113.432110998503 / 17787.48362159872 [+1.83%]
Total MEMORY difference: 59104753 / 59107100 [-0.00%]
products component :
Total CPU difference: 6815.418488300055 / 6684.861251400067 [+1.95%]
Total MEMORY difference: 28934014 / 28820451 [+0.39%]

There are differences in images found by testdiff.
Improvement
IMAGE bugs vis bug23385: bug23385.png differs
The text on image became poorly readable.
IMAGE demo samples cpu: cpu.png differs
Differences were agreed by KGV

git

2017-07-21 16:15

administrator   ~0068571

Branch CR28912 has been deleted by kgv.

SHA-1: 2ecd6455b6472d207fa1ab159d5d6b1119ddbc15

git

2017-07-21 16:15

administrator   ~0068572

Branch CR28912_1 has been deleted by kgv.

SHA-1: 7e15b446b21745f16cd1fa98d75f040190b20b8a

git

2017-07-21 16:15

administrator   ~0068573

Branch CR28912_2 has been deleted by kgv.

SHA-1: 2ad0bc5f718a79a51f6f3decebc78801f8c8022c

Related Changesets

occt: master cc8cbabe

2017-07-10 12:43:25

kgv


Committer: bugmaster Details Diff
0028912: Visualization, TKOpenGl - multi-texture support

Graphic3d_AspectFillArea3d now stores array of textures.
Graphic3d_TextureParams stores texture unit for mapping texture.

OpenGl_Context::BindTextures() - context now manages the set of active textures.
Related code has been removed from OpenGl_Workspace.

OpenGl_Sampler has been extended to hold texture parameters structure.
OpenGl_Texture now holds OpenGl_Sampler instance as class field.
OpenGl_Texture inherits new class OpenGl_NamedResource and holds
texture identifier used for sharing resource in OpenGl_Context.

OpenGl_RaytraceGeometry now creates bindless textures taking
Sampler object directly from OpenGl_Texture.
OpenGl_Context::BindTextures() automatically recreates immutable
Sampler Object on texture parameters change.

Declared new structure OpenGl_ArbSamplerObject for platform-neutral
usage of related functionality.
Related functions are now loaded within OpenGL ES 3.0+.

Declarations.glsl - occActiveSampler has been renamed to occSampler0
with aliases occSamplerBaseColor (main) and occActiveSampler (for compatibility).
Additional texture samplers should be declared explicitly
within specific GLSL program as occSampler1, occSampler2, etc.

AIS_Shape and AIS_ColoredShape now computes Shaded presentation
with UV coordinates if texture mapping is enabled in Drawer.

vshaderprog now accepts Shader source code as parameter.
Affected Issues
0028912
mod - src/Graphic3d/FILES Diff File
mod - src/Graphic3d/Graphic3d_AspectFillArea3d.cxx Diff File
mod - src/Graphic3d/Graphic3d_AspectFillArea3d.hxx Diff File
mod - src/Graphic3d/Graphic3d_ClipPlane.cxx Diff File
mod - src/Graphic3d/Graphic3d_ClipPlane.hxx Diff File
mod - src/Graphic3d/Graphic3d_TextureParams.cxx Diff File
mod - src/Graphic3d/Graphic3d_TextureParams.hxx Diff File
mod - src/Graphic3d/Graphic3d_TextureRoot.hxx Diff File
add - src/Graphic3d/Graphic3d_TextureSet.cxx Diff File
add - src/Graphic3d/Graphic3d_TextureSet.hxx Diff File
add - src/Graphic3d/Graphic3d_TextureUnit.hxx Diff File
mod - src/Graphic3d/Graphic3d_TypeOfLimit.hxx Diff File
mod - src/OpenGl/FILES Diff File
add - src/OpenGl/OpenGl_ArbSamplerObject.hxx Diff File
mod - src/OpenGl/OpenGl_AspectFace.cxx Diff File
mod - src/OpenGl/OpenGl_AspectFace.hxx Diff File
mod - src/OpenGl/OpenGl_AspectMarker.cxx Diff File
mod - src/OpenGl/OpenGl_AspectMarker.hxx Diff File
mod - src/OpenGl/OpenGl_BackgroundArray.cxx Diff File
mod - src/OpenGl/OpenGl_CappingPlaneResource.cxx Diff File
mod - src/OpenGl/OpenGl_Context.cxx Diff File
mod - src/OpenGl/OpenGl_Context.hxx Diff File
mod - src/OpenGl/OpenGl_Font.cxx 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
add - src/OpenGl/OpenGl_NamedResource.hxx Diff File
mod - src/OpenGl/OpenGl_PointSprite.cxx Diff File
mod - src/OpenGl/OpenGl_PointSprite.hxx Diff File
mod - src/OpenGl/OpenGl_PrimitiveArray.cxx Diff File
mod - src/OpenGl/OpenGl_Resource.cxx Diff File
mod - src/OpenGl/OpenGl_Sampler.cxx Diff File
mod - src/OpenGl/OpenGl_Sampler.hxx Diff File
mod - src/OpenGl/OpenGl_SceneGeometry.cxx Diff File
mod - src/OpenGl/OpenGl_SceneGeometry.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_Structure.cxx Diff File
mod - src/OpenGl/OpenGl_Text.cxx Diff File
mod - src/OpenGl/OpenGl_Texture.cxx Diff File
mod - src/OpenGl/OpenGl_Texture.hxx Diff File
mod - src/OpenGl/OpenGl_TextureBufferArb.cxx Diff File
mod - src/OpenGl/OpenGl_TextureBufferArb.hxx Diff File
add - src/OpenGl/OpenGl_TextureSet.cxx Diff File
add - src/OpenGl/OpenGl_TextureSet.hxx Diff File
mod - src/OpenGl/OpenGl_View.cxx Diff File
mod - src/OpenGl/OpenGl_View.hxx Diff File
mod - src/OpenGl/OpenGl_View_Raytrace.cxx 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/Shaders_Declarations_glsl.pxx Diff File
mod - src/ViewerTest/ViewerTest.cxx Diff File
mod - src/ViewerTest/ViewerTest_OpenGlCommands.cxx Diff File
add - tests/v3d/glsl/texture_multi1 Diff File

Issue History

Date Modified Username Field Change
2017-07-12 09:58 kgv New Issue
2017-07-12 09:58 kgv Assigned To => kgv
2017-07-12 17:32 git Note Added: 0068223
2017-07-12 18:50 git Note Added: 0068227
2017-07-13 08:42 git Note Added: 0068235
2017-07-13 09:54 git Note Added: 0068238
2017-07-13 09:55 git Note Added: 0068239
2017-07-13 09:56 kgv Note Added: 0068240
2017-07-13 09:56 kgv Assigned To kgv => apl
2017-07-13 09:56 kgv Status new => resolved
2017-07-13 09:57 git Note Added: 0068241
2017-07-13 14:38 git Note Added: 0068257
2017-07-17 09:57 git Note Added: 0068329
2017-07-18 10:54 git Note Added: 0068397
2017-07-18 19:11 kgv Note Added: 0068417
2017-07-19 16:52 apl Note Added: 0068435
2017-07-19 16:52 apl Assigned To apl => bugmaster
2017-07-19 16:52 apl Status resolved => reviewed
2017-07-19 19:22 mkv Assigned To bugmaster => mkv
2017-07-20 08:43 bugmaster Note Added: 0068462
2017-07-20 08:43 bugmaster Status reviewed => feedback
2017-07-20 08:54 kgv Note Added: 0068463
2017-07-20 09:10 bugmaster Note Added: 0068465
2017-07-20 09:10 bugmaster Status feedback => tested
2017-07-20 09:11 bugmaster Test case number => v3d glsl texture_multi1
2017-07-20 09:13 bugmaster Note Edited: 0068465
2017-07-20 09:57 bugmaster Assigned To mkv => bugmaster
2017-07-21 16:08 bugmaster Changeset attached => occt master cc8cbabe
2017-07-21 16:08 bugmaster Status tested => verified
2017-07-21 16:08 bugmaster Resolution open => fixed
2017-07-21 16:15 git Note Added: 0068571
2017-07-21 16:15 git Note Added: 0068572
2017-07-21 16:15 git Note Added: 0068573
2017-09-29 16:17 aiv Fixed in Version => 7.2.0
2017-09-29 16:29 aiv Status verified => closed
2018-02-14 00:01 kgv Relationship added related to 0029503
2018-02-14 00:02 kgv Relationship replaced parent of 0029503
2018-11-02 18:44 kgv Relationship added related to 0030337
2019-09-12 16:20 kgv Relationship added parent of 0030963
2019-11-29 20:15 kgv Relationship added parent of 0031096