general - ryzom/ryzomcore GitHub Wiki


title: NeL Postmortem - General (2002) description: published: true date: 2023-03-01T05:15:34.866Z tags: editor: markdown dateCreated: 2022-02-19T03:26:17.315Z

Adapted from "fr dossier 2002 / 1 - Projet NeL - Generalités" and "fr dossier 2001 / Projet NEL". {.is-info}

Goals

Objective

Research and development of technical solutions in the fields of artificial intelligence, networks and communication and 3D to overcome the obstacles to the realization of massively multi-user online worlds with high immersion and access by personal computers connected through the Internet.

Results to be reached

To design and develop a technological platform capable of supporting a very large, massively multiplayer online universe.

R&D

In order to achieve this, the R&D team is focusing its research on three main areas.

  • Network and communication
  • Artificial intelligence
  • 3D

2001

Here is a summary of the research carried out in 2001 in each of these three teams.

Network and communication

  • Research and development of a communication subsystem to efficiently transfer data from the server to the client PC via the Internet (research of UDP and TCP/IP solutions).
  • Research and development of a technology to filter and prioritize (notion of priority) the information that must reach the client, while respecting the constraints related to bandwidth.
  • Research and development of a technology to represent the position and movement of entities and distribute them to different servers.
  • Research and development of a technology for interpolating and extrapolating the movement of players in order to make the animation credible.
  • Research and development of a system for transmitting data from the player that manages the movements of the characters.
  • Research and development of a server-to-server communication technology capable of handling large volumes of data with high time constraints, in a massively online environment.
  • Research and development of an efficient process for updating the MMO (Massively Multi-user On line) software at a large number of client installations as well as for updating the servers.

Artificial intelligence

  • To obtain reactive and credible behaviors for a large number of entities under artificial intelligence control, within a very large universe.
  • Generate an intelligent interaction between the different entities via dialogue menus.

3D

  • Create and represent a natural terrain with natural arches, tunnels or lakes.
  • Creation and representation of city streets, buildings and interiors full of decoration.
  • Represent a number of animated and editable characters and plants with a high level of detail.
  • Create an audio environment that matches the quality of the visual environment in performance, using surround technology.
  • To render credible collision and path situations in natural and urban environments.

2002

Here is a summary of the research that was carried out in 2002 in each of these three teams.

Network and communication

  • Research and development of an information sharing system (database) distributed in real time between the different distributed servers.
  • Research and development of a high level communication protocol allowing to exchange messages between servers of different versions.

Artificial intelligence

  • Research and development of a filing system for the multi-agent system.
  • Research and development of an operator management system for the multi-agent system.
  • Research and development of a new architecture that can handle the new constraints (RAID Engine).

3D

  • Research and development of realistic water rendering (to model lakes, seas, rivers).
  • Research and development of an optimization system for rich indoor 3D environments (streets, buildings, ...).
  • Research and development of a pre-calculated shadow system based on radiosity.
  • Research and development of the graphic rendering of the sky.
  • Research and development of a large-scale terrain production system.
  • Research and development of tools to allow non-programmers to play sounds and music as well as a realistic sound model to manage reverberations on walls and doors.

Background of the project

This project was born out of the coming together of the computer game and film industries. The idea is to research and develop innovative techniques that allow a level of immersion in the virtual universe without any loss of credibility (lack of fluidity or graphic inconsistency for example) and while offering a very complex realistic plant world.

State of the art and bibliographic research

The company was created with the aim of developing massively multiplayer online entertainment products. So everything had to be developed from scratch. At the beginning of 2002, there were only 3 competing products, Ultima Online, Everquest and Asheron's Call. The most successful project was Everquest, the same as in 2001.

The state of the art in 2002 is very similar to 2001 because the competition doesn't let out any information about their research and technological choices. So we can only base ourselves on our own research done in 2001.

2001

Concerning 3D, in classic offline games, the number of users is limited, the game follows a pre-defined scenario. This allows the complexity of the scene to be controlled at all times and the number of polygons to be displayed to be predictable. With the advent of online games, players can move anywhere they want. The number of players in a given location is therefore totally unpredictable, making it impossible to predict the number of polygons that will need to be displayed. Competitors have therefore chosen to reduce the number of polygons on the characters and on the field to the maximum. This leads to a very low graphic quality and when there are many players in the same place, the display becomes slow.

