flatlib3
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
flatlib3 [2014/11/09 20:55] – [gw] oga | flatlib3 [2021/01/04 15:39] (現在) – 削除 oga | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== flatlib3 ====== | ||
- | |||
- | 開発中 | ||
- | |||
- | * リアルタイム 3D 描画を想定したゲームやアプリケーション開発用ライブラリ&ツール | ||
- | |||
- | |||
- | |||
- | ===== 特徴 ===== | ||
- | |||
- | * Multi Platform 対応 | ||
- | * 独自の build system で、開発 HOST も Windows, Mac OS X, Linux どれでも OK | ||
- | * アプリケーション自体は VisualStudio, | ||
- | * Database Backend | ||
- | * On memory の data 構造 (Script 系言語の 連想配列, | ||
- | * リソース管理、データフォーマット、モジュール&タスク管理、その他の基盤として活用 | ||
- | * テキストベースのデータファイルフォーマット | ||
- | * 自由度が高く冗長性を持たせることが可能。情報が増えても上位互換性を保つことができる | ||
- | * バイナリ化対応予定 (未完成) | ||
- | * Script Engine (FlatScript) | ||
- | * 独自の Script 言語、Compiler & VM | ||
- | * ほぼ < | ||
- | * 共通 Module API | ||
- | * < | ||
- | * Android の Java 等、他の言語との連携も容易に行うことができる | ||
- | * 仮想ファイルシステム | ||
- | * プラットフォームごとに異なる Data path を統一化できる | ||
- | * アーカイブファイルを File API で読み込み可能 | ||
- | * 開発効率を向上させるための軽量&高速なデータ開発サイクル | ||
- | * プログラムの再コンパイルなしにデータやスクリプトを更新可能 | ||
- | * 外部依存ライブラリなし | ||
- | * 機能は flatib3 自身で実装しているので、基本的には各 Platform 毎の標準ライブラリのみで実行可能 | ||
- | * 唯一の例外: | ||
- | * 描画関連 | ||
- | * 頂点データ形式が自由でシェーダーとのマッチングも自動 | ||
- | * 頂点データフォーマットの任意変換が可能 (モバイル向けに頂点形式を圧縮するなどの変換が API からも容易にできる) | ||
- | * 複数のテクスチャ圧縮フォーマットに対応 | ||
- | * ハードウエアにとって最も効率が良いフォーマットを選んで描画することが可能 | ||
- | * 複数フォーマットに対応したコンバータを開発予定 | ||
- | * 膨大になりがちなシェーダーの管理を自動化 | ||
- | |||
- | |||
- | ===== 対応プラットフォーム ===== | ||
- | |||
- | * Windows x86/x64 | ||
- | * OpenGL 4.x / OpenGL ES 2.0, 3.0 (各種Emulator/ | ||
- | * 主に開発ツール用 | ||
- | * Android armeabi/ | ||
- | * OpenGL ES 2.0 / OpenGL ES 3.0 / OpenSL | ||
- | * iOS armv7/ | ||
- | * Metal / OpenGL ES 2.0 / OpenGL ES 3.0 / OpenAL | ||
- | * Linux x86/ | ||
- | * OpenGL 4.x / OpenGL ES 2.0, 3.0 / OpenAL | ||
- | * Mac OSX x86_64 | ||
- | * OpenGL 4.1 / OpenAL | ||
- | * Web Emscripten | ||
- | * WebGL | ||
- | |||
- | * 64bit 対応 | ||
- | * < | ||
- | |||
- | |||
- | |||
- | ===== 対応ツール ===== | ||
- | |||
- | * 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 のようなもの) | ||
- | * スクリプト言語 (アプリケーションバイナリから独立、< | ||
- | * Module で各機能の独立& API 管理を行うことが可能。スクリプトや Android Java など他の言語とのインターフェースも Module 単位で行う。 | ||
- | |||
- | |||
- | * モデルデータビュア | ||
- | * Windows, Android, iOS, MacOS, Linux (armv7l), browser (WebGL) | ||
- | |||
- | |||
- | * データとアプリケーションの完全な分離 | ||
- | * 再コンパイル無しに、モデルデータやスクリプトを入れ替え可能 | ||
- | |||
- | * レベルエディタ、マテリアルエディタ系の統合ツールはありません | ||
- | * DCCツール内で作業し、そのまま Export することを想定しています。 | ||
- | |||
- | |||
- | |||
- | |||
- | ===== flatlib3 Library 概要 ===== | ||
- | |||
- | ==== core ==== | ||
- | |||
- | * マルチプラットフォーム用共通ライブラリ | ||
- | * Memory 管理 | ||
- | * FileSystem | ||
- | * Thread API (Lock, Queue 他) | ||
- | * Database | ||
- | * Module 管理 | ||
- | * Slice (Task/ | ||
- | * Math (Vector/ | ||
- | * Encoding (文字コードアクセス、変換) | ||
- | * その他 | ||
- | |||
- | |||
- | |||
- | ==== gw ==== | ||
- | |||
- | * 3D モデル描画 | ||
- | * シェーダー管理 (シェーダーの膨大な組み合わせを効率的に管理する) | ||
- | * テクスチャ管理 (GPU 毎の独自フォーマットの自動判別、キャッシュ) | ||
- | * モデルデータの描画や管理 | ||
- | |||
- | * 対応API | ||
- | * OpenGL ES 2.0 / OpenGL ES 3.0 / OpenGL 4.x | ||
- | * Metal | ||
- | * Direct3D 11 は未対応 | ||
- | |||
- | * モデルフォーマット | ||
- | * 独自形式 a7 | ||
- | |||
- | ==== event ==== | ||
- | |||
- | * UI Event の共通化 | ||
- | * Multi Touch API (Windows 7/8/8.1, iOS, Android) | ||
- | * Keyboard API (debug目的) | ||
- | * Gamepad API (DirectInput/ | ||
- | |||
- | ==== script ==== | ||
- | |||
- | * FlatScript | ||
- | * script コンパイラ | ||
- | * script VM | ||
- | * script ランタイム | ||
- | |||
- | * 静的な型付けで、32bit int と 32bit float の効率よい処理が可能 | ||
- | * コンテキスト (VM) はわずか 36byte (64bit時は 64byte) + スタック領域 のみ。いくらでもインスタンス化可能 | ||
- | * 実行コンテキストの任意中断による非同期処理が可能 | ||
- | * < | ||
- | * 最小限のプリプロセッサ機能 (C# の プリプロセッサに近いが、include や数値定義が可能) | ||
- | * 構文が同じなので、enum 等のシンボル値をアプリケーションと共有可能 | ||
- | * アプリケーションとバイナリの完全な分離 | ||
- | * 動的コンパイルだけでなく、事前コンパイルによるバイナリ化が可能 | ||
- | * Script 言語風のオブジェクトにアクセスできるインターフェース (辞書、ハッシュ、連想配列の JavaScript ライクな構文) | ||
- | * static な Lambda 式風構文 (インラインで記述できるがオブジェクトを伴わない、< | ||
- | * 64bit プラットフォームに完全対応 | ||
- | * Script 自体が動的な暗黙のオブジェクトの生成は行わない。 | ||
- | * メモリアロケートが発生する処理は < | ||
- | * 言語単体は最小限で、それ以外の機能はすべて < | ||
- | * Module API 自体は FlatScript 以外の言語からも呼び出しできる | ||
- | |||
- | |||
- | |||
- | |||
- | ==== window ==== | ||
- | |||
- | * gw + script ベースの簡易 Window システム | ||
- | * デバッグ用の情報表示やパラメータ操作等が可能 | ||
- | * Touch 操作 UI | ||
- | * 挙動は script で記述可能 | ||
- | |||
- | ++++ FlatScript の例| | ||
- | |||
- | <code c++> | ||
- | // ただの C++ に見えますが FlatScript です | ||
- | class MyWindow : public ListWindow { | ||
- | |||
- | static MyWindow Create( stirng name ) | ||
- | { | ||
- | return | ||
- | } | ||
- | |||
- | void Init( MyWindow this ) | ||
- | { | ||
- | this-> | ||
- | this-> | ||
- | |||
- | this-> | ||
- | this-> | ||
- | |||
- | this.Title= " | ||
- | this.LineHeight= 64.0f; | ||
- | |||
- | // ボタンを押した時の動作 | ||
- | this.AddItem( "< | ||
- | []( MyWindow this ){ // C++11 Lambda 構文 | ||
- | this-> | ||
- | }); | ||
- | |||
- | this-> | ||
- | } | ||
- | }; | ||
- | </ | ||
- | |||
- | |||
- | ++++ | ||
- | |||
- | ==== sound ==== | ||
- | |||
- | * 単純な機能のみ | ||
- | * DirectSound/ | ||
- | * DirectShow/ | ||
- | |||
- | |||
- | |||
- | ==== network ==== | ||
- | |||
- | * Socket API | ||
- | * 初歩的な web アクセス | ||
- | * Android / iOS 端末における、Wi-Fi 経由のデバッグ用 | ||
- | |||
- | |||
- | |||
- | |||
- | ==== image5 ==== | ||
- | |||
- | * テクスチャツール用 (未完成) | ||
- | |||
- | |||
- | |||
- | |||
- | |||
flatlib3.1415534105.txt.gz · 最終更新: 2014/11/09 20:55 by oga