Home - Forums - Documentation - Gallery - Bugs
(Funny Shaders)
Current revision (14:45, 29 March 2011) (edit) (undo)
 
(40 intermediate revisions not shown.)
Line 1: Line 1:
-
== Feature Spotlight ==
+
== The Crystal Space SDK ==
-
=== Version 1.0 ===
+
* Portability
 +
** Highly platform independent with good platform abstraction. Supports GNU/Linux, OSX and Windows operating systems, and x86, PowerPC, ARM and SPARC processor architectures.
 +
** Support of a wide range of compilers and IDE, including Visual C++ 8, 9 & 10, gcc, MinGW/MSYS, Code::Blocks.
 +
** Written in standard C++ using very few non-standard extensions.
 +
** Self contained so that many modules requires no or few external dependencies.
 +
** Virtual File System handling both physical files on disk and files within ZIP files.
 +
** Abstracted configuration layer with support for settings in configuration file, system dependent storage such as the registry and command line.
 +
** Platform specific optimizations (MMX/SSE/Altivec).
-
==== Terrain with Foliage ====
+
* Modularity
 +
** Modularized using a lightweight component framework, SCF, based upon the COM model. Components can be easily loaded or switched dynamically.
 +
** Bindings for other programming languages through SWIG: Java, Python, Perl, dedicated bindings for Python.
 +
** All subsystems easily extendable for new file formats.
-
<span>[[Image:Showcase_1_0_Foliage.jpg|thumb|left|Trees on a hill]]Crystal Space includes a foliage generator. This generator can randomly (based on user supplied input like density map and material based densities) place objects like stones, trees, grass, and so on. Especially in combination with our outside terrain engine this will make your worlds feel a lot less empty.</span>
+
* Rendering & Lighting
-
<br clear="all" />
+
** OpenGL-based engine, supports hardware accelerated rendering on all supported platforms and cards from all well known vendors.
 +
** Rendering loops for custom rendering of objects.
 +
** Unshadowed, parallel-split shadow maps, and deferred lighting render managers.
 +
** Static lighter with radiosity and caustic.
 +
** Lightmap and per-vertex lighting.
 +
** Rendering to textures.
-
==== Funny Shaders ====
+
* Shaders
 +
** Can be written in Cg and ARB. Shader description and mappings are defined in a XML compliant language.
 +
** Support for multiple passes, vertex and fragment programs. Light selection and multiple lights in one pass possible.
 +
** Shader weaver for combination of shaders and post-processing effects.
 +
** HDR rendering, tone mapping and eye adaptation.
 +
** Fallback system of shader techniques for hardware compatibility.
 +
** Library of available shaders and post-processing effects: diffuse, specular, bump map, glow, parallax, fur, bloom, blur, water, glass, and many others.
 +
** Automatic environment mapping.
-
<span>[[Image:Showcase_1_0_Shader.jpg|thumb|right|Wolf with fur shader]]Our support for vertex and fragment shaders will give you great possiblities of enhancing your art with the nicest, up-to-date effects. Several shaders are included standard with Crystal Space but you are free to make your own.</span>
+
* Scene & Level Of Detail Management
-
<br clear="all" />
+
** Scene node system for easy composition of objects
 +
** Decomposition of a world in sectors with portals connecting them. Portals can be used for effects such as LOD management, streamed loading, mirrors or space warping.
 +
** Three different cullers: hardware occlusion culling (Occluvis), frustum culling (Frustvis), and dPVS (Dynavis).
 +
** General system for static LOD on all types of meshes, progressive LODS.
 +
** Impostors for replacement of far meshes with a 2D object.
 +
** Threaded loader for streamed loading of levels and objects.
 +
** Instanciation of meshes and objects.
-
==== Skeletal Animation and Dynamic Shadows ====
+
* Meshes
 +
** Many different type of meshes: general triangle mesh with multi-materials, cal3d meshes, sprite 2D, sprite 3D, ocean,...
 +
** Terrain mesh with paging, multi-splatting, deformations and automatic loading and unloading of terrain cells.
 +
** Mesh generator to dress up a scene with objects such as flora and rocks,...
 +
** Decals to be added on top of other meshes, even animated.
 +