The constraint of artificial intelligence in offline games is often reduced because the number of bots to manage is low, never more than 1000. Under these conditions, it is possible to develop intelligent algorithms without too much trouble. In online games, the servers must be able to handle several tens of thousands of bots. Competitors have therefore simplified the system to the point of simple state machines to avoid server overload. This makes the bots very predictable, not very credible and therefore not interesting for the players.

Server architectures in competitive online games are based on geography. Each server manages a static and predefined part of the universe. This causes big load problems when many players decide to go to the same place. With this architecture, it is also impossible to chat with players who are in another zone managed by another server. Another problem is the "teleportation" of players over a few meters due to lost messages. This breaks the immersion of the player and the credibility of the universe.

In the competition, there are 2 systems for updating clients. The first one consists in sending all the files that are different between the client and the server. When a big file has to be changed, even by one byte, it will have to be resent, which leads to unnecessary high throughput. The other system is based on differences. With each new version, a file is created containing the differences between the old version and the new version. The problem is when a player has not played for a long time, he has to get all the versions to get the final version.

Here are 2 pictures, one of Everquest and one of Ryzom:

EverQuest: You see a beach, the dunes are very square and not at all natural. The trees are all the same and not very detailed. The buildings in the distance are very simplistic.

everquest.jpg

Ryzom: The terrain is much more curved, we have a much more distant vision, the buildings are complex and the characters very detailed.

ryzom.jpg

Problems to be solved

The difficulties to resolve are most of the time related to constraints that can be listed by area:

Network and communication

  • Incoming and outgoing download streams should not exceed 16 kbits per second per player.
  • Distributed systems split applications across multiple servers. A reliable, real-time solution is needed to share the millions of pieces of information.
  • Data rate limited to 100 Mbits per second for connections between servers.
  • The servers are supposed to be PCs with dual INTEL 2GHz processors running Linux.
  • The servers responsible for managing client connections must support at least 1000 clients, each of which can send and receive 10 packets per second with an average size of 1.6 kbits.

Artificial intelligence

  • The requirements have been revised upwards from 10,000 and the system will have to be able to manage at least 75,000 intelligent entities per server in real time, knowing that a server is equivalent in power to a PC equipped with a dual INTEL 2GHz processor.
  • Data transfer to the client machine is not guaranteed.
  • Have a result that looks intelligent and consistent to the players.
  • Be able to easily create new complex and predictable behaviors.

3D

  • A complex scene with moving entities must be able to move smoothly on the screen, knowing that the minimum specifications required include a 1GHz processor with 256 MB of Ram.
  • The information needed to represent a universe, based on a new technology, had to be developed by 3D experts within a reasonable time frame.
  • A very fast collision system allowing collisions between mathematical surfaces and characters had to be designed, tested and implemented.
  • The system must work on the majority of PC based machines despite the different standards and the very variable power of the machines.

2001

Description of work — Difficulties encountered

Here is the breakdown of the work carried out during the year 2001 in the three branches of our research and development activity:

Network and communication

Communication between the server and the client.

  • Research into different methods used for Multi-User products. [GDC2000]
  • Network throughput analysis for PC based on different packet sizes.
  • Implementation of a TCP/IP solution followed by evaluation tests leading to a failure resulting in rejection of this solution.
  • Design and implementation of a UDP solution followed by an evaluation protocol.
  • The most important solution requirements include handling a very large number of small data packets, controlling packet loss and handling a large number of TCP/IP connections and their CPU monitoring.

Data filtering

  • Initial system design, implementation, experimentation, iterative analysis and evolution.
  • The most important solutions requirements include the use of a CPU that minimizes UDP packet loss, which is related to the quality of the filtering algorithm (which translates into the quality of the picture that is displayed on the client).

Position management

  • Initial system design, implementation, experimentation, iterative analysis and evolution.
  • The most important solution requirements concern the data structure for collision management, the use of a CPU for collision management and universe composition, and the bandwidth management for the LAN server.

Representation of movements on the client side

  • Design of the initial system, implementation, experimentation, iterative analysis and evolution.
  • The most important solution requirements concern the quality of the animation (the universe is virtual but must not lose its credibility at any time, this concept being fundamental to the success of the project), the filtered data and UDP packet losses, the controlled actions (punch and backward movement, for example). [Kansal]

Character control

  • Research via prototype developments on "point and click" and "direct control" systems.
  • The most important solution requirements concern an intuitive control system and the bandwidth requirements for transmitting information to the server.

Server-to-Server Communication

  • Iterative development and further evolution of a communication system capable of handling the data rate required for massively online worlds.

