lumino trail

ゲームエンジン作ってます。Github:https://github.com/lriki/Lumino Twitter:https://twitter.com/lriki8

開発状況 2018 #7

0.5.0 リリースしてました。

Nuget: https://www.nuget.org/packages/Lumino.Core/

Documentation: https://lriki.github.io/lumino/articles/documents/index.html

まだベースライブラリだけなので、特徴的なものは少ないです。

ですが、プロトタイプと言い訳するつもりではない最初のバージョンです。

Lumino.Core について

簡単に説明を。

Lumino.Core はグラフィックスやオーディオ以外の、非 UI 部分を担当するモジュールです。

重要なコンセプトは以下2つです。

というところで UTF-16 ベースの文字列クラスや、メモリ管理を参照カウントベースにしたコレクションクラスなど 車輪再開発の成果ぽいもの がたくさん詰まっています。

OpenGL で HLSL Effect してみる

HLSL のエフェクトフレームワークはちょっとシェーダ書きたいときには便利でしたが、DirectX11 では標準機能から外されました。 Effects11 のソースコードは公開されていますが、古いコードの移植支援ということで推奨はされていないようです。

また Lumino としては使いやすい Shader インターフェイスを考えるのは長い間課題でした。

理想としては DirectX9, 11 あたりの HLSL Effect コードを書いておけば、OpenGL でも macOS でも、API や環境を問わず動かせるようにしたいです。 ついでに、事前コンパイルしなくてもちょっとした動作確認やサポートツール開発のために、ソースファイルを入力してプログラムオブジェクトを作ったりしたい。

Cg のサポートが終了してから色々と調べまわっていましたが、glslang + spirv-cross + technique構文の自前パース に落ち着きそうです。(余談ですが、仕事でメンテしてる構文解析ツールのレガシーコード感にむしゃくしゃして作ってしまった解析ライブラリが、ガベージでコレクションなことにならなくて済みそうです)

あと glslang の HLSL フロントエンドが強かったです。HLSL5 も使えるんだね。

↓ HLSL で書いた大気シェーダを OpenGL で動かしたところ。

f:id:lriki:20180731201936p:plain