Engine 1.3.0 release, view3dscene 2.4.0, castle 0.8.1, many other releases

February 19, 2008

Released engine version 1.3.0, view3dscene 2.4.0 and castle 0.8.1. Many long-awaited graphic features implemented:

  • Bump mapping: VRML renderer allows bump mapping. Various bump mapping methods are implemented (best method is auto-detected and used at runtime): dot by multitexturing (not normalized and normalized by cube map), dot by GLSL (optionally with parallax mapping, optionally with steep parallax mapping and self-shadowing).

    view3dscene allows to easily turn on bump mapping, assuming model specifies normal maps.
    castle uses bump mapping, for now only on the "fountain" level.

    For programmers: see also kambi_vrml_game_engine/examples/vrml/bump_mapping demo in engine sources, it demonstrates emboss, dot and all other bump mapping methods built in VRML engine. Also my notes about emboss and dot (by multitexturing) bump mapping methods may be interesting.

    (Update in 2013: bump_mapping demo is no longer available, the whole bump mapping support is now integrated in Castle Game Engine, can be tested using many of it's demos, e.g. try view3dscene on demo models.)

  • GLSL shaders support: engine supports easily using ARB vertex / fragment programs (assembly shaders) and GLSL.

    You can also directly specify GLSL shaders inside VRML file, which is a great feature for VRML authors. Syntax of shaders in VRML follows X3D specification.

    view3dscene allows to control GLSL shaders and even simply assign GLSL shaders (check out Edit -> Simply assign GLSL shader to all objects menu item), so you can test your shaders with any 3D model.

    For programmers: you may find useful my notes about shading languages in shading_langs_demo/README.

  • Anti-aliasing available (if multisampling is supported by graphic card). view3dscene has comfortable menu File -> Startup Preferences -> Anti aliasing and also a command-line option --anti-alias to control this, castle has comfortable menu item in Video options.

  • Collada model format basic support (1.3.x and 1.4.x) added to the engine (view3dscene and everything else open Collada files, just like any other model format; you can also convert Collada files to VRML 2.0).

  • Wavefront OBJ format handling improved (we handle normal vectors, materials, textures).

  • Examine mode allows to rotate and move the scene by mouse dragging. This is more intuitive and sometimes comfortable. This feature is mostly noticeable in view3dscene, although some example programs in engine demos also use such examine mode and also benefit from this.

Besides improvements above, some improvements specific to view3dscene:

  • --screenshot command-line option, requested a few times, to take screenshots of the scene in batch mode.
  • Various fill modes. Previously only normal and wireframe were available, now we have a couple more, like solid wireframe and silhouette. Keys changed ("w" key no longer works, "f" key changes fill mode instead of fog state).

Also our Blender VRML 97 exporter script improved: set solid / set smooth / autosmooth / autosmooth degrees settings from Blender are correctly exported to VRML file (as creasteAngle field).

Other most notable internal engine changes:

  • I dropped my custom OpenGLh binding in favor of using GL, GLU, GLExt units from FPC. Full story: OpenGLh was developed when FPC had no usable OpenGL binding unit (neither had Delphi)... Times have changed, and current GL, GLU, GLExt units are usable, and (partially thanks to my patches, quite a few :) ) they work good and support OpenGL 2.0 functions. (While OpenGLh was on the level of GL 1.2 + many extensions).
  • Among many new demo programs, there's also kambi_vrml_game_engine/examples/vrml/plane_mirror_and_shadow.lpr to test plane-projected shadows and plane mirrors. Plane-projected shadows is only for simple demo (we have implemented shadow volumes, thousand times better algorithm, after all), but plane mirrors will be implemented in the future in the VRML engine (using "mirror" Material field automatically).

Other releases: Kambi VRML test suite 2.1.0 has many new tests/demos for new features (bump mapping, GLSL, Collada format). Also released: rayhunter 1.2.2, lets_take_a_walk 1.2.1, malfunction 1.2.4, kambi_lines 1.1.4, glplotter 1.2.1, glViewImage 1.2.2, bezier_curves 1.1.6, glcaps 1.1.2, mainly to bring them up-to-date with current engine state.