flatlib3
文書の過去の版を表示しています。
目次
flatlib3
開発中
- リアルタイム 3D 描画を想定したゲームやアプリケーション開発用ライブラリ&ツール
特徴
- Multi Platform 対応
- 独自の build system で、開発 HOST も Windows, Mac OS X, Linux どれでも OK
- アプリケーション自体は VisualStudio, Xcode, AndroidStudio/Eclipse 等の IDE を使います
- Database Backend
- On memory の data 構造 (Script 系言語の 連想配列, Dictionary, Hash 等の機能に近いもの)、明確な型付けあり
- リソース管理、データフォーマット、モジュール&タスク管理、その他の基盤として活用
- テキストベースのデータファイルフォーマット
- Xml では無いので高速な読み書きが可能
- デバッグのため人間が見ても理解しやすく編集しやすい
- 読み書きが高速。パーサーの作成が容易で行単位でデコード可能
- 名前によるプロパティアクセスで、各データは型情報が保存される
- 数値型は配列として扱える。配列ノードを挿入する必要がなく Matrix, Vector 値をそのままプロパティに格納可能
- アプリケーションが直接読み込んでそのまま利用できる。事前変換が不要
- テクスチャのように最初からバイナリの情報は含まないため、サイズが肥大化しない
- 自由度が高く冗長性を持たせることが可能。情報が増えても上位互換性を保つことができる
- バイナリ化対応予定 (未完成)
- Script Engine (FlatScript)
- 独自の Script 言語、Compiler & VM
- ほぼ C++ に近いサブセット
- 共通 Module API
- C++ で実装した Module は、FlatScript だけでなく他の言語からも利用可能
- Android の Java 等、他の言語との連携も容易に行うことができる
- 仮想ファイルシステム
- プラットフォームごとに異なる Data path を統一化できる
- Zip File の Mount 等、アーカイブファイルを File API で読み込み可能
- Network による Remote Access 対応
- 開発効率を向上させるための軽量&高速なデータ開発サイクル
- プログラムの再コンパイルなしにデータやスクリプトを更新可能
- 外部依存ライブラリなし
- 機能は flatib3 自身で実装しているので、基本的には各 Platform 毎の標準ライブラリのみで実行可能
- 唯一の例外: Windows のみ zlib が必要。(zlib は他の Platform では標準 API)
- 描画関連
- 頂点データ形式が自由でシェーダーとのマッチングも自動
- 頂点データフォーマットの任意変換が可能 (モバイル向けに頂点形式を圧縮するなどの変換が API からも容易にできる)
- 複数のテクスチャ圧縮フォーマットに対応
- ハードウエアにとって最も効率が良いフォーマットを選んで描画することが可能
- 複数フォーマットに対応したコンバータを開発予定
- 膨大になりがちなシェーダーの管理を自動化
対応プラットフォーム
- Windows x86/x64
- OpenGL 4.x / OpenGL ES 2.0, 3.0 (各種Emulator/OpenGL 4.x ES互換モード) / DirectSound/DirectShow/OpenAL
- 主に開発ツール用
- Android armeabi/armeabi-v7a/arm64-v8a/mips/mips64/x86/x86_64
- OpenGL ES 2.0 / OpenGL ES 3.0 / OpenSL
- iOS armv7/armv7s/arm64
- Metal / OpenGL ES 2.0 / OpenGL ES 3.0 / OpenAL
- Linux x86/x86_64/armv7l/armv6l
- OpenGL 4.x / OpenGL ES 2.0, 3.0 / OpenAL
- Mac OSX x86_64
- OpenGL 4.1 / OpenAL
- Web Emscripten
- WebGL
- C++11 対応コンパイラが必要 (VS2013, gcc4.7, clang 3.1 以上)
対応ツール
- Maya 2014
- データ export プラグイン(mll) &ツール(mel) (現在 Windows x64 のみ)
- Model, Light, Camera, Material, Animation
- Polygon model のみ
- Material 詳細
- Texture Map (Ambient, Color, Specular, Emissive, Normal, Height)
- Vertex Color
- Maya TangentSpace / 独自 TangentSpace 対応
- Blender 2.69
- データ export プラグイン
- 現状 単純な Model のみ
機能
- システムライブラリ一式
- マルチプラットフォームに対応した共通化 API
- デバッグに便利な各種サポート機能
- DCC ツールからの Export とデータ確認ビュア、実機のロード&描画ライブラリといったコンテンツ作成パイプライン
- スクリプト言語による柔軟な開発システム
- モジュール化で部分利用が可能 (システム Core のみ使って描画は別エンジンといった組み合わせが可能)
- フレームワーク
- 高速なビルドシステム
- Database バックエンド (Script 言語の Object のようなもの)
- スクリプト言語 (アプリケーションバイナリから独立、C++ ベースで class あり)
- Module で各機能の独立& API 管理を行うことが可能。スクリプトや Android Java など他の言語とのインターフェースも Module 単位で行う。
- モデルデータビュア
- Windows, Android, iOS, MacOS, Linux (armv7l)
- データとアプリケーションの完全な分離
- 再コンパイル無しに、モデルデータやスクリプトを入れ替え可能
- レベルエディタ、マテリアルエディタ系の統合ツールはありません
- DCCツール内で作業し、そのまま Export することを想定しています。
flatlib3 Library 概要
core
- マルチプラットフォーム用共通ライブラリ
- Memory 管理
- FileSystem (仮想パスへの Mount が可能。Zip file を直接 FileSystem に Mount 可能)
- Thread API (Lock, Queue 他)
- Database (JavaScript などの Object のようなもの、オンメモリ)
- Module 管理
- Slice (Task/Event)
- Math (Vector/Matrix 等) SSE,NEON 対応
- Encoding (文字コードアクセス、変換)
- その他
- 圧縮&解凍、vector (Linear,Heap,Ordered,Addressable)、他
gw
- 3D モデル描画
- シェーダー管理 (シェーダーの膨大な組み合わせを効率的に管理する)
- テクスチャ管理 (GPU 毎の独自フォーマットの自動判別、キャッシュ)
- モデルデータの描画や管理
- 対応API
- OpenGL ES 2.0 / OpenGL ES 3.0 / OpenGL 4.x
- Metal
- Direct3D 11 は未対応
- モデルフォーマット
- 独自形式 a7
- テキスト形式で、人間が見て読み書き可能。
- テキストのままアプリケーションがロード可能。
- 行単位のパースが可能で高速に読み込める
- Database と共通 API でアクセスできる
- 事前に変換したバイナリ形式に対応予定
event
- UI Event の共通化
- Multi Touch API (Windows 7/8/8.1, iOS, Android)
- Keyboard API (debug目的)
- Gamepad API (DirectInput/Android)
script
- FlatScript
- script コンパイラ
- script VM
- script ランタイム
- 静的な型付けで、32bit int と 32bit float の効率よい処理が可能
- コンテキスト (VM) はわずか 36byte (64bit時は 64byte) + スタック領域 のみ。いくらでもインスタンス化可能
- 実行コンテキストの任意中断による非同期処理が可能
- C++ 構文なので、Text Editor の syntax ハイライトや等の補佐機能が活用できる
- 最小限のプリプロセッサ機能 (C# の プリプロセッサに近いが、include や数値定義が可能)
- 構文が同じなので、enum 等のシンボル値をアプリケーションと共有可能
- アプリケーションとバイナリの完全な分離
- 動的コンパイルだけでなく、事前コンパイルによるバイナリ化が可能
- Script 言語風のオブジェクトにアクセスできるインターフェース (辞書、ハッシュ、連想配列の JavaScript ライクな構文)
- static な Lambda 式風構文 (インラインで記述できるがオブジェクトを伴わない、C++11 の構文を採用、クロージャーではない)
- 64bit プラットフォームに完全対応
- Script 自体が動的な暗黙のオブジェクトの生成は行わない。
- メモリアロケートが発生する処理は C++ で記述した命令 (Module API) を利用する
- 言語単体は最小限で、それ以外の機能はすべて C++ 側で作成した Module API に依存
- Module API 自体は FlatScript 以外の言語からも呼び出しできる
window
- gw + script ベースの簡易 Window システム
- デバッグ用の情報表示やパラメータ操作等が可能
- Touch 操作 UI
- 挙動は script で記述可能
sound
- 単純な機能のみ
- DirectSound/OpenAL/OpenSL の Wave 再生
- DirectShow/OpenSL/AVAudioPlayer のストリーム再生
network
- Socket API
- 初歩的な web アクセス
- Android / iOS 端末における、Wi-Fi 経由のデバッグ用
image5
- テクスチャツール用 (未完成)
flatlib3.1415533828.txt.gz · 最終更新: 2014/11/09 20:50 by oga