ユーザ用ツール

サイト用ツール


flatlib3

flatlib3

開発中

  • リアルタイム 3D 描画を想定したゲームやアプリケーション開発用ライブラリ&ツール

特徴

  • Multi Platform 対応
    • 独自の build system で、開発 HOST も Windows, Mac OS X, Linux どれでも OK
      • アプリケーション自体は VisualStudio, Xcode, AndroidStudio 等の IDE を使います
  • Database Backend
    • On memory の data 構造 (Script 系言語の 連想配列, Dictionary, Hash 等の機能に近いもの)、明確な型付けあり
    • リソース管理、データフォーマット、モジュール&タスク管理、その他のバックエンドとして活用
  • テキストベースのデータファイルフォーマット
    • 自由度が高く冗長性を持たせることが可能。情報が増えても上位互換性を保つことができる
    • バイナリ化対応予定 (flatlib4 で実装)
  • Script Engine (FlatScript)
    • 独自の Script 言語、Compiler & VM
    • ほぼ C++ に近いサブセット
  • 共通 Module API
    • C++ で実装した Module は、FlatScript だけでなく他の言語からも利用可能
    • Android の Java 等、他の言語との連携も容易に行うことができる
  • 仮想ファイルシステム
    • プラットフォームごとに異なる Data path を統一化できる
    • アーカイブファイルを File API で読み込み可能
  • 開発効率を向上させるための軽量&高速なデータ開発サイクル
    • プログラムの再コンパイルなしにデータやスクリプトを更新可能
  • 最小限の外部依存ライブラリ
    • 出来る限り flatib3 自身で実装しているので、基本的には各 Platform 毎の標準ライブラリのみで実行可能
  • 描画関連
    • 頂点データ形式が自由でシェーダーとのマッチングも自動
      • 頂点データフォーマットの任意変換が可能 (モバイル向けに頂点形式を圧縮するなどの変換が API からも容易にできる)
    • 複数のテクスチャ圧縮フォーマットに対応
      • ハードウエアにとって最も効率が良いフォーマットを選んで描画することが可能
        • 複数フォーマットに対応したコンバータを開発予定
    • シェーダー管理の自動化

対応プラットフォーム

  • Windows x86/x64
    • Direct3D 12 (DirectX 12)
    • OpenGL 4.x / OpenGL ES 2.0, 3.0, 3.1 (各種Emulator/OpenGL 4.x ES互換モード) / DirectSound/DirectShow/OpenAL
  • Android armeabi/armeabi-v7a/arm64-v8a/mips/mips64/x86/x86_64
    • OpenGL ES 2.0, 3.0, 3.1 / OpenSL
  • iOS armv7/armv7s/arm64
    • Metal / OpenGL ES 2.0, 3.0 / OpenAL
  • Linux x86/x86_64/armv7l/armv6l
    • OpenGL 4.x / OpenGL ES 2.0, 3.0, 3.1 / OpenAL
  • Mac OSX x86_64
    • Metal / OpenGL 4.1 / OpenAL
  • Web Emscripten
    • WebGL
  • 64bit 対応
  • C++11 対応コンパイラが必要 (VS2013, gcc4.7, clang 3.1 以上)

対応ツール

  • Maya 2014~2016
    • データ 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, MacOSX, Linux (x86_64,armv7l), browser (WebGL)
  • Texture Converter
    • Mipmap, Cubemap, 3D, Array 対応
    • flat-script による自動処理に対応
    • BC(DXT), PVRTCv1, PVRTCv2, ATITC, ETC1, ETC2-EAC, ASTC 変換 (外部 dll が必要)
  • データとアプリケーションの完全な分離
    • 再コンパイル無しに、モデルデータやスクリプトを入れ替え可能
  • レベルエディタ、マテリアルエディタ系の統合ツールはありません
    • DCCツール内で作業し、そのまま Export することを想定しています。

flatlib3 Library 概要

core

  • マルチプラットフォーム用共通ライブラリ
    • Memory 管理
    • FileSystem
    • Thread API (Lock, Queue 他)
    • Database
    • Module 管理
    • Slice (Task/Event)
    • Math (Vector/Matrix 等) SSE,NEON 対応
    • 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/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 以外の言語からも呼び出しできる
  • string 型無し、静的なテキストのみ

window

  • gw + script ベースの簡易 Window システム
    • デバッグ用の情報表示やパラメータ操作等が可能
    • Touch 操作 UI
    • 挙動は script で記述可能

FlatScript の例

sound

  • 単純な機能のみ
    • DirectSound/OpenAL/OpenSL の Wave 再生
    • DirectShow/OpenSL/AVAudioPlayer のストリーム再生

network

  • Socket API
  • 初歩的な web アクセス
    • Android / iOS 端末における、Wi-Fi 経由のデバッグ用

image5

  • テクスチャツール用 API
  • テクスチャ画像の読み込みと変換
  • Mipmap, Cubemap, 3D, Array 対応
  • dds, ktx, pvr3, pvr2, bmp 形式の読み書きに対応
flatlib3.txt · 最終更新: 2015/11/29 16:12 by oga