All Versions
Latest Version
Avg Release Cycle
297 days
Latest Release
4308 days ago

Changelog History
Page 1

  • v2011.09.1168

    May 16, 2012
  • v2.0 Changes

    February 06, 2017
    • ๐Ÿ‘ OpenGL Core & Compatibility profiles with min/maj version supported by Qt4, Qt5, GLFW and GLUT.
    • ๐Ÿ‘ RaycastVolume rewritten to support OpenGL Core (3.3+).
    • More resilient Applet, OpenGLContext and volume examples shutdown and destruction.
    • ๐Ÿ›  GLFW support fixes.
  • v2.0-beta

    January 18, 2017
  • v2.0-b5 Changes

    February 10, 2020
    • ๐Ÿ›  Fixed several warnings, compilation issues and bugs in Linux and VS2019
    • โž• Added new Extrusions class courtesy of Fabien Mathieu to extrude multiple contours, useful for "hollow" extrusions etc.
  • v2.0-b4

    February 10, 2020
  • v2.0-b3 Changes

    February 06, 2017
    • ๐Ÿ‘ OpenGL Core & Compatibility profiles with min/maj version supported by Qt4, Qt5, GLFW and GLUT.
    • ๐Ÿ‘ RaycastVolume rewritten to support OpenGL Core (3.3+).
    • More resilient Applet, OpenGLContext and volume examples shutdown and destruction.
    • ๐Ÿ›  GLFW support fixes.
  • v2.0-b2 Changes

    January 31, 2017
    • ๐Ÿ“š General documentation & website update
      • Based on Doxygen 1.8
      • Website includes v1.0 and v2.0 docs
      • Allow Markdown docs
      • Several fixed and updates in the docs
    • 0๏ธโƒฃ Use compatibility GL profile by default
    • Qt4,Qt5,GLFW: allow GL profile Core or Compatibility
    • ๐Ÿšš VertexAttribInfo: removed
    • Volume GLSL: improved render quality
    • โž• Added simple MHD loader
    • STL: 10x faster binary loader
    • โž• Added GLFW support
    • ๐Ÿ“ฆ Locate GDCM using standard FIND_PACKAGE
  • v2.0-b1 Changes

    January 18, 2017

    โšก๏ธ This includes many updates, fixes and experimental architectural improvements.

    Note that there are some API breaking changes highlighted below, however porting should be easy.

    โœ… It's mostly an incremental improvement over VL v1.0 at this stage, plus better Qt4/Qt5 support, better OpenGL Core support, more powerful GLSL management in general, more coherent API and various fixes. It has also been battle-tested in a couple of big projects, so as far as I know it's quite stable.

    I haven't been able to accept pull requests and patches so far because I had this major new version in the works for months - hopefully now I'll be able to go through the various feedback I've received and start incorporating the good stuff :)

    โšก๏ธ OpenGLContext::dispatchRunEvent() renamed dispatchUpdateEvent()

    โž• Added standard GLSL includes uniforms.glsl and vertex_attribs.glsl
    Using new GLSL #pragma VL include capability
    #version 150 compatibility is current preferred safe version for many GLSL scripts



    openglContext()->useGLSLProgram( mGLSLProgram.get() );

    ๐Ÿšš Legacy GLSL removed (these are taken care of from inside the GLSL script)

    glsl->setGeometryVerticesOut( 3*6 );

    Vertex Attrib Arrays now can be used in 3 ways:

       // bind the tangent vertex attribute - can be done in 3 ways
    #if 1
        // user defines his custom vertex attribute
        int tangent_idx = mGLSL->getAttribLocation("VertexTangent"); VL_CHECK( tangent_idx != -1 );
        model->setVertexAttribArray(tangent_idx, tangent.get() ); // GLSL: in vec3 VertexTangent (user declared)
    #elif 0
        // user uses pre-defined aliased utility vertex attribute
        model->setVertexAttribArray( vl::VA_Tangent, tangent.get() ); // GLSL: vl_VertexTangent (decl. /glsl/std/vertex_attribs.glsl)
        // user uses pre-defined basic vertex attribute
        model->setVertexAttribArray( vl::VA_TexCoord1, tangent.get() ); // GLSL: vl_VertexTexCoord1 (decl. /glsl/std/vertex_attribs.glsl)

    sceneManager()->extractActors( *intersector.actors() );


    sceneManager()->extractVisibleActors( *intersector.actors(), NULL );

    โœ‚ Removed because not needed anymore: (see tessellation shader example, see morphing callback example)

    mGLSL->addAutoAttribLocation( 0, "vl_Position" );

    โž• Added Qt4 & Qt5 GUI and filesystem support

    Now QFile and QDirectories can be used as part of VL virtual file system - including Qt compiled resurces.

    โž• Added CalibratedCamera class for augmented reality applications

    โž• Added AdjacencyExtractor class

    silhouette extraction, geometry slicing and topology manipulation in geometry shaders.

    โšก๏ธ Updated vlVolume

    • ๐Ÿ‘Œ Improved raycast volume rendering quality & fixed bugs.
    • ๐Ÿ›  Automatic slice count computation for sliced volume rendering & fixed bugs.
    • ๐Ÿ›  vl::genGradientNormals() utility function fixed.

    โž• added vl::Object::setObjectName()

    โž• added vl::String constructor for std::string & std::wstring

    Vector2, Vector3 and Vector4 can be constructed from single scalar.

    ๐Ÿ‘ Better automatic texture unit management.

    User configurable VL_MAX_TEXTURE_UNITS now removed by internal VL_MAX_TEXTURE_IMAGE_UNITS
    and VL_MAX_LEGACY_TEXTURE_UNITS constants.

    ๐Ÿ›  Fixed warnings in glsl_math.hpp

    ๐Ÿ‘Œ Improved Buffer Object documentation in Array.hpp

    ๐Ÿ›  Fixed various render states getter/setter constness in Shader.hpp

    TriangleIterator supports PT_TRIANGLES_ADJACENCY primitive type.

    โœ‚ removed Viewport::enableScissorSetup()
    โž• added Viewport::setScissorEnabled(bool)
    โž• added bool Viewport::isScissorEnabled()
    Viewport::mSetupScissor -> mScissorEnabled

    ๐Ÿ‘Œ Improved Uniform getters/setters


    • โž• added support to IF_RG and
    • new constructor Image(void* buffer_ptr, int buffer_bytes) allowing initializing an Image against a user/externally allocated buffer

    0๏ธโƒฃ TextureSampler::reset(int index, OpenGLContext* ctx) utility function to set a texture sampler to it's default disabled state.

    Textures: Managed Textures and Destroy on Create.

    Managed Textures: allow user to assign and manage the low level OpenGL handle with vl::Texture
    ๐Ÿ‘‰ Useful when you want to use a single vl::Texture object but change/recreate the underlying OpenGL texture handle at will.

    Destroy on create: calling Texture::createTexture() (or any function that calls this) will automatically destroy any existing texture (not if it's managed).

    ๐Ÿšš GLSL: removed UniformInfo, AttribInfo and AutoAttribLocations

    Because not useful and superseded by new auto vertex attrib system

    GLSL: new #pragma VL include /path/to/file.glsl directive

    You can now include a GLSL file from another GLSL file!

    ๐Ÿšš GLSL: removed deprecated GeometryVerticesOut, GeometryInputType, GeometryOutputType logic

    OpenGL 3+ uses the layout keyword for these.

    GLSL: added GLSLShader and GLSLProgram reload() functions

    ๐Ÿšš GLSLProgram::useProgram() removed, use OpenGLContext::useGLSLProgram()

    GLSL: Automatic vertex attrib location binding:


    GLSL: Automatic standard uniform detection:


    ๐Ÿ›  GLSL: various improvements and fixes.

    โž• Added Renderer::rederRaw() function.

    ๐Ÿ‘‰ Makes it easy to create custom Renderer classes.

    โž• Added Enabled attribute to Actor and ActorTree.

    โšก๏ธ See also the new/updated functions:

    • bool Renderer::isEnabled(const Actor* actor)
    • bool Rendering::isEnabled(const Actor* actor)
    • bool SceneManager::isEnabled(const Actor* actor)
    • SceneManager::extractActors() vs extractVisibleActors()
    • Actor::setEnabled()/isEnabled()
    • ActorTreeAbstract::setEnabled()/isEnabled()
    • ActorTreeAbstract::extractActors() vs extractVisibleActors()

    ActorTree API changes:

    mChildren is now protected and can be accessed in read-only mode using the children() method.

    ๐Ÿ†• New/updated methods to manipulate the tree nodes:

    • void addChild(ActorTreeAbstract* node);
    • void addChildOnce(ActorTreeAbstract* node);
    • void setChild(int i, ActorTreeAbstract* node);
    • void eraseChild(int i, int count=1);
    • int findChild(ActorTreeAbstract* node);
    • bool eraseChild(ActorTreeAbstract* node);
    • void eraseChild(int i, int count = 1);
    • void eraseAllChildren();

    Automatic Generalized Vertex Attribute Arrays

    • Unified API to access all vertex attibutes, position, normal, color but also
      texture coords and the generic vertex attibutes (glVertexAttribPointer).
    • ๐Ÿ‘€ Standard vertex attributes like position, normal and color can be seen both
      from the legacy API (ex. Geometry::normalArray()) and the generic api
      (ex. Geometry::vertexAttribArray( vl::VA_Normal )).
    • ๐Ÿšš Geometry::convertToVertexAttribs() removed as it's not needed anymore.
    • Great simplification of lot's of code that can now be agnostic of legacy vs
      generic vertex attributes usage.

    Geometry::setColorArray() tries to not reallocate the color array.

    It also sets the buffer object dirty.

    ๐Ÿ›  Rendering: fixed bug creating a continuous stream of Textures

    Always setup legacy GLSL matrices as well as vl standard matrix uniforms.

    ๐Ÿ‘ OpenGLContext: much better Core profile support and closer OpenGL state tracking.

  • v1.0.3 Changes

    February 06, 2017

    โšก๏ธ Minor docs updates.

  • v1.0.2

    April 13, 2016