0032969: Coding - get rid of unused headers [IMeshData to PLib] Removed unused exception classes OSD_Exception_FLT_DIVIDE_BY_ZERO, OSD_Exception_INT_DIVIDE_BY_ZERO, OSD_Exception_FLT_DENORMAL_OPERAND, OSD_Exception_FLT_INEXACT_RESULT, OSD_Exception_FLT_INVALID_OPERATION, OSD_Exception_FLT_OVERFLOW, OSD_Exception_FLT_STACK_CHECK, OSD_Exception_FLT_UNDERFLOW.
0032758: Visualization, TKOpenGl - disable shadow-map from transform-persistence objects OpenGl_View::renderShadowMap() now skips transform-persistent objects. OpenGl_ShadowMap::UpdateCamera() - removed redundant Z-range expansion for non-rendered objects. Improved syntax of vdrawtext command.
0032713: Visualization, OpenGl_GlFunctions - unify OpenGL and OpenGL ES function lists Including system OpenGL headers has been moved from OpenGl_GlFunctions.hxx to OpenGl_GlNative.hxx. Added OpenGl_GlTypes.hxx providing basic OpenGL 1.1 types. Wrappers of system OpenGL 1.1 / OpenGL ES 2.0 functions have been moved to OpenGl_GlFunctions.cxx. Avoided usage of global OpenGL functions in OpenGl package outside of OpenGl_GlFunctions.cxx.
0032349: Visualization, TKOpenGl - move base buffer interface out from OpenGl_VertexBuffer class to OpenGl_Buffer OpenGl_Buffer - added new class as a base for OpenGl_VertexBuffer, OpenGl_IndexBuffer, OpenGl_TextureBuffer. OpenGl_TextureBufferArb has been renamed to OpenGl_TextureBuffer. OpenGl_FrameBuffer - added initializers taking vec2i instead of (int,int) for dimensions.
0032289: Visualization - add NCollection_Mat3 for 3x3 matrix similar to NCollection_Mat4 Introduced NCollection_Mat3 class similar to NCollection_Mat4. Added NCollection_Mat4::operator() alias to NCollection_Mat4::Value(). Added NCollection_Mat4::Negated(), ::Subtracted(), ::Added(), ::Divided() operations. Added a note to NCollection_Mat4::GetData() that matrix values are stored in column-major order. Removed duplicated operator== operators from NCollection_Mat4/NCollection_Vec4/NCollection_Vec3/NCollection_Vec2 classes. Removed obsolete and no more used matrix state fields from OpenGl_Workspace. Removed obsoiete structure OpenGl_Matrix (replaced by OpenGl_Mat4). OpenGl_ShaderProgram - duplicated methods have been replaced by templates.
0032217: Visualization, TKOpenGl - drop propagation of unused FFP functions OpenGl_GlFunctions no more loads unused FFP functions. OpenGl_GlCoreXX function tables no more defined two hierarchies with and without FFP functions, and OpenGl_Context::coreXXback fields have been removed. Introduced OpenGl_Context::core11ffp as more straightforward naming for obsolete FFP function set.
0032201: Visualization, TKOpenGl - unify Phong/PBR material properties getters Graphic3d_ShaderManager::stdComputeLighting() - implementation has been adjusted for better consistency between PBR / non-PBR. OpenGl_Material definition has been modified to join Front/Back pair into a single uniform variable. Common material definition now occupies 4x2 vec4 instead of 5x2 vec4. Getters of Common material properties within Declarations.glsl have been renamed to match PBR material syntax (e.g. take IsFront flag as function argument). Auxliary macros (like occTextureColor()) has been renamed (like occMaterialBaseColor()) and adjusted to return material property directly instead of taking it as argument.
0030640: Visualization, Graphic3d_Camera - add option creating Projection matrix with [0,1] depth range Added new property Graphic3d_Camera::IsZeroToOneDepth() and OpenGl_Caps::useZeroToOneDepth for activating [0,1] depth range instead of [-1,1] range using glClipControl() within OpenGL 4.5+.
0032188: Visualization, Graphic3d_Aspects - define backface culling using Graphic3d_TypeOfBackfacingModel Graphic3d_Aspects::ToSuppressBackFaces() bool flag has been replaced by Graphic3d_Aspects::FaceCulling() property defined by Graphic3d_TypeOfBackfacingModel enumeration. Graphic3d_TypeOfBackfacingModel_Auto corresponds to old ToSuppressBackFaces()==TRUE; Graphic3d_TypeOfBackfacingModel_DoubleSided corresponds to old ToSuppressBackFaces()==FALSE; Graphic3d_TypeOfBackfacingModel_BackCulled allows enabling back face culling regardless of Graphic3d_Group::IsClosed() flag. XCAFDoc_VisMaterial::IsDoubleSided() bool flag has been replaced by XCAFDoc_VisMaterial::FaceCulling() property defined by Graphic3d_TypeOfBackfacingModel enumeration. glTF reader now maps "doubleSided" material flag into Graphic3d_TypeOfBackfacingModel_BackCulled (forced back face culling) and Graphic3d_TypeOfBackfacingModel_Auto (e.g. practically doubleSided as there is no closed/open info in glTF). glTF writer by default writes materials as "doubleSided" save the Graphic3d_TypeOfBackfacingModel_BackCulled property set (in future, extra logic might written for automatically defining singleSided materials for Solid B-Rep objects). Removed obsolete unused types V3d_TypeOfPickCamera, V3d_TypeOfPickLight, V3d_TypeOfRepresentation, and V3d_Coordinate. Deprecated types V3d_TypeOfBackfacingModel, V3d_TypeOfLight, and V3d_TypeOfShadingModel.
0032150: Visualization, TKOpenGl - ignore OpenGl_Caps::ffpEnable when FFP is unavailable OpenGl_Workspace::Activate() now implicitly disables OpenGl_Caps::ffpEnable when it is unsupported. OpenGl_AspectsSprite::build() now ignores OpenGl_Caps::pntSpritesDisable when Display Lists are unsupported.
0027130: Visualization, Ray tracing - skip structures with transformation persistence flag Objects with transform persistence are detected as non ray-tracable and redered using the rasterization approach. The renderFiltered() method moved to the OpenGl_Group class. v3d/raytrace/bug27130: test case added
0031313: Foundation Classes - Dump improvement for classes - Provide DumpJson for geometrical, ocaf and visualization classes; - Change depth parameter of DumpJson (constant is not obligate here) - Introduce a new macro for transient objects to be called as the first row in DumpJson: OCCT_DUMP_TRANSIENT_CLASS_BEGIN. We need not put the class name in the macro, using get_type_name of Standard_Transient for it. - change implementation of OCCT_DUMP_CLASS_BEGIN and OCCT_DUMP_TRANSIENT_CLASS_BEGIN. It is not an sentry more and it does not create a new hierarchy level. It appends a new row into the output stream: "className": <className> - OCCT_DUMP_* does not require semicolon - class header is included first in source files of TDataStd, TDocStd, TCAFDoc
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.