view3dscene 3.4 release - advanced texturing
view3dscene 3.4 is released! The codename of this release should be "Everything you wanted to know about textures", as most of the new features deal with X3D advanced texturing nodes.
All X3D multi-texturing nodes implemented. See also clarifications how MultiTexture.mode/source fields work and how to separate them for rgb and alpha channel.
All X3D cube map nodes implemented. This includes
GeneratedCubeMapTexture, very useful to make mirrors, especially with the help of WORLDSPACEREFLECTIONVECTOR extensions.
All X3D 3D texture nodes implemented.
DDS (DirectDraw Surface) format is supported, for all texture types (2D, 3D in
ImageTexture3D, cube map in
ImageCubeMapTexture). S3TC compression, explicit mipmaps are all supported, more details here. New glViewImage 1.3.0 supports reading, writing and even limited editing of DDS images.
RenderedTexture node is implemented: a texture rendered from a specified viewpoint.
Passing to GLSL shaders various uniform value types is implemented. This includes vectors, matrices and many more. Viewpoint.camera*Matrix may be very useful to feed to shaders. You can also pass texture nodes to GLSL shader uniforms, following X3D specification.
New extensions to easily make projective texturing and shadow maps within your VRML/X3D worlds.
Anisotropic texture filtering (by standard X3D
Hardware occlusion query may be activated for rendering, this can speed browsing large scenes enormously. Try it by menu options View -> ... Occlusion Query.
When using single texturing, you can set environment mode to replace (default is modulate).
KambiScript functions to operate on string characters:
"array_set", "array_get", "array_get_count", "array_set_count" for strings.
As usual, along with view3dscene release, we also release accompanying Kambi VRML engine (version 1.8.0) for developers. Released binaries are compiled with FPC 2.2.4, sources can also be compiled with FPC from trunk (tested on 2009-08-21). I also provide binaries for Linux/x86_64 (not only 32-bit Linux/i386), as I see a demand for it.