しゅみぷろ読者になるしゅみぷろプログラミングとかこの広告は、90日以上更新していないブログに表示しています。Unityはじめに画像のような感じで、ペイント時にブラシの端にノイズが乗ることがあります。メインテクスチャとは別の、GenerateMipMapが設定されたテクスチャをShaderで収縮し表示すると起こるようです。解決方法をとりあえずメモしておきます。理由は詳しくわかっていませんが、原因はTextureのインポート設定でMipMapを生成していることらしく、これをOFFにすれば解決します。3.0以降ならtex2Dlodを利用するように、それ以前ならtex2Dを利用するようにしました。ブラシ画像のGenerateMipMapはOFFにするように心がける必要があるので、忘れないようメモとして残しておきます。ちなみに、ミップマップレベルを動的に変更してチェックしたのですが、ミップマップレベルが変わった画像がペイントされているのにもかかわらず端にノイズがのっていました。暇な時にでもチェックしてみようと思います。わかったことを書いておきます。要するに、MipMapが生成された際の画像の平均化によって、境界線付近が平均化されてしまい、それがノイズとして現れていたということになります。詳しく解決方法を含めて纏めておきます必要ないならGenerateMipMapをOFFにしておくMipMapをどうしても利用したければフィルター処理などを行わないよう設定する(MipMapを利用する時点でノイズは避けられないが軽減できる)ミップマップによる平均化によって、境界線にぼやけた色が乗る可能性があります。これがノイズとして現れるので、ブラシ用であればMipMapはOFFでかまわないはずです。ブラシ用にしたい画像が他のオブジェクトでも使用されている場合、パフォーマンスの観点からMipMapを利用すべきです。その場合、もう完璧にノイズを避けることは多分出来ません。ノイズを軽減する(画像によってはほぼ0になる)ことは出来ます。filter)に設定します。BorderMipMapは、テクスチャの境界ピクセルを各ミップマップレベルへとコピー(つまり境界の色を各レベルですべて統一)します。filterにする理由は、フィルター(ぼかし処理)をかけるとMipMapに平均化がかかるようで、これによっても境界がぼやけてしまい、それがノイズとなるためです。ここまでは「MipMapを生成したりフィルター処理をかけると画像がぼやけるから、MipMap生成すると境界付近がボヤケちゃうよね」ってだけの話です。本当の問題はここからで、このMipMapをサンプリングする際にUVは0~1が保証されているにも関わらずノイズが出ることです。実はコレ、tex2DlodでMipMapLevelに何を指定してもノイズは出ません。ノイズの直接的な原因はtex2Dでサンプリングを行っていることです。正確に言うと、tex2Dbiasやtex2Dprojでミップマップレベルを弄っても、同様にノイズを引き起こします。諸悪の根源はtex2Dがどのようにサンプリングを行うかに起因します。Exchangeあたりを見ると良さそうです。追記シェーダーでサンプリングを行う際にtex2Dgradを用いることでノイズが出なくなりました。2.0でサポートされているのでよさそうかなと。処理が重いのでやはりTextureのInport設定でカバーするのがよさそうです。tex2D系関数について雑にですが纏めておこうと思います。tex2D指定位置のテクスチャをサンプリングする一番基本のやつ。1.0tex2Dprojサンプリングする際に座標をw要素で除算できる。2.0tex2Dbiasサンプリングする際のミップレベルをw要素で指定出来る。ddyに与えた変化の割合に応じてサンプリングするミップレベルを変化させることが出来る。2.0tex2Dlodサンプリングする際のミップレベルをw要素で指定出来る。液垂れ表現についてです。UnityでMatcapシェーダー書いたのでメモ。)はてなブログをはじめよう!es_programさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。