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.
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.
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.
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
0029570: Visualization, Graphic3d_Aspect - merge Graphic3d_Group aspects Graphic3d_AspectFillArea3d, Graphic3d_AspectLine3d, Graphic3d_AspectMarker3d and Graphic3d_AspectText3d have been merged into new class Graphic3d_Aspects. The old classes are preserved as dummy sub-classes of Graphic3d_Aspects preserving different per-aspect defaults. Methods IsGroupPrimitivesAspectSet(), GroupPrimitivesAspect(), FillAreaAspect(), LineAspect() and MarkerAspect() have been removed from Graphic3d_Group. Instead, a new method Graphic3d_Group::ReplaceAspects() has been introduced for replacing existing group aspects. AIS_Shape now uses new method AIS_InteractiveObject::replaceAspects() for updating computed groups with new aspects without presentation recomputation in places where SynchronizeAspects() is not applicable. OpenGl_AspectFace, OpenGl_AspectLine, OpenGl_AspectMarker and OpenGl_AspectText have been merged into new class OpenGl_Aspects. ViewerTest::parseColor() - fix uninitialized alpha component. Graphic3d_AspectText3d/Prs3d_TextAspect - removed unused properties Space, ExpansionFactor, Angle. Remove getters Values() deprecated since OCCT 7.1.0.
0029874: Visualization - capping plane transparency does not work Interface OpenGl_RenderFilter and its implementations have been merged into OpenGl_Workspace. This limits flexibility of interface, but simplifies logic. - OpenGl_RenderFilter_FillModeOnly flag replaces OpenGl_CappingAlgoFilter; - OpenGl_RenderFilter_NonRaytraceableOnly flag replaces OpenGl_RaytraceFilter; - OpenGl_RenderFilter_OpaqueOnly flag replaces OpenGl_OpaqueFilter; - OpenGl_RenderFilter_TransparentOnly flag replaces OpenGl_TransparentFilter. OpenGl_CappingAlgo now: - avoids redundant Stencil clearing when Layer contains at least one transparent Element; - renders semitransparent capping plane within transparent elements pass. vclipplane command has been extended by new argument -transparency.
0029729: Visualization, Graphic3d_ClipPlane - add support of clipping plane chains Graphic3d_ClipPlane now can define a Chain of Planes (logical AND). OpenGl_ShaderManager - added new GLSL sub-programs for clipping plane chains. Bnd_Range::TrimFrom(), ::TrimTo() - added auxiliary methods for trimming the range. SelectMgr_ViewClipRange now handles non-continuous clipping range. Graphic3d_SequenceOfHClipPlane now aggregates NCollection_Sequence instead of inheritance. OpenGl_CappingPlaneResource - triangulation has been adjusted to make front face following CCW order.
0029074: Visualization, TKOpenGl - support Geometry Shader definition Graphic3d_TypeOfShaderObject enumeration has been extended by Geometry shader object type. OpenGl_ShaderProgram::Initialize() processes new shader object types when supported by OpenGL version. Declarations.glsl has been fixed so that occFragColor is defined only for Fragment Shader object only (by handling new FRAGMENT_SHADER macros). Improved documentation of Graphic3d_ArrayOfPrimitives class. vshader Draw Harness command has been extended to support definition of Shader Object types other than Vertex and Fragment shader.
0027925: Visualization - implement order-independent transparency algorithm within rasterization rendering Weighted, Blended Order-Independent Transparency algorithm has been added rasterization pipeline. In contrast to classical blending transparency it makes transparent objects look independent from point of view. It also gives better depth occlusion when being used together with a weight factor based on value of a GL depth buffer. The feature supports desktop OpenGL, OpenGL ES 3.0, ANGLE and can be used together with MSAA on desktop GL. To be used it require availability of: 1) Shaders pipeline. 2) Floating point color format for framebuffer (GL_ARB_color_buffer_float). 3) Multiple render targets (GL_ARB_draw_buffers). Patch does not modify API and does not require application porting. It adds new rendering options to Graphic3d_RenderingParams structure: a) Transparency method from enumeration. b) Scalar factor [0-1] controlling influence of a fragment's depth to its visibility. Patch also simplifies processing of transparent objects for standard method: rendering priority of transparent graphical structures is managed automatically, therefore there is no need to care about it at application's side.
0027816: Visualization - provide an API for overriding clipping planes list Graphic3d_SequenceOfHClipPlane now inherits Standard_Transient. PrsMgr_PresentableObject, Graphic3d_Structure, Graphic3d_CStructure, V3d_View, OpenGl_View now manages the plane list by Handle. The getters ::GetClipPlanes() has been removed, setters taking non-handle ::SetClipPlanes() has been marked deprecated. OpenGl_Structure::Render() and SelectMgr_ViewerSelector::checkOverlap() now disable global (view) clipping planes for objects with flags Graphic3d_TMF_TriedronPers and Graphic3d_TMF_2d or with new flag Graphic3d_SequenceOfHClipPlane::ToOverrideGlobal(). OpenGl_Clipping now implements interface for managing clipping planes without copying the sequences. The filtering of duplicates is no more performed by OpenGl_Clipping - application is responsible to not do this. OpenGl_Clipping tries avoiding unnecessary allocations for managing list of active planes. MFC sample has been updated to use V3d_View::ClipPlanes() method.
0027751: Visualization, Graphic3d_ClipPlane - add option to inherit material from object Graphic3d_ClipPlane - Graphic3d_AspectFillArea3d is now stored as class field. OpenGl_CappingAlgo::RenderCapping() now handles special mode preserving material from rendered object. MeshVS_ElementalColorPrsBuilder::Build() now creates single primitives group for triangles, thus Closed flag is correctly applied. Redundant methods OpenGl_Structure::DrawGroups() and ::renderClosedGeometry() have been removed. Draw Harness, ViewerTest - vaspects now preserves display mode and location when assigning sub-shape aspects. The syntax of command vclipplane has been revised (preserving compatibility with old syntax): - Use "-param" style syntax for all arguments. - Eliminate redundant arguments "change", "view", "object". - Allow passing multiple parameters withing single call. - Do not require "create" command - create new plane implicitly. - "maxplanes" argument does not require view name anymore. - "delete" does not throws TCL exception for non-existing plane. - "view" argument without list now applies to active view. - Handle * and ALL withing "delete" to remove all defined planes. update test case bugs/vis/bug26028
0027735: Visualization, OpenGl_ShaderManager - fix clipping state management OpenGl_CappingAlgo::RenderCapping() now updates clipping state in Shader Manager. OpenGl_View::render() clipping state setup has been moved to OpenGl_View::renderScene(). OpenGl_ShaderManager now converts position to homogeneous coordinates within clipping code GLSL. This fixes capping plane rendering with clipping planes applied. Fixed possible Clipping planes misconfiguration when FFP is used; error-prone OpenGl_Clipping::AddWorldLazy() method has been dropped.
0026940: Visualization, TKOpenGl - capping plane should be applied to connected structures OpenGl_Structure::Render(), OpenGl_CappingAlgo::RenderCapping() - render groups of instanced and this structure in the same manner using ::renderGeometry() and ::renderClosedGeometry() instead of ::DrawGroups(). Skip capping algo for structures without groups of closed primitives.
0026122: Visualization, TKOpenGl - clipping and capping is broken when ffp is disabled on Linux OpenGl_Clipping - do not setup clipping planes using FFP when it is disabled. OpenGl_ShaderManager - apply 2d texture coordinates transformation in GLSL programs. OpenGl_Context::SetTextureMatrix() - move texture matrix assignment from OpenGl_Workspace::setTextureParams() to OpenGl_Context. Add test case demo/samples/dimensionsglsl with FFP turned OFF. Add test case v3d/glsl/texture_trsf applying texture transformation. Small correction of test case for issue CR26122
0024023: Revamp the OCCT Handle -- general Missing headers added; includes of headers "Handle_...hxx" removed. Misuses of macro Handle() and its use in typedefs corrected. Alias classes Profile and Option are removed from IFSelect; ones defined in MoniTool are used directly. Removed header files defining only Handle classes (except Image_PixMap_Handle.hxx) Classes SelectMgr_BaseFrustum and now inherit Standard_Transient and can be manipulated by Handle (not NCollection_Handle) Fixed reference-type local variable pointing to temporary object Use of handle in conditional expressions and comparisons to NULL are replaced by call to method IsNull()