コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
最近の更新
未作成ページ
おまかせ表示
ヘルプ
MonoBook
検索
検索
ログイン
個人用ツール
ログイン
ログアウトした編集者のページ
もっと詳しく
投稿記録
トーク
「
MonoGameでプログラマブルシェーダーを使う
」を編集中
ページ
議論
日本語
閲覧
編集
ソースを編集
履歴表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
編集
ソースを編集
履歴表示
全般
リンク元
関連ページの更新状況
特別ページ
ページ情報
2020年6月10日 (水) 01:19時点における
Administrator
(
トーク
|
投稿記録
)
による版
(
→利用する
)
(
差分
)
← 古い版
|
最新版
(
差分
) |
新しい版 →
(
差分
)
警告: このページの古い版を編集しています。
公開すると、この版以降になされた変更がすべて失われます。
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。
スパム攻撃防止用のチェックです。 けっして、ここには、値の入力は
しない
でください!
== MonoGame 3.8.0から == 2020年5月時点の[[MonoGame]] 3.8.0 (プレビュー版)から [[Windows]]だけでなく、[[MacOS]]や[[Linux]]でも[[プログラマブルシェーダー]]の[[コンパイル]]ができるようになった。[[Mac]]や[[Linux]]では内部的に[[wine]]を用いているので若干の環境構築が必要となる。 === Macでの環境構築 === [[xquartz]]を[[インストール]]する。 * https://www.xquartz.org/index.html [[wine]]を[[インストール]]する。 この際に「64 bit support」のチェックを必ずいれること。 内部的にはwine64コマンドしか使わないので[[macOS 10.15 Catalina]]でも大丈夫。 * https://dl.winehq.org/wine-builds/macosx/download.html [[7z]]を[[インストール]]する。 brew install p7zip mgfxcコンパイラをインストールするスクリプトを実行する。 <source lang="bash"> curl -O https://raw.githubusercontent.com/MonoGame/MonoGame/develop/Tools/MonoGame.Effect.Compiler/mgfxc_wine_setup.sh chmod +x mgfxc_wine_setup.sh ./mgfxc_wine_setup.sh </source> mgfxcコンパイラなどは「$HOME/.winemonogame」ディレクトリに格納される。 環境変数を追加する。 <source lang="bash"> #bashの場合 echo 'export MGFXC_WINE_PATH="$HOME/.winemonogame"' >> ~/.profile </source> <source lang="bash"> #zshの場合 echo 'export MGFXC_WINE_PATH="$HOME/.winemonogame"' >> ~/.zprofile </source> == MonoGame 3.7.1まで == 2020年4月時点の[[MonoGame]] 3.7.1では[[プログラマブルシェーダー]]([[fxファイル]])の[[コンパイル]]は「[[Windows]]上でのみ」できる。 逆を言えば[[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という英国紳士のようだ。こいつは凄い。 === 利用する === RemoteEffectProcessorは標準でインターネット上にサーバーが提供されている。 ただしちょっと遅い。 ==== NuGetからパッケージを追加する ==== NuGetからパッケージを追加する。 InfinitespaceStudios.Pipeline ==== MonoGame Pipeline Toolに参照を追加する ==== Content.mgcbファイルをMonoGame Pipeline Toolで開き、参照を追加する。 これでfxファイルの「Processor」の選択肢に「RemoteEffectProcessor」が追加される。 packages/infinitespacestudios.pipeline/1.0.9/tools/InfinitespaceStudios.Pipeline.dll NuGetパッケージの在り処は以下のどちらかだと思われる。 * ホームディレクトリ直下の「.nuget」という隠しディレクトリの中 * プロジェクト内の「packages」ディレクトリの中 ==== fxファイルのプロセッサーを変更する ==== MonoGame Pipeline Toolでfxファイルを選ぶとプロパティ一覧の「Processor」の項目に「RemoteEffectProcessor」が追加されているのでこれを選ぶ。 公式サーバーを使う際は特に設定を変更する必要なし。 自前サーバーを使う際は各項目を書き換える。注意すべき点はローカルだとhttpsではなくhttpなくらいか。 * Protocol=http * RemoteAddress=自前サーバーのIPアドレス * RemotePort=8001(デフォルトは8001番ポート) == 自前サーバーを構築する == RemoteEffectProcessorは標準でインターネット上にサーバーが提供されている。 ただしちょっと遅い。 また、構文エラーなどが発生した際のエラー内容がざっくりすぎて意味不明という問題点もある。 RemoteEffectProcessorの[[ソースコード]]は[[GitHub]]上にて[[オープンソース]]として公開されており自前で[[サーバー]]を立てることもできる。 中身は非常にシンプルでHTTPで受け取ったHLSLをWindows上のMonoGameコマンドラインツールでコンパイルしているだけだ。HLSLのハッシュを取ってコンパイル成果物をキャッシュするようにしたり、デバッグ機能をつけたりすると捗るかもしれない。 * https://github.com/infinitespace-studios/InfinitespaceStudios.Pipeline === Windowsマシンを用意する === さっそく[[VirtualBox]]にWindows 10をぶち込んで環境構築してみた。 * Visual Studio をインストールする * MonoGame をインストールする * RemoteEffectProcessorのソースコードを落としてくる Windows 10はセキュリティが厳しくなり、HttpListenerに対して外部から接続ができなかった。 色々試したがどれで上手くいったのかわからん。 * ファイアーウォールに穴をあける(デフォルトは8001番ポート) * Visual Studioを「管理者権限で実行」する == 関連項目 == * [[MonoGameでHLSLにMatrixを渡す]] * [[HLSL]] ([[fxファイル]]) * [[シェーダー]] [[category: MonoGame]] [[category: HLSL]]
編集内容の要約:
MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MonoBook:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の確認用の質問に回答してください (
詳細
):
1たす1は?(全角で入力してください)
キャンセル
編集の仕方
(新しいウィンドウで開きます)
本文の横幅制限を有効化/無効化