Crystal Space 2.0.0: C.1 Release Notes from 1.4 to 2.0

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

## C.1 Release Notes from 1.4 to 2.0

This section documents the major changes between versions 1.4 and 2.0 of Crystal Space.

Version 2.0 is a major release, covering more than three years of continuous effort. As such, not all changes are documented. Below details the major changes since the last release. This will continue to be updated as time progresses.

This list will not be as complete as wished, but due to timescale between this and the last release, it makes it difficult to document all changes.

New features/enhancements:

- Added new demonstration applications: `‘csbias’`, `‘csisland’`.
- Added new tutorial applications: `‘avatartest’`, `‘shadertut’`.
- Added new tool applications: `‘hairtest’`, `‘shagnetron’`, `‘cslodgen’`, `‘cslodview’`, `‘csmocapviewer’`, `‘csterrainedtest’`.
- Added new test applications: `‘imptest’`, `‘transparentwindow’`, `‘csceguiconftest’`, `‘threadtest’`, `‘jobtest’`, `‘smoketest’`, `‘deferreddemo’`, `‘waterdemo2’`.
- The `‘startme’` application has been almost completely re-written for a nicer an a more usable User Interface.
- Many improvements have been added to the following applications and plugins: `‘viewmesh’`, `‘walktest’`, `‘genmeshify’`, `‘bugplug’`.
- Added several generic tool classes that can be used in application development: `CS::Utility::iCameraManager`, `CS::Utility::iHUDManager`, `CS::Utility::DemoApplication`, `CS::Debug::iVisualDebugger`, `CS::Material::MaterialBuilder`.
- New level and data added. Please look within the `‘data’` directory.
- Threading support has been extended and improved.
- Added a threaded loader for the parallel loading of the data.
- Added support for custom camera projection matrices.
- A new `iRenderManager` interface has been added, abstracting the rendering method used to display the scenes.
- A new post-effects system has been added, see `iRenderManagerPostEffects` and related classes.
- The render managers, the lighting and shader systems have all received many fixes and improvements.
- The shaders have been split in the directories `‘data/shader’` for the global weaved shaders, `‘data/shader-snippet’` for the snippets to be weaved in the shader weaver, and `‘data/shader-old’` for the previous shaders.
- Many new shaders have been added, such as the `‘sky’` shader implementing the Perez luminance model, the `‘clouds’` shader implementing a Perlin noise, and the `‘fake_sss’` implementing a fake sub-surface scattering. See in `‘data/shader’` for the other additions.
- A new `‘deferred’` render manager has been added, implementing deferred shading.
- The `‘lighter2’` application has been extended with a radiosity system with support for caustics, allowing far more realistic pre-lighting.
- A new culler has been added, `‘occluvis’`, doing hardware occlusion visibility culling.
- A new imposter system has been added. See the `‘imptest’` application.
- A new progressive Level of Detail system has been added.
- Added support for Pixel Buffer Objects.
- Added support for static mesh and static mesh factory instancing.
- Many fixes and improvements have been made to the mesh generator.
- Many fixes and improvements have been made to `‘terrain2’` and its multi-splatting functionalities.
- Added support for modifiable terrains, along with the start of a terrain editor (see `‘csterrainedtest’`).
- Implemented most of the missing functionalities in the `‘Bullet’` physics plugin. Augmented this plugin with many new functionalities such as soft bodies, kinematic objects, terrains, and hit beam tests.
- Added some tools for the creation and animation of soft bodies (see `CS::Animation::iSoftBodyAnimationControl` and `CS::Physics::Bullet::SoftBodyHelper`).
- Added a plugin for the visual debugging of a physical simulation (see `CS::Debug::iDynamicSystemDebugger`).
- Many additions and fixes to the Animesh mesh. Many additions are about optimizations of the morphing and display processes.
- Added support for animated decals on Animesh meshes.
- Added a structure to hold the physical description of an Animesh (see `iBodySkeleton` and other classes).
- Added many new animation blending nodes: `‘Ragdoll’`, `‘LookAt’`, `‘IKPhysical’`, `‘IKCCD’`, `‘Speed’`, `‘Debug’`, `‘Retarget’`.
- Fixes and improvements of the `‘FSM’` and `‘Animation’` animation blending nodes.
- Added some default template classes for the creation of new animation nodes (see the header file `‘cstool/animnodetmpl.h’`).
- Added a BVH motion capture parser for the Animesh, along with a motion capture viewer and a Point Light Display System (see `‘csmocapviewer’`).
- Added some tools for the creation and merging of Animesh meshes (see `CS::Mesh::AnimatedMeshTools`).
- Added the parsing of animation blending nodes to the `‘skeleton2’` loader.
- Added a new `‘Fur’` mesh, for the animation and display of hairs and fur.
- Added a new `‘Water’` mesh, for the display of oceans and seas.
- Added a plugin for the Assimp library, allowing to load genmeshes and animeshes into Crystal Space from a wide range of different file format.
- Added a new Blender 2.6x export script.
- Improved the 3DSMax export script.
- Added a new 3DSMax exporter plugin, see in the `‘/CSExporters/CrystalMax’` Subversion repository.
- Added a new terrain exporter plugin for the PnP TerrainCreator editor, see in the `‘/CSExporters/CrystalPnP’` Subversion repository.
- The CEGUI plugin has received many improvements and additions.
- A new generic application configuration tool has been added. See the classes `‘iConfigListener’` and `‘iConfigNotifier’`, and the `‘csceguiconftest’` application.
- The `‘wxWidgets’` canvas and `‘wxtest’` application have been improved.
- The libnoise library has been integrated. See the `CS::Math::Noise` namespace.
- Added a Secure Hash Algorithm implementation (SHA-256). See the `SHA256` class.
- Added a HTTP implementation (see the `iHTTPConnection` class and related).
- Added many namespaces in the Crystal Space SDK. Future new classes should always be put in some CS namespace.
- There has been many additions, fixes and other work performed on the configure system.
- Extended support and usage of unit testing with CS.
- There have been many fixes and updates for platform support, especially for the ARM platform.
- There has been many updates and fixes to the documentation.
- Made memory blocks dump more useful in `ptmalloc`.
- Added copy constructors to `csRefCount`/`FastRefCount` that properly set the refcount to 1.
- Made generic render step provide inverse object to world TF as a SV.
- Extended `csFIFO` with a `Top ()` method that peeks into the fifo without removing anything.
- Added [no]compact option to `‘optimisedata’`, to put all data into one file (or split into many).

