緑熊Tweet色を鮮やかにしたり、明るさを調整したり。最近は写真をそのままの状態で用いることはほとんど無いですよね。スマホアプリでなら簡単に行うことが出来ますが、Unityではどうすれば良いのでしょうか。今回は色表現について軽く学んだ後、自分で簡単なシェーダを作る方法をご紹介します。色を表現する3つの方法をご紹介します。RGB赤色(Red)、緑色(Green)、青色(Blue)の度合で、色を表現する方法です。透過度を表すアルファ・チャンネルと合わせて、RGBAとすることもあります。Unityの画面上では、下のように表示されます。度合の最大値は、255もしくは1.0を選択できます。カラー・ウィンドウでのRGB最大値を1.0とした場合シェーダのコード上では、基本的に色はこのRGBAで表されます。4つの値(R、G、B、A)を1組にした変数として扱われます。アルファチャンネルHSV色相(Hue;色味)、彩度(Saturation;鮮やかさ)、明度(Value;明るさ)で、色を表現する方法です。色を混ぜ合わせるRGBより、直感的に色を設定することが出来ます。Unityの画面上では、下のように表示されます。コード上では、基本となるRGBAから変換して扱う必要があります。カラー・ウィンドウでのHSVYCbCr輝度(Y;明るさ)、2つの色差(Cb、Cr;青色、赤色と違う度合)で、色を表現する方法です。輝度を別個に扱えるため、画像認識の過程で必ず用いられます。コード上では、基本となるRGBAから変換して扱う必要があります。おまけ:色空間もう少し詳しく説明すると、これまで見てきた3種類の色表現は、「色空間」というモデルにまとめることが出来ます。3次元空間中での位置を3つの値(X、Y、Z)で表すように、RGB空間では色を3つの値(R、G、B)で表すというわけです。HSVやYCbCrは、このRGB空間を変換したモデルです。RGBからHSVへの変換式RGBからYCbCrへの変換式この辺りの説明は、英語版Wikipediaが分かりやすくオススメです。シェーダで実践!それでは、上の知識を応用して、様々なシェーダを作ってみましょう。シェーダの基本事項を押さえたい方は、以下の記事をご覧ください。Graphの使い方を分かりやすく解説!シェーダーとは?)今回は、次の頂点-フラグメント・シェーダを使います。コメントの部分(フラグメント・シェーダ)を改変していきましょう。"Diffuse"}ネガポジやりたいのは、「RGBの値を反対にする」こと。-1掛けるだけだと定義域から外れてしまうので、+1しましょう。通常とネガポジの比較グレースケールやりたいのは、「色味を無視し、明るさだけで表現する」こと。よって、上で説明したYCbCrを用います。※ガンマはテクスチャとして出力される際に自動的にかかるので、シェーダ中でガンマを考慮する必要はありません。白黒やりたいのは、「輝度に閾値を設け、そこを境に白/黒とする」こと。よって、先ほどの続きにif文を書きます。通常と白黒の比較まとめ以上、シェーダで色を調整する方法のご紹介でした。長いコードを書けば、彩度を上げたり、セピアにしたりすることも可能です。gardenお問い合わせはこちらから※「XR-Hub」商標出願中CloseTwitterでAR/VRの最新情報を受け取る。