0031571: Visualization, TKOpenGl - provide depth peeling OIT option Graphic3d_RenderTransparentMethod has been extended by Graphic3d_RTM_DEPTH_PEELING_OIT, which is handled by OpenGl_LayerList::renderTransparent(). OpenGl_FrameBuffer::Init() now does not silently ignore unknown color attachment format and return failure. OpenGl_FrameBuffer::InitWrapper() - added constructor wrapping existing color textures. v3d/transparency/oit: test case added
0032039: Visualization, TKOpenGl - implement simple shadow mapping for a direct light source Graphic3d_CLight::ToCastShadows() - added new property defining if light should cast shadows (ignored by Ray-Tracing). OpenGl_ShaderManager::stdComputeLighting() now implements shadow mapping for directional lights. OpenGl_ShaderManager::prepareGeomMainSrc() now handles copying of arrays. OpenGl_Context::ShadowMapTexUnit() - added property defining an offset for shadow map texture units. OpenGl_ShadowMap - added new class storing shadow map FBO with parameters. OpenGl_View::prepareFrameBuffers() - added resizing of shadow map FBOs. OpenGl_View::Redraw() - added section redrawing scene into shadow map FBOs via OpenGl_View::renderShadowMap() method. vrenderparams - added new parameters -shadowMapResolution and -shadowMapBias.
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.
0030700: Visualization, TKOpenGl - support PBR Metallic-Roughness shading model Metallic-Roughness shading model Graphic3d_TOSM_PBR has been implemented. New materials descriptors Graphic3d_PBRMaterial have been added to Graphic3d_MaterialAspect. PBR shading model requires OpenGL 3.0+ or OpenGL ES 3.0+ hardware. Environment cubemap is expected to be provided for realistic look of metallic materials. occLight_IsHeadlight() now returns bool instead of int. Avoid using lowp for enumerations to workaround occLight_IsHeadlight() ignorance on Adreno 308 caused by some GLSL optimizator bugs. OpenGl_Texture::EstimatedDataSize() - fixed estimation for Cubemap textures. OpenGl_Sampler::applySamplerParams() - fixed uninitialized GL_TEXTURE_WRAP_R in case of GL_TEXTURE_CUBE_MAP target.
0030571: Visualization, TKOpenGl - mapped texture is ignored while drawing points OpenGl_AspectsTextureSet now appends Sprite texture to the end of texture set. OpenGl_Context::init() - fixed usage of GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS on too old GL context. Default sampler names occSampler0, occActiveSampler and occSamplerBaseColor are now excluded from header with common declarations for build-in GLSL programs. OpenGl_ShaderObject::LoadAndCompile() and OpenGl_ShaderProgram::Link() now includes program Id within error log. OpenGl_ShaderManager now supports mapping texture onto point primitive within built-in programs (texture transformation is ignored).
0029337: Visualization, TKOpenGl - visual artifacts on Intel Broadwell GPU Enable multiple draw buffers in shader program only if its required by specific application. occSetFragColor() - a new GLSL function has been introduced as an alternative to setting occFragColor/occFragCoverage variables.
0029283: Visualization - allow defining more than 8 light sources OpenGl_ShaderManager now overrides THE_MAX_LIGHTS within built-in shading programs so that maximum number of lights is now limited only by OpenGL hardware (e.g. length of GLSL program, number of defined uniforms, result performance, etc.). THE_MAX_CLIP_PLANES is now also defined by OpenGl_ShaderManager, so that unused lights and clipping planes do not reserve extra uniforms in GLSL programs. V3d_View::SetLightOn() does not throw exception anymore, when the number of lights exceeds 8. Instead, OpenGl_ShaderManager::PushLightSourceState() emits warning in case of usage of FFP providing consistent behavior with Clipping Planes number limit.
0026937: Eliminate NO_CXX_EXCEPTION macro support Macro NO_CXX_EXCEPTION was removed from code. Method Raise() was replaced by explicit throw statement. Method Standard_Failure::Caught() was replaced by normal C++mechanism of exception transfer. Method Standard_Failure::Caught() is deprecated now. Eliminated empty constructors. Updated samples. Eliminate empty method ChangeValue from NCollection_Map class. Removed not operable methods from NCollection classes.
0027258: Configuration - generate built-in replacement for mandatory resource files Generation of header files from resource files was added to CMake and genproj procedures. Message_MsgFile has been extended with new method ::LoadFromString() for loading messages from embedded resources. Message_MsgFile::LoadFromString() is now a preferred way for loading message resources by application as alternative to environment variables. TObje/TObj.msg is now embedded into TObj_Application.cxx. TObj_Application now loads its global messages on instantiation of the first class instance. UnitsAPI/Lexi_Expr.dat now completely embedded into Units_Lexicon.cxx. UnitsAPI/Units.dat now embedded into Units_UnitsDictionary.cxx but can be regenerated from resource file. The definition of the following units have been removed: benne à charbon, calorie (diététique). Unused message files XSMessage/IGES.us and IGES.fr have been removed. Related code IGESData.cxx has been removed as well. XSMessage/XSTEP.us is now embedded into Interface_StaticStandards.cxx and used for fallback initialization in case when file resources defined by CSF_XSMessage environment variable are missing. SHMessage/SHAPE.us is now embedded into ShapeExtend.cxx and used for fallback initialization in case when file resources defined by CSF_XHMessage environment variable are missing. Duplicating code has been removed from ShapeProcess_OperLibrary.cxx. Shaders/Declarations.glsl and Shaders/DeclarationsImpl.glsl are now embedded into OpenGl_ShaderProgram.cxx. CSF_ShadersDirectory is no more required for using OCCT 3D Viewer. Ray-Tracing GLSL programs from Shaders are now embedded into OpenGl_View_Raytrace.cxx. File resources are still used instead of embedded programs when CSF_ShadersDirectory is defined, but this functionality is intended for OCCT development. Enumeration Graphic3d_ShaderProgram::ShaderName_Phong demonstrating custom GLSL program usage has been removed.
0026969: Visualization - support custom vertex attributes in GLSL program Graphic3d_TypeOfData - added Graphic3d_TOD_FLOAT for passing single-float vertex attributes. Graphic3d_TOA_CUSTOM - changed value to increase the range for custom vertex attributes locations (to fit into hardware limits). Graphic3d_ShaderProgram::SetVertexAttributes() - introduced API for defining custom vertex attributes. For compatibility with automated wrappers: - Graphic3d_Buffer::Init() - added prototype taking NCollection_Array1<Graphic3d_Attribute> instead of C array - Graphic3d_IndexBuffer::InitInt32() - added typed initialization method. - Graphic3d_ShaderProgram::PushVariableVec3() and others - added typed methods to push uniform varibales.
0024624: Lost word in license statement in source files License statement text corrected; compiler warnings caused by Bison 2.41 disabled for MSVC; a few other compiler warnings on 54-bit Windows eliminated by appropriate type cast Wrong license statements corrected in several files. Copyright and license statements added in XSD and GLSL files. Copyright year updated in some files. Obsolete documentation files removed from DrawResources.