World Simulator: Difference between revisions

From SpaceElevatorWiki.com
Jump to navigationJump to search
Line 13: Line 13:
== Torcs 3D Engine. ==
== Torcs 3D Engine. ==


=== Improving ===
=== Reasons to throw away Torcs 3-d Engine ===
 
A low cost way to get a more professional looking 3D engine is to improve the existing one little by little. Which what I believe to be a good way to do.
Eventually I'll fork the existing engine, because it will certainly require a higher-end computer.


Here is the list of improvements we can get, mainly by making use of OpenGL 2.0 features (Shaders, Buffers Objects).
Here is the list of improvements we can get, mainly by making use of OpenGL 2.0 features (Shaders, Buffers Objects).

Revision as of 06:03, 17 June 2008

Torcs in C#

Preliminary tasks:

  • Compile torcs as a library, with very high interface: TorcsLaunch().
  • Make a C# wrapper to it.
  • Launch torcs from Mono.

(see linux/main.cpp)

Secondary tasks:

  • Start plugging in other engines with C# APIs

Torcs 3D Engine.

Reasons to throw away Torcs 3-d Engine

Here is the list of improvements we can get, mainly by making use of OpenGL 2.0 features (Shaders, Buffers Objects).

Without too much work we can achieve:

  • Per-pixel lighting [1]
    • Phong
    • Fake sky reflections on coachwork and metallic parts (my personal algorithm) [2]
    • Bump-mapping
  • High-quality illumination model
    • HDR rendering [3]
    • Realistic atmospheric effects (FIXME. can't find illustrations.. watch this if you're not afraid of maths [4])

Big work:

  • Shadow Maps [5]
  • Real reflections [6]

New engine

Modular architecture already make this possible. The 3D engine implements an interface (defined in interfaces/graphic.h), it is given the high-level information about the track and cars and have to build and display its own geometry from this.

Make it in C# ? For now making a C# wrapper for the renderer would imply calling C# from C, is that possible? If possible, the whole src/interfaces headers have to be wrapped to C# then. (Cf Torcs in C#)

Notes by Jeko for Jeko

It's almost pure OpenGL, so very easy to tweak.

Main work is done in src/modules/graphic/ssggraph/grmain.cpp

It builds a list of "screens" (main screen, mirrors, etc)

Each screen set up the opengl parameters he like and render track, then cars, etc..

Rendering of the car is done here: src/modules/graphic/ssggraph/grcar.cpp, grDrawCar()