view3dscene 3.11.0, engine 3.0.0 releases

December 31, 2011
Collada Seymour model (from
Collada Lunar Vehicle (from
view3dscene rendering tower with sunset sky
Humanoid model, captured with transparent background, replaced in GIMP with some texture and gradient
Geometry shader performing a fun variant of smoothing/exploding a shape
Cellular procedural texture, using our ShaderTexture extension
Example Fixed Camera Game "Rift" - game menu
Example Fixed Camera Game "Rift" - inside game 1
Example Isometric Game "Sandbox" - 1
Front page before 2011-12-30
Front page after 2011-12-30

We're proud to release new view3dscene 3.11.0, our VRML/X3D browser and viewer for other 3D models, and Castle Game Engine 3.0.0, our 3D game engine (used under the hood by view3dscene and other programs here).

New features in view3dscene 3.11.0 for users:

  • Huge improvements to Collada support. Rendering and converting Collada to X3D supports now: textures, normals, cameras, light sources, all primitives (triangle strips, fans, lines and more), multiple polygon lists, objects sharing, double-sided information, 1.5 specification support. See earlier news about Collada for a complete description of new Collada features handled.

    Test Collada models may be found e.g. in COLLADA Test Model Bank. Blender, and other 3D modelers, include exporters to Collada.

  • Geometry shaders are supported (see here for docs and examples). Tested on NVidia and ATI GPUs (see ticket #2 for some history about fglrx fixes).

  • "Limit FPS" option implemented, to not exhaust CPU. This way all our programs and games allow the OS and CPU to rest, to allow other applications to run normally and do not exhaust battery life on laptops.

    This is configurable by view3dscene menu item "File -> Preferences -> Frames Per Second Limit ...". Default is 100. For developers, this is configurable by TGLApplication.LimitFPS property.

  • Many improvements to our compositing shaders extensions. This is a way to implement reusable effects using the GLSL (OpenGL shading language). Effects implemented this way seamlessly cooperate with each other and with standard renderer shaders (so you have standard lighting, texturing and such for free).

    My Ph.D. thesis, describing the whole idea, is also published on the page linked above :)

  • Optimizations to scene loading.
  • More image formats supported out-of-the-box. We use excellent FPC fcl-image to load and save various image formats now. This improves reading of some formats (PCX, JPG), and introduces some new formats (GIF, TGA, XPM, PSD). Complete list of image formats supported by our engine is on glViewImage page.
  • New menu item to take a screenshot with transparent background: Display -> Screenshot To Image (Transparent Background).
  • Fixed "Edit -> Remove Selected Face" to allow using it repeatedly, and to work with IndexedTriangleSet.
  • Fixes and improvements to shader rendering.
  • --viewpoint command-line option to choose a different viewpoint as the default (initial) one. Especially useful in combination with --screenshot option.
  • Many improvements to shadow maps: generation fixed and optimized (for shadow maps, we render model with shaders and many fixed-function features, like lighting, turned off), Variance Shadow Maps improvements (they work quite stable now on newer GPUs).
  • ColorInterpolator and ColorSetInterpolator interpolate colors in HSV space now.
  • "Edit -> H-Anim Joints Visualization" now asks for visualization size. Some H-Anim with VRML 97 fixes.
  • VRML/X3D demo models 3.1.0 are also released, with many improvements and additions to demos in shaders and compositing_shaders subdirectories.

For engine 3.0.0, I have to admit that we didn't implement all planned features. Most importantly: easy AI, and engine tutorials, are postponed to next engine 3.1.0 release. However, we still have many new features in Castle Game Engine 3.0.0 for developers:

  • The first release of the engine under "Castle Game Engine" name, previous versions were called "Kambi VRML game engine". See earlier news about name change for detailed reasoning.

  • Note: This engine release breaks compatibility with earlier versions. Although there is no major change of the engine design (our scene manager design in engine 2.x was really good, and we want to push using it even further in engine 3.x). But there are a lot of renames around important units and classes. And some small things were redesigned more heavily.

    Everything is detailed below, to help you with the migration to the new engine version. If you have any questions about the reasoning of the changes, or if you want to ask how to migrate some particular construct to new engine version, don't hesitate to ask on our forum.

  • Examples completely reorganized. Many useless examples removed, many good examples rewritten and renamed to be better visible.

    Isometric game (sandbox) and fixed camera game (rift) examples were added to engine sources.

  • FPC generics are used everywhere, for all our containers. For records, we use custom TGenericStructList class (as standard FGL doesn't work for records/vectors).
  • A lot of engine identifiers are renamed and changed, to emphasize:

    • We're focused on X3D since a long time, not outdated VRML.
    • A lot of engine code is just directed at rendering/processing of 3D models, not really tied to X3D.
    • Advised window/control classes are now TCastleWindow and TCastleControl. They include ready SceneManager instance.
    • New engine name — castle, not kambi.

    See previous news for detailed reasoning and explanation, and see renaming details document for even more details. If you want to port existing games to engine 3.0.0, you will want to perform the same renames in your code.

  • Improvements to work with latest OpenGL >= 3. We use standard OpenGL features, instead of extensions, when possible. We don't fully work in OpenGL 3.0 forward-compatible context yet, but we're close to it now.
  • Notifications (GLNotifications, these messages "You picked up Potion Of Life" etc. you see in FPS games) were reimplemented. There are now TUIControl descendants, so can be used just like our other 2D controls. They are also visible on the Lazarus component palette now.
  • TBox3D and TQuaternion records remade into old-style object. Previous procedures Box3DXxx(Box, ...) have to be changed now to Box.Xxx(...). This results in nicer API, method names may be shorter and look cleaner.

Website improvements:

  • New castle-engine project page on SourceForge uses new Allura platform, with new forum, new wiki and new tickets system (bug tracking).
  • Main page reworked into three elegant panels directing users to our three main attractions (game, tool, engine). Previously, this was communicated using two paragraphs of text. Also, news moved to a separate tab "News". See before/after images on the side of this news post.
  • Nice OS icons for download links.
  • Google +1 button on the main page.
  • Engine sources and demo_models are now offered as zip archives too (in addition to tar.gz), to make it easier to unpack them on Windows.

Other programs are released too, to give them small improvements and update their sources to be compatible with latest engine 3 API. In particular, glViewImage 1.4.0 is improved with new image formats support.