Skip to content

@MicBosi MicBosi released this Feb 10, 2020 · 24 commits to master since this release

  • 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.
Assets 2

@MicBosi MicBosi released this Feb 10, 2020 · 45 commits to master since this release

New tag
Assets 2

@MicBosi MicBosi released this Feb 6, 2017 · 60 commits to master since this release

  • 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.
Assets 2

@MicBosi MicBosi released this Jan 31, 2017 · 60 commits to master since this release

  • 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
  • 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
Assets 2

@MicBosi MicBosi released this Jan 18, 2017 · 60 commits to master since this release

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

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

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.

Assets 2

@MicBosi MicBosi released this Feb 6, 2017

Minor docs updates.

Assets 2
Jan 31, 2017
Documentation update
Jan 30, 2017
Use compatibility GL profile by default.
Jan 18, 2017
MorphingCallback: use VL built-in vertex attibutes.

@MicBosi MicBosi released this Apr 13, 2016 · 1 commit to v1.0 since this release

Getting ready for v1.0.2
Assets 2
You can’t perform that action at this time.