Unity内でスプライトをシェーディングすることを計画するとき、白は最初に最適なベースカラーですか?


10

Unityで、正方形のスプライト/タイルで構成されるゲームのプロトタイピングを検討しています。ゲーム内のタイルごとに異なる色で異なるタイプのオブジェクトを表すことができると思います。

多くの異なる色の正方形をインポートするのではなく、単一の正方形のスプライトをインポートしてUnityで適切にシェーディングできると思います。

Photoshopで色相と彩度を調整した私の経験では、白はしばしば白のままであるため、白を変更するのは簡単な色ではありません。Unityでの私のテストでは、スプライトの「色」を白以外に変更できることを示しています。Photoshopの経験から考えれば、スプライトは適切にシェーディングされているように見えます。

Unity内で変更されたときに白いオブジェクトは適切な色の陰影を帯びているように見えるので、私の腸は、これが最初に最適な基本色であると教えてくれます。およびオブジェクトの状態。

ホワイトスプライトは実際には最初から最適なカラースプライトであり、Photoshop内の色相と彩度を調整するのではなく、Unityでこのようなものが機能するのはなぜですか?

ここに画像の説明を入力してください


まず、「最高」を定義します。
Krythic 2016年

回答:


13

白は真の表現に最適なベースカラーです。また、スプライトのグレースケールを維持すると、チームなどの色を簡単に調整できるようになります。

Unityは、スプライトのテクスチャと色にMultiplyブレンドモードを適用します

Unityのカラータイプの範囲は0〜1です。

Color.Whiteはと同じ(1, 1, 1, 1)です。

その1時を知ることはそれ自体です。

グレースケールtextureがSprite Renderer Colorフィールドとブレンドされている場合、各ピクセルはそれ自体です。このフィールドを変更すると、単純に各グレースケール値に色の各コンポーネントが乗算されます。

いくつかのスプライトに色を付ける


PhotoshopやGIMPなどのお気に入りの画像エディターで乗算ブレンドモードを使用できます。

Photoshopの設定


4

Sprites-Additive.shader -GitHub Gist

ユニティカラーには、多くのカラーフォーマットRGBAに典型的な4つの浮動小数点値があり、赤、緑、青、およびアルファ透明度チャネルの個々のパーセンテージカラー値に対応しています。

また、前述のように、Unityによって適用されるデフォルトの「色合い」は乗算型シェーダーで、Photoshopはこの効果を「乗算」と呼び、プロセスは文字通り、スプライトのピクセルの色値と選択された色値を乗算します。

これの問題は、Multiplicative color mathシェーダーは常に同じ色相(白で「乗算」する場合)、または他のものと乗算する場合により暗い色を生成することです。鍛冶タイプの状況では正反対の効果が欲しい状況に出くわしました。加熱された金属は、暗い色相を生成するために黄色を掛けるべきではありません:

イエローの乗法的シェーダー

代わりに、Unityのデフォルトの乗法シェーダーを加法シェーダーに書き換えました。結果は私が探していたものに沿ったものでした:

アディティブシェーダー

誰か興味があれば、書き直したSprites-Additive.shaderに要点を提供します。

以下は、色の用語とモードに関する適切なリファレンスです。http//www.northlite.net/ps/blend.htm


コメントする十分な評判のないユーザーが、このエフェクトのシェーダーコードを確認することに関心を示しています。まだ共有できますか?
DMGregory

1
ねえ、今すぐ入手することはできませんが、できる限り早く掘り下げてリンクを取得します。できれば今夜。
Joe

2
私はそれを取り戻し、比較的簡単に見つけて、GitHubのGistに追加しました。加算シェーダーと乗算シェーダーの主な違いの1つは、透明度を処理することです。アディティブシェーダーでは、10%の透明度カットオフを設定して、低いアルファ値を持つピクセルの相対アルファを維持します。数学の性質上、乗算型シェーダーではこのようなことを心配する必要はありません。
Joe
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.