** Configurable and extensible particle system mesh with billboards, emitters, physical effectors,...
 +
** Halos and lens flares.
 +
** Automatic triangulation of shapes.
-
{|
+
* Animation
-
|-
+
** Specialized and powerful mesh for advanced skeletal animation with animation blending trees, volume preserving dual quaternion skinning, morphing, and sockets.
-
| [[Image:Showcase_1_0_Demo.jpg|thumb|left|Evil character]]
+
** Many types of animation nodes can be combined to generate dynamically complex animations: multi-blending, Finite State Machine, random, priority, LookAt, Inverse Kinematics (Quaternion-CCD and physically-based), speed (time warping), debug.
-
| <span>Skeletal animation and dynamic shadows let you characters look lifely and ever more dangerous. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus quam nisl, vulputate nec, ultrices sit amet, porta et, sapien. Mauris nibh eros, laoreet sed, rhoncus eu, placerat et, tellus. Integer purus leo, laoreet eu, mollis id, cursus eget, metus. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin ultrices eros eu ipsum.</span>
+
** Ragdoll animation and animation of hairs & equipment.
-
|}
+
** Transparent import of BVH motion capture data, with real-time retargeting to a different (but similar) skeleton.
 +
** Motion capture viewer with integrated Point Light Display system.
 +
** Generic animation system for management of sequences of time events.
 +