Updating client systems

  • Consider the different possibilities to optimize the distribution of the program updates and the data of the client system. One solution is to use the rsync software [Tridgell] which offers the advantages of the 2 traditional systems currently used in the industry.

Artificial intelligence

  • The team has chosen to develop a multi-agent infrastructure and an implementation of the component requiring the assembly of complex and intelligent entities. A lot of work has been done in the past in the field of multi-agent systems research. However, no one has ever succeeded in applying these systems to the types of problems posed by massively online worlds.
  • The R&D work is iterative. The procedure includes the use of a "client" tool specifically developed to display and analyze the parameters inherent to each character. This allows for testing the behavior of the entities and reworking the systems based on the results.
  • The team works closely with the ANIMAT LAB research lab on many of the more complicated problems they face.

3D

Using the results of cutting-edge research as a starting point, the team specified and implemented a graphics engine infrastructure, creating a set of core technologies and data production tools.

Rendering at the terrain level

The 3D team has developed a new terrain entirely representing a natural and virtual environment. The less obvious difficulties to overcome are :

  • Representation of mathematical surfaces
  • Lighting
  • Data generation and CPU load

Asset production has been a very challenging part of the development, requiring a re-design of some of the principles of the mathematical surface representation.

A few additional features were studied, some of which were adopted (such as water, clouds (see executable appendix/exe/clouds.exe) and grass) and some of which were not (such as open windows in a terrain using "portal" technology).

Streets and buildings

The most difficult challenge in terms of quality was the lighting (how to achieve a real-time rendering of indoor scenes equivalent to that of outdoor scenes, considering the difficulties related to the alternation of day/night, the movement of light sources, etc.).

The technical challenge was also to simplify very complex scenes for the rendering as well as to dynamically load scenes requiring large amounts of data without impacting the smoothness of the picture (see the video appendix/video/town.avi).

Characters and plants

The main difficulty was again the smoothness of the picture. Tests were carried out on different levels of detail. The results showed that the quality fluctuates significantly depending on the contents of the scene (plants, people or buildings). The solution considered was to fragment into different implementations depending on the type of data. The Multi Resolution Mesh techniques chosen at the end of the research constitute a considerable advance compared to the state of the art in this field.

Another difficulty concerned the scalability of the characters (research and development of solutions to change the coloring and composition of the character meshes).

Finally, research was undertaken to give the impression that the plants sway in the wind.

Particle system

It was necessary to develop a very powerful and comprehensive particle system to be able to create the 1000s of effects necessary to add life and movement to the universe. The system, like the other 3d systems, is totally dynamic. The number of particles generated depends on the capacity of the machine, the complexity of the scene, the number of particle systems, etc. (See appendix/doc/3d/training_particle_system.doc and the video appendix/video/realtime.avi).

Audio environment

Advances in PC performance and audio hardware are opening up new horizons for audio immersion. Working with experts in film sound effects, the team's goal was to design and develop a system for representing audio environments and creating and managing sound for a PC application. Notable changes were made to the sound mixing (as in movies, the objective is to accentuate the sound impressions and not to render reality). This also includes the management of the differences between day and night, weather conditions, seasons, etc... (See documents in appendix/doc/sound)

Collision detection and path finding

The completely new representation of the landscape posed a problem related to path finding and collision detection.

Collision detection tests must be performed in less than 10 nanoseconds per moving object (too fast to allow disk access).

The path finding algorithm must be performed in less than 1 millisecond. A compact polygon representation would require about 100 GB (too large to fit on the server memory). The Bezier patch representation is too slow for a real time analysis.

An original iso-surface representation has been invented to get around this obstacle (see document annex/doc/3d/training_path_finding.doc and annex/doc/3d/collision_data.doc).

Progress made — Results obtained — Originality of the solution chosen

3D

The rendering system for the terrain (see the annex/video/desert.avi) and the characters works (see the annex/exe/MRM executable).

Network

Inter-server communication system in 5 layers (see document annex/doc/net/new_layer1_graph.doc and annex/doc/net/nelnet_uml.png and annex/doc/net/nel_net.doc).

Priority-based distribution of data. Patch system for clients and servers that takes the best of the 2 existing methods.

Implementation of a UDP network protocol with error recovery according to the importance of the lost data (see document annex/doc/net/frontend.doc).

Artificial Intelligence

The agents are working.

What to do next

  • Optimization
  • Stability
  • Full-scale test

2002

Description of work — Difficulties encountered

