0031096: Visualization, TKOpenGl - support metallic-roughness texture mapping IR-2019-11-29
authoriko <iko@opencascade.com>
Thu, 7 Nov 2019 13:52:53 +0000 (16:52 +0300)
committerbugmaster <bugmaster@opencascade.com>
Fri, 29 Nov 2019 17:36:23 +0000 (20:36 +0300)
commit72f6dc612c43748a2c8862fe64c845d72be684d9
tree0ddf22eb29c3eae32af9baff4d5898a5d3abd766
parentf051908edca40189922731890778055f9af7a00e
0031096: Visualization, TKOpenGl - support metallic-roughness texture mapping

OpenGl_ShaderManager - metallic-roughness, emissive, occlusion
and normal texture maps are now supported by PBR.
Emissive, occlusion and normal texture maps are now supported by Phong shading model.
Path-Tracing now handles metallic-roughness and emissive texture maps.

Graphic3d_TextureUnit enumeration has been extended by
new values corresponding to supported texture maps.

OpenGl_TextureSet and OpenGl_ShaderProgram have been extended with
bitmask Graphic3d_TextureSetBits identifying texture slots read from GLSL Program
and slots defined within Texture Set to avoid undefined behavior by binding mock textures.

OpenGl_TextureSet now duplicates texture unit information to handle
textures shared across multiple slots (like Occlusion [R] + Metallic-Roughness [GB]).

OpenGl_Context::BindTextures() has been extended with active GLSL program paramter
to set mock textures to texture units used by program but undefined by texture set.
OpenGl_Workspace::ApplyAspects() has been extended with parameter to avoid bining texture set.
35 files changed:
src/Graphic3d/FILES
src/Graphic3d/Graphic3d_BSDF.cxx
src/Graphic3d/Graphic3d_ShaderProgram.cxx
src/Graphic3d/Graphic3d_ShaderProgram.hxx
src/Graphic3d/Graphic3d_TextureSetBits.hxx [new file with mode: 0644]
src/Graphic3d/Graphic3d_TextureUnit.hxx
src/OpenGl/OpenGl_AspectsTextureSet.cxx
src/OpenGl/OpenGl_Context.cxx
src/OpenGl/OpenGl_Context.hxx
src/OpenGl/OpenGl_LayerList.cxx
src/OpenGl/OpenGl_PrimitiveArray.cxx
src/OpenGl/OpenGl_SetOfShaderPrograms.hxx
src/OpenGl/OpenGl_ShaderManager.cxx
src/OpenGl/OpenGl_ShaderManager.hxx
src/OpenGl/OpenGl_ShaderProgram.cxx
src/OpenGl/OpenGl_ShaderProgram.hxx
src/OpenGl/OpenGl_Structure.cxx
src/OpenGl/OpenGl_Text.cxx
src/OpenGl/OpenGl_Texture.hxx
src/OpenGl/OpenGl_TextureSet.cxx
src/OpenGl/OpenGl_TextureSet.hxx
src/OpenGl/OpenGl_View.cxx
src/OpenGl/OpenGl_View_Raytrace.cxx
src/OpenGl/OpenGl_View_Redraw.cxx
src/OpenGl/OpenGl_Workspace.cxx
src/OpenGl/OpenGl_Workspace.hxx
src/Shaders/Declarations.glsl
src/Shaders/DeclarationsImpl.glsl
src/Shaders/PathtraceBase.fs
src/Shaders/Shaders_DeclarationsImpl_glsl.pxx
src/Shaders/Shaders_Declarations_glsl.pxx
src/Shaders/Shaders_PathtraceBase_fs.pxx
src/XCAFDoc/XCAFDoc_VisMaterial.cxx
src/XCAFPrs/XCAFPrs_Texture.cxx
tests/v3d/raytrace/helmet [new file with mode: 0644]