Development news: Geometry shaders, my Ph.D. thesis, cellular texturing

November 14, 2011
Geometry shader performing a fun variant of smoothing/exploding a shape
Plug light_scale used to implement spot light with custom intensity
Cellular procedural texture, using our ShaderTexture extension
Cellular procedural texture with mirrors, again using our ShaderTexture extension
Cellular procedural texture, using our ShaderTexture extension
  1. Geometry shaders are implemented in our engine and view3dscene.

    Geometry shaders are executed between the vertex and fragment shader. They can change the primitive type (like triangles to points), explode a single primitive into many (maybe adding some intermediate vertexes), remove some primitives and more. We support geometry shaders following modern GLSL version >= 1.50 (since OpenGL 3.2). See the documentation for more details and links to example X3D files.

    Interesting demos using geometry shaders are most welcome! You can post them on our forum. Nice demos may be included in our demo models.

  2. Michalis Ph.D. thesis, describing the "compositing shaders" idea, is published here :). There are HTML and PDF versions (45 pages for A4) with the same content.

    Various improvements to the idea were implemented lately, most of all: extensions for geometry shaders. They are described in the Chapter 6. "Extensions for geometry shaders". This allows to write robust geometry shaders, that cooperate with renderer internal effects by using special geometryVertexXxx functions.

    As always, comments and tests of our compositing shaders idea are most welcome!

  3. Various new demos added to demo models (only in SVN now), like simple demos of cellular texturing, see demo_models/compositing_shaders/cellular_texturing*.x3dv.

  4. Various small fixes and enhancements to compositing shaders implementation for texture and light effects. Due to bugs/omissions, previously you could only use there texture/light-specific plugs, like PLUG_light_scale (for light source) and PLUG_texture_color (for texture). Now you can also use there:

    • plugs using other user-defined plugs. See new texture_effect.x3dv example (in SVN of demo models).
    • plugs using shape plugs (like PLUG_vertex_object_space). See new texture_coord_generate.x3dv (in SVN of demo models).