質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

4236閲覧

ShaderGraphで作ったshaderをfogの影響を受けないようにしたいです

hosituka

総合スコア15

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2021/08/26 14:33

編集2021/08/26 14:39

海を作る際にshaderGraphを使ったのですがそのShaderGraphで作ったshaderをfogの影響を受けないようにしたいです。回答をいただけるとありがたいです

試したこと
①fogノードを使って色を取得できるからそれを使って色を引き算すればfogの影響を受けないのではと思ったけど出来なかったです。
ShaderGraphで作ったshaderの画像

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

検索してみたものの、フォグを切るオプションは見つからないですね...
不本意かもしれませんが、「Help Wanted - How to Disable FOG??? - Unity Forum」のような手を使うことになるかもしれません。

  • プロジェクト内にあるシェーダーグラフファイルを選択し、インスペクター上の「View Generated Shader」ボタンでシェーダーコードを出力させる。
  • コード内の#pragma multi_compile_fogと記述された行を検索し、すべて削除する。
  • シェーダーコードをプロジェクト内の適当な場所にshaderファイルとして(拡張子が「shader」のテキストファイルとして)別名保存する。
  • Unityに戻ると保存したシェーダーファイルがインポートされるはずなので、マテリアルのインスペクター最上部のシェーダー選択プルダウンメニューでインポートされたシェーダーを選択する。

といった具合でいかがでしょうか。
ですが、後でシェーダーグラフを編集した場合は上記のシェーダーコード生成作業もやり直さないといけないのは面倒かと思います。シェーダーグラフの検討中はフォグありのままで妥協して、グラフ制作がほぼ完了してから最後の仕上げとしてフォグ切りを行うのが効率的のように思いますね。

投稿2021/08/26 22:04

Bongo

総合スコア10811

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hosituka

2021/08/27 04:51

出来ました。素晴らしい回答をありがとうございました!
hosituka

2021/08/27 07:44 編集

すみませんちょっと後から気づいた問題がありまして回答できなかったらしなくていいので一応ここに書かせてもらいます自分のビルドする際のプラットフォームがWebGLなのですがそれだと#pragma multi_compile_fogが書かれている行を消したのにエディター上でしかfogの効果が消えません webGLでビルドした後でもfogの効果を消えるようにするためにはどうすればいいのでしょうか 試したことなのですがプラットフォームをPC,Mac & Linux Standaloneって奴に変えてビルドしたらエディタ上と同じくビルド後もちゃんとfogが消えていました。 他にも「View Generated Shader」ボタンでシェーダーコードを出力させてでた奴にshaderを変更した時にWebGLでビルドすると適用されなくなるのかと思ったのですがShaderGraphの方の色を緑に変えてビルドすると緑の状態でビルドされるわけではないので適用はされているみたいです。
Bongo

2021/08/28 09:08

Mac版Unity 2021.1.18f1を使い(Windows版ではビルドに失敗しました...不覚にもPCのユーザー名に日本語を使ってしまったのがまずかったかもしれません)、新規作成しただけの状態のシェーダーグラフを回答で申し上げた手順でフォグなしシェーダーファイルにして、設定は特にいじらずビルド、Mac版Chrome 92.0.4515.159 (arm64)で実行してみましたが、ちゃんとフォグが消えているようでした。 ご質問者さんがお試しの場合ではスタンドアローンビルドではフォグが消え、WebGLビルドではフォグが表示されたとのことですが、思い当たる可能性としては「#pragma multi_compile_fog」の消し漏らしがまだ残っている...とかでしょうかね。 ビルドターゲットが変化すればサブシェーダーが切り替わる可能性がありますが、そこで#pragma multi_compile_fogを消しそびれたサブシェーダーが使われたとしたらフォグが表示されてしまうかも...と思ったわけです。 シェーダーコードの中を「multi_compile_fog」で検索しても、もうどこにも見つからないでしょうか? ご参考までに、私の試した場合では#pragma multi_compile_fogは3ヶ所ありました。もし消し漏らしがありましたら削除して試してみてください。 multi_compile_fogを全部削除してあるのに相変わらずフォグが表示されてしまうようでしたら、もっと詳しく原因を調査してみたいと思います。その場合は、生成されたシェーダーコード(multi_compile_fog削除済みでも未削除でもかまいません)をご提示いただけませんでしょうか。おそらく質問欄に追記いただくには長すぎるかと思いますので、どこかにアップロードしていただくなどの別の手段をお願いすることになるでしょうかね...
hosituka

2021/08/28 12:34

#pragma multi_compile_fogって一行だけじゃないんですね了解しました 自分の方でも#pragma multi_compile_fogを三つ見つけまして(#pragma multi_compile_fogが複数ある事を知る前に見つけた物を含む)それを全部消したらwebGLでビルド後もfogがちゃんと消えていました ベストアンサーした後に気づいた問題に対する真摯な対応本当にありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問