| All posts |
  • Plane9 v2.3 released!

    published on 8/24/2015 7:03 PM

    So the time has finally come to release v2.3 of Plane9. A lot of effort has gone into this release because of the CgFX to GLSL conversion where all 260 scenes had to be manually updated. Mental note for next time is to not build software that relies on proprietary/closed source. Since when/if they stop supporting it you are on your own and will eventually have to convert the whole project to use something else. But I’m very happy that I finally managed to do this conversion since it’s been hanging over me for quite a while now.

    This conversion will however not be noticed since it’s an internal one. What however should be noticed in a major way is the addition of background loading of scenes. The problem before was that when a scene was loaded, and this could be a transition scene in addition to a layered scene for a total of 4 scenes at the same time, all the shaders in the scene had to be compiled. This process can be rather slow in OpenGL and a single shader can take 40ms to compile by the driver. Just compiling a single such shader would cause us to miss rendering a frame. This creates the potentially visible hickup or in other cases just a feeling that the visualiser isn’t as smooth as it should be. To work around this the loading and startup of the scenes are now done in the background. Threaded support in OpenGL isn’t the most robust but it has worked on all systems tested (Intel, AMD, Nvidia) with latest drivers. There is a switch to turn this off in the options window if it where to cause problems. To further reduce loading times so was a file texture cache added and also a system that only includes the needed functions into a shader.

    The other noticeable change is that since I had to go through all scenes I also took the time to update quite a few of them and add PBR (Physically based rendering) shading as well. This is the same techniques used by Unreal Engine, Unity, Frostbite, The Order 1886 and others.

    Some of the added/updated scenes updated for v2.3

    Lastly the oculus support has been updated to v0.6 to be compatible with the oculus SDK v0.7 release that should be out soon.

    Full change history


    • Preload scene on a background thread in screensaver and windowed mode to avoid hickups during scene changes. Can be turned off in options window if it causes issues.
    • Only inject shader functions we actually use. Cuts down shader compilation from 40ms to 15ms for a simple shader
    • Allow foreground scenes to use the PreviousLayer node for much better scene compositions for some scenes
    • New PBR shader including lightDirectional and lightPoint
    • Added fresnel functions, _perturbNormalTexture, _perturbNormal, _noisederiv, _rand(float)
    • Respect randomize setting during recorde mode
    • Mesh instancer will use point sprites if no mesh is connected
    • F2/Ctrl+A to toggle always on top in windowed mode
    • Prefix shader variables with "g" as in "gTime"
    • Added FormatVersion to scene files
    • Place log writer on it's own thread to avoid any hickups during log writing
    • rttscale command line option for a simple brute force form of antialiasing
    • Ignore extension when loading in textures
    • Add a 4th texture input into shader node
    • Load in normal and material textures along side diffuse texture
    • Cache any loaded file textures for future use


    • Updated to Qt 5.5.0
    • Updated to Oculus SDK 0.6
    • Updated a number of scene with PBR features
    • Changed all shaders in all scenes from CgFx to GLSL
    • Allow primary monitor to be on either side of secondary
    • Updated way to get program files folder to better handle non ascii folder names
    • Dont default to always on top in windowed mode
    • High resolution screenshots have the RB values mixed
    • If a scene fails to load then dont use a empty scene in it's place
    • Fixed normal on bevel node
    • Black screen on playlists that dont have any standalone scenes in them
    • Removed usage of depricated glTexEnvf for points. We should use gl_PointCoord
    • Fixed error in projection matrix and adjusted all scenes to match
    • FrameNr 0 should now always be the first frame rendered
    • Default Transition to scale is now at 100% instead of previous 50%. Looks better and most should have a machine that can handle it.


    • Lines node

You need to Log in/register to add comments
Joakim Dahl
31 Jan, 2016
Remove all scenes you don't like in the configuration window by selecting the playlist and clicking the check mark on the scene in question. You can skip to a new scene by pressing "space" when viewing it standalone. You can also increase the time the visualizer stays on one scene in the configuration window on the options tab.
31 Jan, 2016
Is it possible to pause or skip scenes? Sometimes I find one I really like and would like it to stay on it. It feels like the program switches between too many different scenes that don't have any real continuity between them, and also there are a few that just flash red letters saying COMPUTER ERROR.
Joakim Dahl
27 Jan, 2016
No the editor has not been released yet. I don't expect I will release it this year either as it looks now.
27 Jan, 2016
Has the editor been developed yet? I would love to beta test it if so, I thought the old version was one of coolest learning tools ever. Love what your doing here

Joakim Dahl
5 Sep, 2015
Can you send in the log file to the email at The log can be found in the start menu "Plane9 User Data" in there there is a file called "log.txt" that might give me a clue as to why this is happening
5 Sep, 2015
Not sure if anyone else is encountering these issues but many of the updated scenes aren't rendering for me at all. Most of the scenes that require a texture overlay are showing as blank balls of color or are simply just showing a blank screen. I can supply a list of which scenes don't work if that would help.

Cyberpower PC, Windows 10. Home 64bit, , AMD R9 200