Here is the breakdown of the work carried out during the year 2002 in the three branches of our research and development activity:

Network and communication

Database of objects distributed between servers.

  • Initial system design, implementation, experimentation, iterative analysis and evolution
  • Research in the different existing products like Versant, ObServer, ObjectStore, ...
  • Comparison of different solutions [Versant].
  • The existing solutions were not adapted to our specifications and did not support our constraints described previously, we thus had to carry out research ([Gaillard1] and in particular [Gaillard2]) on the operation of such system to develop our own framework.

Robust inter-server communication

  • Initial system design, implementation, experimentation, iterative analysis and evolution
  • The most important solution requirements concern the design of a protocol allowing the distributed system to communicate even if the applications are not of the same protocol version.

Artificial intelligence

Following our research on multi-agent systems carried out in 2001, we carried out research on classification systems and logical operators and then began full-scale tests. It turned out that the system, even with an important optimization, could not support the new specifications. Indeed, in the latter, the number of intelligent entities required in play doubled to more than 70,000. More problematically, the multi-agent systems were very difficult to control, due to their autonomous nature, by the people placing the game elements. This made it very difficult to create complex behaviors in a predictable way, which was necessary to create particular quests or events.

So we had to do a lot of research to come up with a working system that solved the previous problems. The system was named RAID Engine for Real-Time Army Invasion Deployment. In addition to being able to manage a very large number of entities, this system is capable of launching intelligent creature invasions.

Research was required to design a much faster pathfinding system as well as tools to place such a large number of entities.

3D

Using the results produced by Nevrax in the previous year, the team was able to conduct in-depth research in more specialized areas.

Water rendering

The 3D team researched and developed a visually realistic rendering system for the display of water bodies (seas, rivers or lakes).

The less obvious difficulties to overcome are :

  • Management of the depth problem for large bodies of water.
  • Incompatibility with different commercially available graphics cards.
  • Simulation of the dynamics as well as minimizing the number of faces displayed.

Optimization of indoor visualization

The overall problems were the determination of the type of algorithm and managing to predict the extended behavior of this algorithm. Indeed, the algorithms used only partially met our expectations, so we chose as an approach to extend an already existing algorithm, knowing that the literature on the subject is abundant, we selected algorithms that favored the dynamism of the scene to those that were perfectly accurate but applied only to static structures with some dynamic objects.

Improving terrain rendering

Most of the research on terrain rendering was done in 2001. However, we continued the research on some particular areas of the terrain such as adding "noise" with macro textures to break the repetitions to the tiles system that we had set up in 2001 or pre-calculating the terrain shadows with a modified radiosity algorithm.

Graphical rendering of the sky

In 2001, the sky rendering consisted mainly of managing the basic clouds. The system being too static, we continued to do research on a more realistic and more dynamic cloud rendering. Moreover, we had to set up a system to display a sky (stars, moons, storms, sunrise and sunset, ...) of high visual quality without taking too much graphic resources.

Audio environment

Following the research carried out in 2001, we raised a certain number of problems related to our technology, thus we decided to relaunch a research topic to correct the deficiencies and increase the immersion of the sound environment. It was necessary to solve the problems related to the installation and the modification of the sound environments in a tool, to manage the modifications of the sounds caused by the reverberation from the walls, the dynamic opening and closing of the doors which also changes greatly the surrounding sounds.

Progress made — Results obtained — Originality of the solution chosen

Network and communication

The object database distributed between the servers as well as the robust communication system are operational and are two central elements of the servers in our application that is currently in operation.

Artificial intelligence

The new system was implemented after a long research phase and is now working, currently managing more than 150,000 intelligent entities on 2 PC servers running Linux.

3D

The various research projects have led to very positive results on audio environments, improved terrain rendering,

water rendering,

water_rendering.png

optimization of indoor visualization,

indoor_visualization.png

and sky rendering.

sky_rendering.png

Bibliography

Network

2001

  • [Singhal/Zyda] Singhal, S., Zyda, M. "Networked Virtual Environments". Addison-Wesley, 1999
  • [GDC2000] Bernier, Y. "Half-Life and TeamFortress Networking: Closing the loop on Scalable Network Gaming Backend Services".
  • [GDC2001B] Bernier, Y. "Latency Compensating Methods in Client/Server In-game Protocol Desgin and Optimization".
  • [GDC2001T] Terrano, M. Bettner, P. "1,500 Archers on a 28.8: Network Programming in Age of Empires and Beyond"
  • [Tridgell] Tridgell, A. "Efficient Algorithms for Sorting and Synchronization. http://samba.org/~tridge/phd_thesis.pdf
  • [Kansal] Kansal, A. Karandikar, A. "Jitter-free Audio Playout over Best Effort Packet Networks". ATM Forum International Symposium

