Appearance
第03回 テクスチャーサンプリングと UV
前回: 第02回 Shader Graph基礎 / 次回: 第04回 半透明表現と UV アニメーション
ようやく画像の出番
表現の幅が大きく広がります
おまたせしました
前回の振り返り
Shader Graph で色を扱う
- 前回は
ColorとFloatで 最小構成の単色シェーダーを作りました - 色空間で計算結果が変わることと 明るさの操作に触れました
- 今回はより高度な色の表現を目指して テクスチャーと UV の扱いへ進みます
今回の授業の目的
テクスチャーと UV を扱う
- Shader Graph で画像を扱えるようになる
- 画像ファイルと Unity 上のテクスチャーの違いを整理する
- UV が「画像のどこを読むか」を決める座標だと理解する
TilingとOffsetで見え方を調整できるようにするWrap ModeとFilter Modeの違いを説明できるようにする
今回の授業内容
シェーダーで画像を扱うための基礎知識
- テクスチャーサンプリングと UV の考え方
- テクスチャーフォーマットとチャンネル
Sample Texture 2Dノードの入力と出力、TilingとOffsetWrap ModeとFilter Mode- Shader Graph での実装
- UV に計算を加えた見え方の変化
テクスチャーとは
GPU が扱う画像データのこと
- テクスチャーは「質感」の意味です リアルタイムCGの世界ではモデルの表面に貼る 「画像データ」の意味で使われることが多いです
- PNG や JPEG などの画像ファイルを Unity に読み込むと 以降はテクスチャーとして扱えるアセットになります
- テクスチャーはGPUで高速に扱えるデータ形式に変換されており シェーダーから参照できます
- 多くの場合、テクスチャーはモデルの表面に貼るための画像ですが それ以外にも様々な用途で使われます
テクスチャーフォーマット
ファイル形式と中身の持ち方
- 画像ファイルには
PNG、JPEG、TGA、PSDなど いくつかの形式があります PNGやTGAは透明度を表すAlphaチャンネルを持てるため ゲームや映像制作の世界でよく使われます- Unity に読み込んだ後は Import Settings によって GPU 用のテクスチャー形式へ変換されます
- シェーダーでは、最終的に読み込まれたテクスチャーの 各チャンネルの値を使います
テクスチャーサンプリングとは
画像から指定位置の情報を取り出す
画像はAI生成
- テクスチャーの持つデータを取り出す処理が
テクスチャーサンプリングです - 画像のどの位置のデータを取り出すかは 座標で指定されます
UV 座標とは
モデル上の位置と画像上の位置を 対応づける座標

- テクスチャーのどの位置を読むかを 指定するための座標が UV 座標です
Uが横、Vが縦を表します- 例えばモデルの頂点ごとに UV 座標を持てば 画像を貼る位置を決めることができます
UV の範囲
0 から 1 の四角形で画像全体を表す

※ 画像はAI生成
- 左下を
(0, 0)、右上を(1, 1)として 画像全体を表します - この範囲の値で 画像のどの場所を読むかを指定します たとえば
(0.5, 0.5)は画像の中心です - 範囲外を指定した場合の挙動は テクスチャーの属性設定で変わります(後述)
Sample Texture 2D ノードの使い方
テクスチャーと UV を指定して サンプリングする

Texture入力にはどのテクスチャーを読むかを プロパティかデフォルト値で設定しますUV入力には画像のどの位置を読むかを 指定します 省略した場合はモデルの指定 位置が読まれます- ノードからは読み取ったデータが出力されます 例えばカラーテクスチャーを
Base Colorに つなぐとテクスチャー内容が表示されます
UV のタイリングとオフセット
UV 座標を操作する

- UV 座標は0から1の範囲で画像を表しますが マイナスや1を超える値を指定することで 様々な表現が可能になります
Tilling And Offsetノードを使えば UV 座標を計算で操作できますTilingは UV の倍率です 画像を縦横に並べることができますOffsetは UV のオフセット値です サンプル位置をずらすことができます
テクスチャーの属性
範囲外の UV の扱いと 拡大縮小の補間方法

