| モジュール | コアライブラリ | 説明する |
|---|---|---|
runtime | - | コアモジュール |
runtime/cgpu | - | コアサブモジュール、最新のGPUプラットフォーム用のクロスプラットフォームグラフィックアピ |
runtime/sugoi | - | コアサブモジュール、真にデータ駆動型プログラミングECSオブジェクトモデル |
runtime/math | Realtimemath | コアサブモジュール、数学ライブラリ |
runtime/io | - | コアサブモジュール、同期/非同期I/Oサービス |
runtime/task | Fibertaskinglib、Marl | コアサブモジュール、コルーチンに基づく計算集約型タスクシステム |
runtime/binary | - | コアサブモジュール、バイナリシリアル化 |
runtime/platform | - | コアサブモジュール、システムインターフェイス |
runtime/resource | - | コアサブモジュール、非同期リソース管理 |
runtime/type | - | RTTI関連機能を提供するコアサブモジュール |
runtime/lua | ルア、ルアウ | LUAを接着言語として使用して、コアサブモジュール |
SkrScene | - | シーンモジュール、シーンリソース管理 |
SkrRenderer | - | レンダラーモジュール、レンダリングリソース管理、ドライブレンダリングパイプライン |
SkrImgui | imgui | デバッグ用のランタイムUI |
SkrRenderGraph | - | CGPUに基づいてグラフをレンダリングします |
SkrLive2d | Live2d | Live2Dレンダリングバックエンド |
SkrInputSystem | GainInput | 入力の上部パッケージ |
SkrAnim | オズアニメーション | アニメーションリソース管理、アニメーションコンピューティングの基本機能 |
devtime/tweak | - | 軽量の一定の熱交換ソリューションを提供します |
devtime/inspect | - | ランタイム変数の状態視覚化を提供します |
SkrToolCore | - | リソースベーキングプロセスを管理および駆動します |
SkrAnimTool | オズアニメーション | アニメーション関連のリソースをインポートおよび焼く |
SkrGLTFTool | CGLTF | GLTFモデルをインポートして焼きます |
SkrTextureCompiler | ispctexturecompressor | マップをインポートおよび焼く |
SkrShaderCompiler | - | 材料関連のリソースを輸入および焼きます |
codegen | Libtooling、Mako-Template | コード生成を提供します |
| プラットフォーム | CI(開発者) |
|---|---|
| プラットフォーム | D3D12 | D3D11 | バルカン | 金属 |
|---|---|---|---|---|
| Windows | ✔✔️ | ✔✔️ | n/a | |
| macos | n/a | n/a | ✔✔️ | ❗ |
| プラットフォーム | PNG | jpeg | BMP | ICO | exr | TGA |
|---|---|---|---|---|---|---|
| Windows | libpng(v1.5.2) | libjpeg-turbo | ❗ | ❗ | ❗ | ❗ |
| macos | libpng(v1.5.27) | libjpeg-turbo | ❗ | ❗ | ❗ | ❗ |
ECSベースのマルチプレイヤーゲームとサーバー。
StateBufferを使用した次世代CGPUグラフィカルインターフェイス。 PSOの概念を放棄し、StateBufferをグラフィックパイプラインの状態の説明として使用します。従来のグラフィックパイプラインAPIは、すべてのパイプライン状態とシェーダーISAをパッケージ化し、GPU全体にアップロードするPSOを使用することがよくあります。
StateBufferは一連のステートチャンクで構成され、各ステートカンクはグラフィックパイプライン状態を説明し、StateBufferはステートチャンクの組み合わせを通じてグラフィックパイプラインの完全な状態を説明します。 PSOのフルフラッシュと比較して、StateBufferは図面サイトのStatePacketsを準備し、DrawCallが生成されたときにState SwitchをGPUのステータスレジスタグループに押し込むことができます。
StateBufferは、パイプラインとシェーダーの組み合わせでの爆発によって引き起こされるメモリの肥大化の問題を大幅に軽減でき、PSOは代わりにこの問題を悪化させます。
wip ...
GUIのレンダリングツリーレイヤーには、タイポグラフィとレンダリングオブジェクトのレンダリングの機能があります。基本的なプリミティブ、テクスチャ、カラーブラシ、テキストの段落をサポートします。
キュービズムネイティブSDKを統合し、Live2Dモデルの効率的な描画にレンダリンググラフを使用するプログラムの例。
Live2Dモデルは複数のソースデータ型を組み合わせており、すべてのデータ型はロードされ、非同期に解析されます。モデルの読み込みプロセス全体は、ハードディスクの読み取り、ビデオメモリへのメモリストリーミング、ビデオメモリへのファイル解凍ストリーミング、およびビデオメモリへのファイルの直接のアップロードを組み合わせています。デモにより、あらゆるタイプのI/O操作が帯域幅効率を維持することを保証し、その間にリクエストを開始するメインスレッドには一時停止またはオーバーヘッドがありません。未処理のLive2Dモデルには、数十の小型JSONファイル、いくつかの中型モデル頂点ファイル、およびデコードする必要がある2つの4K PNGマップが含まれており、以下の図にI/Oパイプラインプロファイルチャートを形成します。
出荷ビルドの最終レンダリングフレームカウントは、数千のフレームを簡単に破壊できます。これは、公式キュービズムの例ベンチマークの10倍以上です。
このデモは、Rendergraphを繰延レンダリングに使用する方法を示しています。ここで、照明計算部分はComputeshdaerとPixelShaderの2つの実装です。実際の照明シェーディング効果はデモで完了しておらず、焦点は遅延プロセスの実現可能性の検証に焦点を当てています。このデモは、カスタムプロファイラーを使用してRendergraphの実行の詳細をプロファイルする方法も示しています。
このデモは、三角形のレンダリングにrendergraphを使用する方法を示しています。
このデモは、CGPUでテクスチャサンプリングを使用する方法を示し、デモはCGPUで静的/不変のサンプラーを有効にする方法も示します。
私たちは、私たちが探求した結果を放棄することになりました。放棄することは、これらの技術が貧弱または利用できないことを意味するものではなく、包括的な検討後に選択的にそれらを放棄したことを意味します。
これは、マルチバックエンドの三角形の描画デモです。
次のコマンドでコンパイルします
> xmake l setup.lua
> xmake f -m debug -c
> xmake
ヒント:
/buildと.xmakeフォルダーを削除したり、再試行したりできます。これ以上の問題がある場合は、必ず問題を報告してください。xmake f -m debug -c -vの詳細な出力を提供してみてください。xrepo remove --all -y使用して、誤ってインストールされたリポジトリをクリーニングして再構築できます。 vscode + clangdを編集環境として使用し、コマンドxmake project -k compile_commandsを使用して、clangdが必要とするデータセットを生成することをお勧めします。