NOE Library - Prototype demo
デモの説明
このデモを作り始めて1年半ぐらいになります。
作り始めたきっかけはLinuxとOpendGLを勉強しながらマルチプラットフォームエンジンを作り、それ使ってネットワークで遊べる簡単なサッカーゲームを作ることでした。
そのころは基本的な機能だけ作って(モデル制作とFixed Functions Pipelineでの描画)、そのままにしていました
3週間ほど前から見せるためのデモを作るためにこのエンジンプログラムを再開しました。
数週間しかデモを制作する時間がなかったので経験豊富なWindowsとDirectXのエンジンだけですることに決めました。
その短期間で特に次の機能を制作しました:
- Shader based rendering,
- Multi-thread rendering,
- Shadow mapping,
- Fur effect.
初めはShader Model 3.0 (SM) を使ってシェダープログラムを制作しましたが、SM 2.0を使っても制作可能なので変更することにしました。
全て変更する時間がなかったので、使用してないSM 3.0プログラムの部分はそのままソースに残っています。
このデモはまだ制作途中なので、まだたくさんの直すべきバッグがありますが(「Known Issues」 セクション見てください)、直すことができないとか、問題を大切にしていないわけではありません。
ただ本当に見せたかったものを制作するための時間が十分にありませんでした。
Features
Implemented features:
- Application independent library (can be use for many projects).
- Multi-thread rendering (using automatic double-buffered structures noe::DoubleBuffer).
- Camera & light view frustum culling (frustum/sphere check).
- Shadow mapping (with basic bi-linear blur).
- Fur effect (used to simulate field grass).
- Basic physic & collision detection.
Know issues
Known issues:
- Collision
- Multithread version of dynamic/static object collision checks return abnormally (must be investigated).
- There is no collision on goal transversal bar and advertisement panel.
- Font
- Don't respect the screen ratio (size is fix).
- Fur effect
- Primitive are not z-sorted while using linear blending mode.
- Base texture doesn't fit the grass color.
- Game
- Ball rolling is sometime bugged.
- Ball/Player attachment interferes with Ball/Player collision handling.
- Project
- Many compile warnings (must be fully fixed!).
- In release mode the debug code skipping generate a warning message.
- Visual Studio project is not optimized.
- Don't seem to work on Win98.
- Rendering
- Shadow-map texture doesn't fit exactly the light cone area (must be biased?).
- Not all needed data are double-buffered.
- Horizontal cylinders' bounding sphere bug (so object is not culled correctly).
- Hardware capacities are not all checked (max texture size, etc.)
- On some configuration, more that 1 update occur each frame event if D3DPRESENT_INTERVAL_ONE is set.
- Don't work any more in full-screen mode.
- Resource
- Same files are loaded many times.
- Script
- Values take from configuration script are no checked to be valid.
- There is no handling for value missing in the script.
- Windows
- Application process still sometime running after windows close.
- Only basic windows messages are handled.
Improvements
Improvements:
- Fix all known issues!
- Use scene partitioning algorithm to optimize rendering and collision detection (quad-tree or sphere-tree).
- Unify shader constant usage to be able to mix effects (ie. use shadow-map on fur effect).
- Create a resources manager to optimize data I/O.
- Create view-frustum bounding box to speed up culling check.
See also the NOE Library ToDo list.
3rd parties library
3rd party's libraries:
- Microsoft C++ Standard Library
- Microsoft STL
- Microsoft DirectX 9.0c
- Boost 1.33.1
- Lua 5.1.1
- LuaC 1.216
Technical requirements
Technical requirements:
- Microsoft Windows 2000/XP
- DirectX version 9.0c
- Video card supporting shader model 2.0
Copyright (C) 2005-2006 Guillaume Blanchard. All rights reserved.