「MonoGameでプログラマブルシェーダーを使う」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
imported>Administrator
imported>Administrator
1行目: 1行目:
 
== MonoGame標準 ==
 
== MonoGame標準 ==
2016年10月時点の[[MonoGame]] 3.5(および3.6ベータ版)では[[Windows]]上でのみ[[プログラマブルシェーダー]]([[fxファイル]])の[[コンパイル]]ができる。逆を言えば[[Mac]]や[[Linux]]上で[[Xamarin Studio]]を使って開発している場合には[[プログラマブルシェーダー]]の[[コンパイル]]できない。これはMonoGame付属のプログラマブルシェーダーのコンパイラが複数の環境に対応したコードを生成する過程の問題で、まず[[Direct3D]]向けにコンパイルし、その成果物を[[MojoShader]]に食わせて[[OpenGL]]形式に変換しているためである。このため現状の実装ではOpenGLしか存在しないMacやLinuxではどうにもならない。
+
2019年10月時点の[[MonoGame]] 3.7.1では[[Windows]]上でのみ[[プログラマブルシェーダー]]([[fxファイル]])の[[コンパイル]]ができる。
  
なお、xnbファイルにコンパイルさえしてしまえば各環境で動かすことができる。
+
逆を言えば[[Mac]]上の[[Visual Studio for Mac]]や[[Linux]]上の[[Xamarin Studio]]を使って開発している場合には[[プログラマブルシェーダー]]の[[コンパイル]]ができない。
  
== InfinitespaceStudios.Pipeline ==
+
これはMonoGameのコンパイラが複数の環境に対応したコードを生成する過程の問題ある。
[[Mac]]や[[Linux]]上の[[Xamarin Studio]]で[[シェーダー]]([[fxファイル]])を使えるようにする素晴らしい[[クラウドサービス]]が登場した。その名も「[[InfinitespaceStudios.Pipeline]]<ref>https://pipeline.infinitespace-studios.co.uk</ref><ref>https://github.com/infinitespace-studios/InfinitespaceStudios.Pipeline</ref><ref>https://www.nuget.org/packages/InfinitespaceStudios.Pipeline/</ref>」の「RemoteEffectProcessor」。
+
* まず[[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という英国紳士のようだ。こいつは凄い。
+
これは[[fxファイル]]を[[コンパイル]]してくれるオンラインサービスである。[[ネット]]が繋がっていれば利用できる。開発者はInfinitespace Studiosという英国紳士のようだ。こいつは凄い。
  
しかもコンテンツパイプライン用の拡張プラグインはもとより、[[サーバー]]実装も[[GitHub]]上に[[オープンソース]]として公開されており<ref>https://github.com/infinitespace-studios/InfinitespaceStudios.Pipeline</ref><ref>https://www.nuget.org/packages/InfinitespaceStudios.Pipeline/</ref>、自前で[[サーバー]]を立てることもできる。こいつは凄い。[[ソース]]を読むと単にWindowsマシンにfxファイルを投げているだけのようである。さっそく[[VirtualBox]]にぶち込んでみた。
+
ただしちょっと遅い。[[ソースコード]][[GitHub]]上に[[オープンソース]]として公開されており、自前で[[サーバー]]を立てることもできる。
 +
 
 +
* https://github.com/infinitespace-studios/InfinitespaceStudios.Pipeline
 +
 
 +
[[ソース]]を読むと単にWindows上でfxファイルを投げているだけのようである。さっそく[[VirtualBox]]にWindowsをぶち込んで環境構築してみた。
  
 
== 関連項目 ==
 
== 関連項目 ==
 +
* [[MonoGameでHLSLにMatrixを渡す]]
 +
* [[HLSL]] ([[fxファイル]])
 
* [[シェーダー]]
 
* [[シェーダー]]
* [[HLSL]] ([[fxファイル]])
 
 
* [[:Category:MonoGame|MonoGameカテゴリ]]
 
* [[:Category:MonoGame|MonoGameカテゴリ]]
  
== 参考文献 ==
+
[[category: HLSL]]
{{reflist}}
 
 
 
{{stub}}
 
 
 
 
[[category: MonoGame]]
 
[[category: MonoGame]]
 
[[category: Xamarin.Studio]]
 
[[category: Xamarin.Studio]]
<references />
 

2019年10月31日 (木) 05:08時点における版

MonoGame標準

2019年10月時点のMonoGame 3.7.1ではWindows上でのみプログラマブルシェーダーfxファイル)のコンパイルができる。

逆を言えばMac上のVisual Studio for MacLinux上のXamarin Studioを使って開発している場合にはプログラマブルシェーダーコンパイルができない。

これはMonoGameのコンパイラが複数の環境に対応したコードを生成する過程の問題ある。

このため現状の実装ではMacLinuxではどうにもならない。

解決策

MacLinux上のXamarin Studioシェーダーfxファイル)を使えるようにする素晴らしいクラウドサービスが登場した。その名も「InfinitespaceStudios.Pipeline」の「RemoteEffectProcessor」。

リモート・エフェクト・プロセッサー!

これはfxファイルコンパイルしてくれるオンラインサービスである。ネットが繋がっていれば利用できる。開発者はInfinitespace Studiosという英国紳士のようだ。こいつは凄い。

ただしちょっと遅い。ソースコードGitHub上にオープンソースとして公開されており、自前でサーバーを立てることもできる。

ソースを読むと単にWindows上でfxファイルを投げているだけのようである。さっそくVirtualBoxにWindowsをぶち込んで環境構築してみた。

関連項目