「MonoGameでプログラマブルシェーダーを使う」を編集中

ナビゲーションに移動 検索に移動

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。

最新版 編集中の文章
1行目: 1行目:
== プログラマブルシェーダーのコンパイル ==
+
== MonoGame標準 ==
2020年5月に発表されたMonoGame 3.8.0 (preview版)からプログラマブルシェーダー周りが大幅に変更された。[[Mac]]や[[Linux]]でもビルドできるようになったぞ。
+
2019年10月時点の[[MonoGame]] 3.7.1では[[Windows]]上でのみ[[プログラマブルシェーダー]]([[fxファイル]])の[[コンパイル]]ができる。
* [[MonoGame 3.8.0以降でfxファイルをコンパイルする]]
+
 
* [[MonoGame 3.7.1以前でfxファイルをコンパイルする]]
+
逆を言えば[[Mac]]上の[[Visual Studio for Mac]]や[[Linux]]上の[[Xamarin Studio]]を使って開発している場合には[[プログラマブルシェーダー]]の[[コンパイル]]ができない。
 +
 
 +
これはMonoGameのコンパイラが複数の環境に対応したコードを生成する過程の問題ある。
 +
* まず[[SharpDX]]で[[HLSL]]を[[中間コード]]に[[コンパイル]]する(これがWindows専用)。
 +
* その中間コードを[[MojoShader]]に食わせて[[OpenGL]]形式([[GLSL]])に変換する。
 +
 
 +
このため現状の実装では[[Mac]]や[[Linux]]ではどうにもならない。
 +
 
 +
== 解決策 ==
 +
[[Mac]]や[[Linux]]上の[[Xamarin Studio]]で[[シェーダー]]([[fxファイル]])を使えるようにする素晴らしい[[クラウドサービス]]が登場した。その名も「[[InfinitespaceStudios.Pipeline]]」の「RemoteEffectProcessor」。
 +
 
 +
* https://www.nuget.org/packages/InfinitespaceStudios.Pipeline/
 +
 
 +
リモート・エフェクト・プロセッサー!
 +
 
 +
これは[[fxファイル]]を[[コンパイル]]してくれるオンラインサービスである。[[ネット]]が繋がっていれば利用できる。開発者はInfinitespace Studiosという英国紳士のようだ。こいつは凄い。
 +
 
 +
ただしちょっと遅い。[[ソースコード]]は[[GitHub]]上に[[オープンソース]]として公開されており、自前で[[サーバー]]を立てることもできる。
 +
 
 +
* https://github.com/infinitespace-studios/InfinitespaceStudios.Pipeline
 +
 
 +
[[ソース]]を読むと単にWindows上でfxファイルを投げているだけのようである。さっそく[[VirtualBox]]にWindowsをぶち込んで環境構築してみた。
 +
 
 +
== 関連項目 ==
 +
* [[MonoGameでHLSLにMatrixを渡す]]
 +
* [[HLSL]] ([[fxファイル]])
 +
* [[シェーダー]]
 +
* [[:Category:MonoGame|MonoGameカテゴリ]]
 +
 
 +
[[category: HLSL]]
 +
[[category: MonoGame]]
 +
[[category: Xamarin.Studio]]

MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMonoBook:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)