2002

Artificial Intelligence

2001

2002

  • Bryson J. 2000. Hierarchy and Sequence vs. Full Parallelism in Action Selection. In From Animals to Animats 6 : Proceedings of the Sixth International Conference on Simulation of Adaptive Behavior. Meyer J-A., Berthoz A., Floreano D., Roitblat H. and Wilson S.W. (Eds.). The MIT Press/Bradford Books. pp. 147.
  • Gérard, P., Stolzmann, W. & Sigaud, O. 2001. YACS : a new Learning Classifier System using Anticipation. In Journal of Soft Computing : Special Issue on Learning Classifier Systems. To appear.
  • Girard B., Robert G. & Guillot A. 2001. Jeu Vidéo et Intelligence Artificielle Située. En soumission à la revue InCognito.
  • Guillot, A., Meyer, J.A. 2000. From SAB94 to SAB2000 : What’s new, animat ? In From Animals to Animats 6 : Proceedings of the Fifth Conference on Simulation of Adaptive Behavior. Meyer J.A. et al. (eds.). The MIT Press : Cambridge, MA. pp. 3-12.
  • Holland J.H. 1986. Escaping brittleness: the possibilities of general purpose algorithms applied to parallel rule-based systems. In Machine Learning 2. Michalski R. S., Carbonell J. G. & Mitchell T. M. (Eds). Morgan-Kaufman Publishers, Inc. vol. 2, pp. 593-623.
  • Meyer J.A. & Guillot A. 1991. Simulation of adaptive behavior in animats : Review and prospect. In From animals to animats : Proceedings of the first international conference on Simulation of Adaptive Behavior. Meyer J.A. & Wilson S.W. (eds). The MIT Press : Cambridge, MA. pp. 2-14.
  • Meyer C. 1999. Solution Algorithmique Génétique pour l'Anticipation de Comportements Evolutifs. These de doctorat de l'université Paris 6 spécialité Informatique. LIP6. http://www.lip6.fr/reports/lip6.1999.015.html
  • Stolzmann W., Butz M.V., Goldberg D.E. & Hoffmann J. 2000. First cognitive capabilities in the Anticipatory Classifier System. In >From Animals to Animats 6 : Proceedings of the Sixth International Conference on Simulation of Adaptative Behavior. J.A. Meyer & al. (eds.). The MIT Press/Bradford Books : Cambridge, MA. pp. 287-296.
  • Tinbergen, N. 1951. L'étude de l'instinct. Payot.
  • Wilson S.W. 1991. The Animat path to AI. In From animals to animats : Proceedings of the first international conference on Simulation of Adaptive Behavior. Meyer, J.A. et Wilson, S.W. (eds). The MIT Press : Cambridge, MA. pp. 15-21.
  • Wilson S.W. 1995. Classifier fitness based on accuracy. In Evolutionary Computation. vol. 3, num. 2, pp. 149-175.
  • Witkowski M. 1999. Integrating Unsupervised Learning, Motivation and Action Selection in an A-life Agent. In 5th European Conference on Artificial Life (ECAL-99). Floreano D., Mondada F. & Nicoud J.-D. (Eds). Springer : Lausanne. pp. 355-364.
  • Manuela Veloso & al. “Integrating planning and learning: the PRODIGY architecture”. School of Computer Science, Carnegie Mellon University.
  • A. Bryan Loyal, Joseph Bates “HAP, a reactive, adpative architecture for agents” . School of Computer Science, Carnegie Mellon University.
  • Rhodes, B. "PHISH-Nets: Planning Heuristically in Situated Hybrid Networks". MIT Media Arts and Sciences S.M. Thesis. http://rhodes.www.media.mit.edu/people/rhodes/Papers/PHISH-Nets/
  • Maes, P. “How to do the right thing”, AI laboratory, Massachussetts institute of technology
  • Fred Charles, Steven J. Mead, Marc Cavazza “Behaviouroural interaction of characters for virtual storytelling”. School of Computing and Mathematics, University of Teeside, UK
  • John Laird, Michael Van Lent "Developing an artificial intelligence engine". Proceedings of the 1999 Game Developpers Conference
  • Bruce M. Blumberg, Tinsley A. Galyeam " Multi-level direction of autonomous creatures for real time virtual environments ". MIT Media Lab.

