コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
最近の更新
未作成ページ
おまかせ表示
ヘルプ
MonoBook
検索
検索
ログイン
個人用ツール
ログイン
ログアウトした編集者のページ
もっと詳しく
投稿記録
トーク
「
フォグ
」を編集中 (節単位)
ページ
議論
日本語
閲覧
編集
ソースを編集
履歴表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
編集
ソースを編集
履歴表示
全般
リンク元
関連ページの更新状況
特別ページ
ページ情報
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。
スパム攻撃防止用のチェックです。 けっして、ここには、値の入力は
しない
でください!
== 実装 == [[PC]]が低速だった時代の古い[[Direct3D]]や[[OpenGL]]などでは「強烈なフォグを掛けてあたりまえ」であったため標準機能として備わっていた。 [[プログラマブルシェーダー]]全盛時代に入るとフォグまで自前で実装する風潮になり、最近の[[DirectX 12]]や[[Metal]]、[[VulKan]]、[[WebGL]]では標準でフォグを書ける機能はバッサリ削除されている。これらでフォグを使いたければ自前で[[シェーダー]]を実装する必要がある。 === Direct3D (シェーダー未使用) === 古いDirectXでシェーダーを使わない、シェーダーがない世代では以下のような実装であった。 デバイス(≒[[GPU]]、稀に[[CPU]]でGPUを[[エミュ]])にパラメーターを渡す感じだね。 <source> DWORD Color; DWORD Mode; float Start = 0.5f; float End = 0.8f; float Density = 0.66f; // フォグを有効にする m_pDevice->SetRenderState(D3DRS_FOGENABLE, TRUE); // フォグカラーを設定する m_pDevice->SetRenderState(D3DRS_FOGCOLOR, Color); // その他のパラメーターを設定する if (Mode == D3DFOG_LINEAR) { m_pDevice->SetRenderState(D3DRS_FOGTABLEMODE, Mode); m_pDevice->SetRenderState(D3DRS_FOGSTART, *(DWORD *)(&Start)); m_pDevice->SetRenderState(D3DRS_FOGEND, *(DWORD *)(&End)); } else { m_pDevice->SetRenderState(D3DRS_FOGTABLEMODE, Mode); m_pDevice->SetRenderState(D3DRS_FOGDENSITY, *(DWORD *)(&Density)); } </source> === MonoGame === [[MonoGame]]ではBasicEffectクラスにFogEnabledなどのプロパティが用意されており、BasicEffectを使う限りは簡単に利用できる。こちらは内部的にはシェーダーでの実装となっている。 <source> basicEffect.FogEnabled = true; basicEffect.FogColor = Color.White.ToVector3(); basicEffect.FogStart = 9.75f; basicEffect.FogEnd = 10.25f; </source> 当然ながらBasicEffectではなく自前の[[シェーダー]]を使う場合は自前実装になる。自前実装する場合はググって一般的なフォグの実装を移植するのが簡単だと思われる。[[github]]からBasicEffectの[[ソースコード]]を落としてきて眺めてみたが、他の処理の絡みもあって「[[ソース読め]]」とは言えないレベルで複雑なことになっている。 === Metal === そのうち書く。 === Vulkan === そのうち書く。 === WebGL === 知らんがな。
編集内容の要約:
MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MonoBook:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の確認用の質問に回答してください (
詳細
):
1たす1は?(全角で入力してください)
キャンセル
編集の仕方
(新しいウィンドウで開きます)
本文の横幅制限を有効化/無効化