テクスチャーの Import Settings で Wrap Mode と Filter Mode を設定できる シェーダーで同等の計算は可能だが、 通常はテクスチャー側で設定する
- テクスチャーには範囲外の UV をどう扱うか、 拡大縮小時に色をどう補間するかといった 属性があります
- これらの属性はテクスチャー側で設定します 静的な設定のため、シェーダー側で 操作することは基本的にはできません
- テクスチャー側の設定もシェーダーの挙動に 影響するため、理解しておく必要があります
Wrap Mode
範囲外の UV をどう扱うか

Clamp の例: Tilingの倍率が高くても繰り返されず 画像の端が引き延ばされている
Repeatは、範囲外のテクスチャーを 繰り返してサンプリングしますClampは、テクスチャーの端を伸ばして サンプリングします- Wrap Mode はテクスチャー側の設定です シェーダー側ではありませんので 注意してください
Filter Mode
テクスチャーを拡大縮小した際の 色の補間方法

例: 左が Point、右が Bilinear より高度な補間を行うTriLinearも存在するが割愛
Pointは最も近い画素の色をそのまま使うため ドットの境目がくっきり見えますBilinearは周囲の画素の色を補間するため なめらかに見えます- ドット絵は
Point、 写真などはBilinearが向いています テクスチャーの内容に合わせて選んでください
以下は Shader Graph を 使った実習です
Shader Graph に 触れるのだ
実習1
テクスチャーをそのまま表示する
Texture2Dプロパティを追加するSample Texture 2Dノードを配置するTexture2DをTexture入力へ接続する- 出力を
Base Colorへつなぎ、マテリアルに画像を設定する
- 最小構成は
Texture2D -> Sample Texture 2D -> Base Colorです
実習2
Tiling を変えてタイリングの密度を調整する
UVノードを追加するTiling And OffsetノードをSample Texture 2Dの手前に入れるTilingを(2, 2)や(4, 1)に変えて見比べる- テクスチャー画像がどの方向にどう並ぶかを確認する
- テクスチャーのタイリングは砂浜や草原などの自然表現でも使われますが 倍率によって見え方が大きく変わるため調整が重要です
実習3
Offset で表示位置をずらす
- 同じ
Tiling And OffsetノードのOffsetを使う XとYの値を少しずつ変えて見え方を確認する- 画像が動いたのではなく、読む場所が変わったと説明できるようにする
Offsetはテクスチャーの表示位置をずらすための機能ですが 画像そのものを動かすのではなく、読む場所を変えることがポイントです スクロールアニメーションなどによく使われます
実習4
テクスチャーの Wrap Mode と Filter Mode を切り替える
- テクスチャーの Import Settings を開く
Wrap ModeをRepeatとClampで切り替えるFilter ModeをPointとBilinearで切り替える
- ドット絵、模様、写真、グラデーションで向き不向きがあります 適切なモードを探してみてください
UV 座標を加工する
より高度な表現を実現

Sphere ノードでUVに魚眼レンズ様の効果を加えた例 複雑な表現を動的に実現できるのがシェーダーの強み
- UV を計算で加工すればテクスチャーの見え方を 動的に変えることができます
- 例えば UV 座標に
Timeを足すことで 画像が流れるような表現が可能になります - それ以外にも波紋の表現や、UV を回転させて 渦巻き模様を作ることもできます
- 画像を直接編集しなくても計算だけで 表現を変えられるのはシェーダーならではです
この回の到達目標
Sample Texture 2Dを使って画像を表示できる- 画像ファイル形式とテクスチャーのチャンネルを区別できる
- UV が画像参照用の座標だと説明できる
TilingとOffsetで見え方を調整できるWrap ModeとFilter Modeの使い分けを説明できる- UV に計算を加えた変化を説明できる
今回のまとめ
テクスチャーと UV の基本を押さえる
- テクスチャーサンプリングは 座標を指定してテクスチャーのデータを読む処理です
- UV はテクスチャーの読む場所を決める座標です モデル上の適切な位置に画像を張るため 頂点ごとに UV 座標が設定されます
Tiling、Offset、Wrap Mode、Filter Modeで テクスチャーの繰り返しや拡大縮小の際の見え方を調整できますPNGやJPEGなどの画像ファイルは Unity に読み込まれてテクスチャーとして扱われます- これらはどれも CG を扱う上で重要な概念です ぜひ覚えてください