API changes:

- Added `csBitArray::IsBitSetTolerant ()` (does not assert for out of bound indices).
- Removed `CS_CONST_METHOD` and `CS_PURE_METHOD`. Pure and const specifiers have very strong semantics that almost never is warranted, and to avoid problems and bugs caused by them remove them totally.
- Addition new `SimpleStaticLighter` class. This is a convenience class that calculates simple static vertex lighting (similar to what lighter2 would do) for individual meshes. This is useful for statically lighting dynamically created geometry or for updating vertex lighting on an object that has moved.
- Added `PeekNext ()` methods to `csRedBlackTreeMap` iterators.
- Renamed `csFinite ()` to `CS::IsFinite ()`.
- Renamed `csNaN ()` to `CS::IsNaN ()`.
- Deprecated `csNormal ()`.
- Added `iCameraListener` and deprecated `iCameraSectorListener`.

Removals:

- Completed removal of software renderer.
- Completed removal of old event system.
- Completed removal of `‘thing’` mesh plugin. However, you can now convert your previous `‘thing’` meshes using `‘genmeshify’`.
- Completed removal of old sound system.
- Completed removal of deprecated world attributes from tree.
- Large cleanup of lighting code which has resulted in removal of both interfaces and other methods. A result was a complete rework of lighting code.
- Removed the following canvas: `‘sdl’`, `‘caca’`, `‘xextshm’`, `‘ddraw’`, `‘softx’`, `‘memory’`.
- Removal of `‘instmesh’` and `‘bezier’` meshes as they are not that useful and instmesh isn't working that well either.
- Removed `iImageIO::SetDithering ()`.
- Removed deprecated `csProcessorCapability`.
- Removed the `‘simpvs’` application.

Fixes that apply to tickets in Trac:

- Changed `XMLshader` to expand all templates before retaining nodes for later parsing. Should help with #486.

Other changes:

- Switched by default to the `‘Bullet’` library instead of ODE for the physical simulation. The ODE plugin will not get further support anymore, and will be removed in some future.
- The logic of the Animesh's animation blending nodes has been changed, and the nodes work now in bind space instead of bone space.
- `‘perl’` and `‘java’` plugins are now disabled by default.
- When building an application with “statically linked plugins” (usually by utilizing the `‘LinkStaticPlugins’` Jam rule) SCF's automatic scanning for plugins was “magically” inhibited. This behaviour has been abandoned; now, by default plugin scanning is always performed independently of whether statically linked plugins are used or not. Plugin scanning can be inhibited by calling `scfInitialize` manually (see the API documentation for details how).
- parallaxAtt moved to `‘shader-old’`.
- Added a check to the legacy renderbuffer so that it removes the `CS_BUFFER_COLOR` user renderbuffer if colors are not set.
- Changed to unshadowed render manager as default.
- Disabled high DPI scaling on Windows Vista.
- Un-inline most `csPathsList` methods to avoid cross-module memory allocs/frees.
- Add a 'used SV' traverser that gives the set of used SVs (instead of individual SV names).
- Optimisation `‘lighter2’` by not doing transparency-computation of shadowrays if path is fully unoccluded or fully occluded.
- Support for (properly hardware-accelerated) clip planes.
- Packaging scripts have been moved from the scripts directory into a sub packaging directory.
- Use `glXChooseFBConfig` instead of `glXChooseVisual`.
- Avoid crashes when encountering a corrupt PNG images.
- Extensive removal of dead and old code.

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

This document was generated using texi2html 1.76.