** Coherent noise generation through the [http://libnoise.sourceforge.net/ libnoise] library.
-
=== upcoming Version 1.2 ===
+
* Audio
 +
** 2D and 3D sounds with OpenAL.
 +
** Audio codecs: speex, ogg, wav (8- and 16-bit PCM).
 +
** Provides both one-time playing of effects and streaming playing in the background for music.
-
==== Terrain with Foliage ====
+
* Physics & Collisions
 +
** Physics of rigid bodies and joints, made through a wrapper for two physics libraries: Bullet and ODE.
 +
** Support of kinematic bodies for interaction between classical animation and the physical simulation.
 +
** Transparent integration with the terrain system.
 +
** Soft bodies to simulate ropes, clothes and other volumetric deformable objects. General meshes can be animated automatically through them.
 +
** Debug plugin to visualize the physical simulation.
 +
** Simplified collision detection when you don't need the full dynamics simulation.
-
{|
+
* Data Representation
-
|-
+
** XML language for the description of each object and plugin of the whole CS. XML files can be set binary for faster loading.
-
| [[Image:Showcase_1_0_Foliage.jpg|thumb|left|Trees on a hill]]
+
** Procedural, dynamic and animated textures.
-
| <span>Our outside terrain now feature beautiful, randomly placed foliage that will make your worlds feel less empty. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus quam nisl, vulputate nec, ultrices sit amet, porta et, sapien. Mauris nibh eros, laoreet sed, rhoncus eu, placerat et, tellus. Integer purus leo, laoreet eu, mollis id, cursus eget, metus. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin ultrices eros eu ipsum.</span>
+
** Support for many image formats: png, jpg, dds, bmp, gif, tga, mng, jng, (binary) alpha, transparency, non 2n sized images,...
-
|}
+
** Generic importer for static and animated models for [http://assimp.sourceforge.net/main_features_formats.html many 3D file formats].
 +
** Dedicated Exporters for many 3D file formats: Blender up to 2.49b through blender2crystal, Blender 2.5x through B2.5CS, 3D Studio Max, Maya, and model importers for common file formats such as COLLADA, 3ds, cal3d and md2.
-
=== upcoming Version 2.0 ===
+
* User Interface
 +
** Event system & peripherals: mouse, joystick, keyboard.
 +
** Graphical user interface system through CEGUI.
 +
** User interface widgets for wxWidgets.
 +
** Text localization.
 +
** Plugin fo easy video recording and uber-screenshots.
 +
** Font servers, FreeType2 and glyphs fonts.
-
==== Terrain with Foliage ====
+
* Project Management
 +
** Debugging tools: generic plugin for visual debugging of scenes, support for Valgrind and CppUnit.
 +
** Scripts for generation of new projects.
 +
** Easy compilation and customization of the whole project thanks to Jam.
-
{|
+
== The Crystal Entity Layer ==
-
|-
+
-
| [[Image:Showcase_1_0_Foliage.jpg|thumb|left|Trees on a hill]]
+
-
| <span>Our outside terrain now feature beautiful, randomly placed foliage that will make your worlds feel less empty. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus quam nisl, vulputate nec, ultrices sit amet, porta et, sapien. Mauris nibh eros, laoreet sed, rhoncus eu, placerat et, tellus. Integer purus leo, laoreet eu, mollis id, cursus eget, metus. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin ultrices eros eu ipsum.</span>
+
-
|}
+
-
== Complete featurelist ==
+
* Entity System
-
* Generic
+
** Each object in CEL is an entity. Entities are defined by adding them a list of property classes that defines their attributes and their behaviour.
-
** Highly platform independent with good platform abstraction. Officially supports Linux, OSX and Windows using a wide range of compilers.
+
** Generic event system for communication between entities and property classes.
-
** Modularized using a lightweight component framework, SCF, based upon the COM model.
+
** Persistence layer for saving and loading world states.
-
** Self contained so that many modules requires no or few external dependencies.
+
** Experimental FTP-based network layer.
-
** Written in standard C++ using very few non*standard extensions. Source available under LGPL license.
+
-
* Comprehensive and competent
+
* Runtime Package Environment
-
** Contains modules for 2d and 3d graphics, sound, collision detection and dynamics via ODE and bullet as well as support modules for filesystem abstraction, xml loading etc.
+
** CELStart: generic executable for all CELStart packaged applications, only the packed data files of the applications have to be installed on the user machines.
-
** Graphics subsystem:
+
** The whole logic may be written with bindings for Python, or in a XML scripting language.
-
*** Generic renderer abstraction with main implementation being OpenGL based.
+
-
*** Supports hardware accelerated rendering on all supported platforms and cards from all well known vendors.
+
-
*** OpenGL renderer uses acceleration techniques such as vertex buffers in AGP or VRAM and asyncronious uploads.
+
-
*** Shader centric design with shaders defined in xml markup and shader programs implemented using Cg, assembly language or fixed function operations.
+
-
*** Complicated shaders can be constructed using a meta syntax as composed by simpler modules that gets combined on load.
+
-
*** Library of common shaders such as normal mapping, parallax (virtual displacement) mapping and hardware skinning.
+
-
*** Contains a software renderer with scaled down features for platforms without OpenGL and/or debugging.
+
-
** Mesh objects:
+
-
*** Plugin based mesh object system
+
-
*** Generic triangle based mesh with support for frame and bone based animation.
+
-
*** Terrain mesh with fast block based LOD system.
+
-
*** Configurable and extensible particle system mesh.
+
-
*** General system for static LOD on all types of meshes.
+
-
** Collision detection and dynamics:
+
-
*** Provides bidnings for ODE and bullet dynamics systems.
+
-
*** Automatic setup of collision detection meshes and syncronization of position and orientation of meshes.
+
-
*** Simplified collision detection when you don't need the full dynamics simulation
+
-
** Sound system:
+
-
*** 2D and 3D sound rendering via DirectSound, Alsa, OSS and CoreAudio.
+
-
*** Provides both one*time playing of effects and streaming playing in the background for music.
+
-
** Other:
+
-
*** Filesystem abstraction layer, VFS, that handles both physical files on disk and files within ZIP files, giving virtual layout independent from platform and physical layout.
+
-
*** Abstracted configuration layer with support for settings in configuration file, system dependent storage such as the registry and command line.
+
-
* Compatible
+
* Artificial Intelligence
-
** Custom model and scene file format with exporters for Blender and 3d studio max and model importers for common file formats such as obj.
+
** Behaviour trees to build complex artificial behaviours by combination of single decision nodes.
-
** Supports all common texture file formats including dds, jpg, png as well as some more exotic ones such as mng.
+
** Hierarchical path finding upon [http://code.google.com/p/recastnavigation/ Recast & Detour], steering behaviours.
-
** Sound loaders for wav and ogg formats.
+
** Neural networks and genetic algorithms.
-
** All subsystems easily extendable for new file formats.
+
 
 +
* World Management
 +
** Avatar and Non Player Character management: synchronization of the user actions with the mesh, its animations, its position and its collisions.
 +
** Camera management with many different modes: first person, third person, tracking, isometric, horizontal.
 +
** Region management: decomposition of a complete world in regions, with zoning between regions.
 +
** Advanced management of portals, e.g. for closing portals that are occluded.
 +
** Spawning of entities.
 +
** Triggering of proximity events.
 +
 
 +
* Inventory & Interaction
 +
** Key and peripherals events bindings.
 +
** Billboards and tooltips.
 +
** Inventory system.
 +
** Selecting and grabbing objects.
-
You also may want to take a look at the "Comparing CS to other engines" [tiki-list_faqs.php|FAQ] entry.
+
* Advanced Physics
 +
** Projectiles and damages to entities.
 +
** Collision management with the ground.
 +
** Advanced physical effects: fluids, thrusters, steering, explosions, attractors and repulsors.
 +
** Vehicles and their physics: bikes, cars, tanks, hovercrafts, or any wheeled vehicle.
 +
** Mesh deformation, e.g. for destroying gradually an object.
[[Category:Media]]
[[Category:Media]]

Current revision

The Crystal Space SDK

  • Portability
    • Highly platform independent with good platform abstraction. Supports GNU/Linux, OSX and Windows operating systems, and x86, PowerPC, ARM and SPARC processor architectures.
    • Support of a wide range of compilers and IDE, including Visual C++ 8, 9 & 10, gcc, MinGW/MSYS, Code::Blocks.
    • Written in standard C++ using very few non-standard extensions.
    • Self contained so that many modules requires no or few external dependencies.
    • Virtual File System handling both physical files on disk and files within ZIP files.
    • Abstracted configuration layer with support for settings in configuration file, system dependent storage such as the registry and command line.
    • Platform specific optimizations (MMX/SSE/Altivec).
  • Modularity
    • Modularized using a lightweight component framework, SCF, based upon the COM model. Components can be easily loaded or switched dynamically.
    • Bindings for other programming languages through SWIG: Java, Python, Perl, dedicated bindings for Python.
    • All subsystems easily extendable for new file formats.
  • Rendering & Lighting
    • OpenGL-based engine, supports hardware accelerated rendering on all supported platforms and cards from all well known vendors.
    • Rendering loops for custom rendering of objects.
    • Unshadowed, parallel-split shadow maps, and deferred lighting render managers.
    • Static lighter with radiosity and caustic.
    • Lightmap and per-vertex lighting.
    • Rendering to textures.
  • Shaders
    • Can be written in Cg and ARB. Shader description and mappings are defined in a XML compliant language.
    • Support for multiple passes, vertex and fragment programs. Light selection and multiple lights in one pass possible.
    • Shader weaver for combination of shaders and post-processing effects.
    • HDR rendering, tone mapping and eye adaptation.
    • Fallback system of shader techniques for hardware compatibility.
    • Library of available shaders and post-processing effects: diffuse, specular, bump map, glow, parallax, fur, bloom, blur, water, glass, and many others.
    • Automatic environment mapping.
  • Scene & Level Of Detail Management
    • Scene node system for easy composition of objects
    • Decomposition of a world in sectors with portals connecting them. Portals can be used for effects such as LOD management, streamed loading, mirrors or space warping.
    • Three different cullers: hardware occlusion culling (Occluvis), frustum culling (Frustvis), and dPVS (Dynavis).
    • General system for static LOD on all types of meshes, progressive LODS.
    • Impostors for replacement of far meshes with a 2D object.
    • Threaded loader for streamed loading of levels and objects.
    • Instanciation of meshes and objects.
  • Meshes
    • Many different type of meshes: general triangle mesh with multi-materials, cal3d meshes, sprite 2D, sprite 3D, ocean,...
    • Terrain mesh with paging, multi-splatting, deformations and automatic loading and unloading of terrain cells.
    • Mesh generator to dress up a scene with objects such as flora and rocks,...
    • Decals to be added on top of other meshes, even animated.
    • Configurable and extensible particle system mesh with billboards, emitters, physical effectors,...
    • Halos and lens flares.
    • Automatic triangulation of shapes.
  • Animation
    • Specialized and powerful mesh for advanced skeletal animation with animation blending trees, volume preserving dual quaternion skinning, morphing, and sockets.
    • Many types of animation nodes can be combined to generate dynamically complex animations: multi-blending, Finite State Machine, random, priority, LookAt, Inverse Kinematics (Quaternion-CCD and physically-based), speed (time warping), debug.
    • Ragdoll animation and animation of hairs & equipment.
    • Transparent import of BVH motion capture data, with real-time retargeting to a different (but similar) skeleton.
    • Motion capture viewer with integrated Point Light Display system.
    • Generic animation system for management of sequences of time events.
    • Coherent noise generation through the libnoise library.
  • Audio
    • 2D and 3D sounds with OpenAL.
    • Audio codecs: speex, ogg, wav (8- and 16-bit PCM).
    • Provides both one-time playing of effects and streaming playing in the background for music.
  • Physics & Collisions
    • Physics of rigid bodies and joints, made through a wrapper for two physics libraries: Bullet and ODE.
    • Support of kinematic bodies for interaction between classical animation and the physical simulation.
    • Transparent integration with the terrain system.
    • Soft bodies to simulate ropes, clothes and other volumetric deformable objects. General meshes can be animated automatically through them.
    • Debug plugin to visualize the physical simulation.
    • Simplified collision detection when you don't need the full dynamics simulation.
  • Data Representation
    • XML language for the description of each object and plugin of the whole CS. XML files can be set binary for faster loading.
    • Procedural, dynamic and animated textures.
    • Support for many image formats: png, jpg, dds, bmp, gif, tga, mng, jng, (binary) alpha, transparency, non 2n sized images,...
    • Generic importer for static and animated models for many 3D file formats.
    • Dedicated Exporters for many 3D file formats: Blender up to 2.49b through blender2crystal, Blender 2.5x through B2.5CS, 3D Studio Max, Maya, and model importers for common file formats such as COLLADA, 3ds, cal3d and md2.
  • User Interface
    • Event system & peripherals: mouse, joystick, keyboard.
    • Graphical user interface system through CEGUI.
    • User interface widgets for wxWidgets.
    • Text localization.
    • Plugin fo easy video recording and uber-screenshots.
    • Font servers, FreeType2 and glyphs fonts.
  • Project Management
    • Debugging tools: generic plugin for visual debugging of scenes, support for Valgrind and CppUnit.
    • Scripts for generation of new projects.
    • Easy compilation and customization of the whole project thanks to Jam.

The Crystal Entity Layer

  • Entity System
    • Each object in CEL is an entity. Entities are defined by adding them a list of property classes that defines their attributes and their behaviour.
    • Generic event system for communication between entities and property classes.
    • Persistence layer for saving and loading world states.
    • Experimental FTP-based network layer.
  • Runtime Package Environment
    • CELStart: generic executable for all CELStart packaged applications, only the packed data files of the applications have to be installed on the user machines.
    • The whole logic may be written with bindings for Python, or in a XML scripting language.
  • Artificial Intelligence
    • Behaviour trees to build complex artificial behaviours by combination of single decision nodes.
    • Hierarchical path finding upon Recast & Detour, steering behaviours.
    • Neural networks and genetic algorithms.
  • World Management
    • Avatar and Non Player Character management: synchronization of the user actions with the mesh, its animations, its position and its collisions.
    • Camera management with many different modes: first person, third person, tracking, isometric, horizontal.
    • Region management: decomposition of a complete world in regions, with zoning between regions.
    • Advanced management of portals, e.g. for closing portals that are occluded.
    • Spawning of entities.
    • Triggering of proximity events.
  • Inventory & Interaction
    • Key and peripherals events bindings.
    • Billboards and tooltips.
    • Inventory system.
    • Selecting and grabbing objects.
  • Advanced Physics
    • Projectiles and damages to entities.
    • Collision management with the ground.
    • Advanced physical effects: fluids, thrusters, steering, explosions, attractors and repulsors.
    • Vehicles and their physics: bikes, cars, tanks, hovercrafts, or any wheeled vehicle.
    • Mesh deformation, e.g. for destroying gradually an object.
| Article | Discussion | View source | History |