3D

2001

  • [Hoppe1] Hoppe, H. "Progressive Meshes". http://research.microsoft.com/siggraph96/96/progmeshes.htm
  • [Hoppe2] Hoppe, H. "Efficient Implementation of Progressive Meshes". Technical Report MSR-TR-98-02. January 1998
  • [Hoppe3] Hoppe, H. "Smooth View-dependent Level-of-detail Control and its application to terrain rendering". http://davinci.informatik.uni-kl.de/vis98/archive/tp/papers/svdlod.pdf
  • [Duchaineau] Duchaineau, M. Wolinsky, M. Sigeti, D. Miller, M. Aldrich, C. Mineev-Weinstein, M. "ROAMing Terrain: Real-time Optimally Adapting Meshes". October 19, 1997
  • [Dobashi] Dobashi, Y. "A simple, Efficient Method for Realistic Animation of Clouds". Computer Graphics Procedings 2000
  • [Lee] Lee, A. "Displaced Subdivision Surfaces" Compute Graphics Procedings 2000

2002

  • Ralf Stockholm Nielsen “Real Time rendering of atmospheric scattering for Flight Simulators” 2003
  • Jonathan Cohen, Chris Tchou, Tim Hawkins, and Paul Debevec. Real-time High Dynamic Range Texture Mapping, Eurographics Rendering Workshop 2001, London, England, June 2001
  • Preetham, A. J., Shirley. P, and Smits, B., "A Practical Analytic Model for Daylight," in SIGGRAPH, 1999
  • Wang “Realistic and Fast Cloud Rendering”, Microsoft Corporation, 2003
  • BATAGELO, H. C., AND JUNIOR, I. C. 1999. Real-time shadow generation using bsp trees and stencil buffers. Dans le Proc. SIBGRAPI 99, 93–102.
  • BILODEAU, B., AND SONGY, M. 1999. Real time shadows. Au Creative Labs Sponsored Game Developer Conference, Creative Labs Inc. CARMACK, J. 2000. Publié sur le site de NVIDIA.
  • CROW, F. C. 1977. Shadow algorithms for computer graphics. Dans le Proc. SIGGRAPH, ACM Press, ACM, 242–248.
  • EVERITT, C., AND KILGARD, M. J. 2002. Practical and robust stenciled shadow volumes for hardware-accelerated rendering. Tech. rep., NVIDIA.
  • HEIDMANN, T. 1991. Real shadows, real time. Dans le IRIS Universe, vol. 18, Silicon Graphics, Inc, 23–31.
  • KILGARD, M. J. 2001. Robust stencil shadow volumes. Dans la Présentation du CEDEC, Tokyo.
  • STAMMINGER, M., AND DRETTAKIS, G. 2002. Perspective shadow maps. Dans le Proc. SIGGRAPH, ACM Press, ACM, 557–562.
  • Hoppe, H. "Smooth View-dependent Level-of-detail Control and its application to terrain rendering". http://davinci.informatik.uni-kl.de/vis98/archive/tp/papers/svdlod.pdf
  • Duchaineau, M. Wolinsky, M. Sigeti, D. Miller, M. Aldrich, C. Mineev-Weinstein, M. "ROAMing Terrain: Real-time Optimally Adapting Meshes". October 19, 1997
  • Lee, A. "Displaced Subdivision Surfaces" Computer Graphics Procedings 2000
  • Foley, van Dam. “Computer Graphics”, second Edition. ISBN 0-201-84840-6
  • Siggraph 2000, Electronic Art And Animation Catalog, Ghali, Blythe, Sowizral, Kettner, “Introduction To Scene Graph”, pp 58-110.
  • [NN94] Nishita T., Nakamae, Method of displaying optical effects within water using accumulation buffer, Siggraph’94 Computer Graphics, pp 373-379
  • http://www.gamasutra.com/gdce/jensen/jensen_01.htm Deep-Water Animation and Rendering
  • Foley, van Dam, Feiner, Hughes, “Computer Graphics”, principles and practice, The systems programming series, Second Edition in C, 1995, pp 675 – 680.
  • Site de RenderWare : http://www.renderware.com/
  • ACM Siggraph, “Computer Graphics”, Proceedings, 2000, Conservative Visibility Preprocessing Using Extended Projections pp 229 – 238.
⚠️ **GitHub.com Fallback** ⚠️