📗

【Unity Summary】 Texture

2025/02/11に公開

Texture

details
  • Object の細部の描写を表現する
    • Mesh 表面に張られている
  • Texture は Bit map 画像
    • Photoshop などの Digital contents 作成 Application で Texture を作成し、Unity に import する
  • Texture は Material を通して Object に適用される
    • Material は Shader と呼ばれる Graphics 用の特別な program を使用して、Mesh 表面に Texture を描画
    • Shader には、周囲の様々な影響を受ける物体表面の光沢や凹凸などを simulate するための、Lighting と Coloring の効果を実装可能

import

details
  • 以下のファイル形式に対応
    • BMP
    • EXR
    • GIF
    • HDR
    • IFF
    • JPG
    • PICT
    • PNG
    • PSD
    • TGA
    • TIFF

法線 Map

  • Low poligon の Model に「より Detail があるように見せる」ため、法線 Map Shader によって使用される
  • Unity は RGB 画像として encode された法線 Map を使用

Alpha Map

  • alpha 情報のみを含む Texture
  • alpha map を使用して、Material に様々な level の透明度を適用

Detail Map

  • Detail Texture は Main Texture がすぐ近くになると、隠すように小さな Detail を fade in して表示する
  • Detail Texture を描画するとき、中間の gray が透明
    • 白の場合:Main Texture を倍の明るさとする
    • 黒の場合:Main Texture を完全な黒にする

異方性 Filtering

  • かすめた角度から見たときの Texture 品質を向上させる
  • 一方で Graphic card の resource を消費する
  • Quality Setting を使って、全ての Texture に異方性 Filtering を強制するか、完全に無効にする
    • ただし、Texture import 設定で Texture の異方性 level が0に設定されている場合、強制異方性 Filtering はこの Texture に表示されない

Import setting

setting description
Texture Type 作成したい Texture の type を選択
Texture Shape 形状を選択し、その形状に固有の property を設定
Type-specific and advanced properties 選択した Texture Type の値によっては表示
platform 固有の Override platform 固有の Override panel を使用して、特定の platform の Default option とその Override を設定
Texture preview

Texture Type

setting description
Default 最も一般的な設定
Normal Map Realtime 法線 Mapping に適したように Texture Asset を format
Editor GUI and Legacy GUI HUD および GUI control に適した Texture Asset を format
Sprite(2D and UI) 2D Application で Sprite として使用するのに適している
Cursor Custom Mouse Cursor としての使用に適したように Texture Asset を format
Cookie built-in Render Pipeline で light Cookie として使用するのに適している
lightmap Lightmap としての使用に適したように Texture Asset を format する
Directional Lightmap Directional Light Map としての使用に適したように Texture Asset を format
Shadowmask Shadow Mask としての使用に適したように Texture Asset を format
Single Channel Channel が1つだけになるように Texture Asset を format

Texture Shape

type description note
2D 2D Texture - 一般的な設定
- Texture を、他 project 要素の中の 3D Mesh や GUI element に mapping するのに使用
Cube Cube Map - Skybox や Reflection Probe などに使用
- Default、Normal Map、Single Channel Texture でのみ可能
2D Array 2D Texture 配列 同じ size や形式の Texture を多数使用するような Rendering 技術の最適化として使用
3D 3D Texture Volumetric データを表現する Rendering 技術の一部で使用

Texture compression

reference:https://tsubakit1.hateblo.jp/entry/20131025/1382627281

  • Texture 圧縮形式は、 Texture Asset の imoport 設定で設定可能
  • Texture Asset を project に加えると、Unity Editor は、自動的に build target 毎に適切な圧縮形式を選択する
  • Texture Asset の視覚的品質が高ければ高いほど、1 pixel あたりの bit 数が増え、結果的に build size、load time、および Runtime の memory usage が増加
    • 非圧縮の Texture は最高の品質を提供するが、1 pixel あたりの bit 数も最も多くなる

Bit 毎 pixel(bpp)

  • 1つの Texture pixel に必要な stroage の量
  • bpp 値が低い Texture は、disk 上および memory 上の size が小さくなる
  • GPU の memory 帯域幅は frame rate の Bottle neck になることが多いので、Texture 圧縮はその回避に役立つ

crunch 圧縮

  • DXT または ETC 圧縮の上に動作する圧縮形式
  • crunch で圧縮された Texture を読み込むと、CPU 上で DXT または ETC に解凍

Terminology

LDR(Low Dynamic Range)

  • 色が概念的に 0.0(黒)と 1.0(白)の間の値にある画像
  • 多くの画像ファイル(PNG や JPG など)が当てはまる

HDR(High Dynamic Range)

  • 色が 0 から 1 よりも高い範囲を持つ特殊な画像と Texture 形式
  • .exr.hdr といった画像ファイル形式が当てはまる

RGB

  • 赤、緑、青の 3 色を組み合わせて色の配列を再現する color model

RGB"A"

  • "A"lpha channel を持つ RGB の一種で、blend と透明度の変更が可能

Variable Bit Rate(VBR)

  • pixel あたりの bit 数が固定値ではなく、実際の contents に依存する

MipMap

  • mip または mip level は、「特定の解像度を持つ Texture の version」のこと
    • mip は MipMap と呼ばれる一揃いで存在
  • GPU が Texture をその完全な解像度より低い解像度で Rendering する場合に、MipMap は Rendering 操作を高速化し、Rendering Artifact を削減可能
  • 3D Scene の Object の Rendering によく使用される
  • Camera に近い Object には「高い MipMap」が使用され、遠い Object には「低い MipMap」が使用される
type description
GPU が解像度の低い MipMap 現在の pixel とその隣接 pixel の間の距離が長く、角度が極端な場合
GPU が解像度が高い MipMap 選択距離が短くて角度が極端でない場合

Mip Bias

  • GPU が sample に対してより低い mip または高い mip を選択する閾値を変更
  • 異なる mip からの sample を blend する場合に、ある mip を他の mip より何%優先するかを正確に GPU に指示

MipMap Streaming System

  • 「現在の Camera 位置の Rendering に必要な mip level のみ」を load するように強制
    • Default では「全ての mip level」 を load する
    • 大量の GPU memory を節約するために、少量の CPU resource を犠牲にする
  • Quality Settings を開き、Texture Streaming check box を有効にすることで使用可能

Render Texture

  • Texture の一種であり、Unity が Runtime に作成・更新するもの
  • 使用するには、Assets > Create > Render Texture に移動し、新しい Render Texture を作成し、Camera component の Target Texture に割り当てる
    • その後、通常の Texture と同様に、Material で使用可能

Dynamic Scaling

  • 動的解像度 scaling によって、Rendert Texture の size を変更可能
  • 無効の場合、Render Texture は動的解像度の設定にかかわらず同じ size を維持

Wrap Mode

  • Texture の wrap 方法を制御
type description note
Repeat Texture を tile 化して、繰り返しの pattern を作成
Clamp Texture の edge を引き延ばす 画像を Object に mapping し、 Texture を tile 化したくない場合に wrapping のアーティファクトを防ぐのに便利
Mirror Texture を tile 化して、Texture を全ての整数の境界で Mirror を行う繰り返しの pattern を作成
Mirror Once Texture を 1 度 mirror した後、 Texture を固定
Per-axis U 軸 と V 軸 に異なる wrap mode を設定 - option は、Repeat、Clamp、Mirror、Mirror Once
- Reflection Probe に緯度経度 layout(円筒状)環境 map を使用する場合は、垂直座標(V 軸)に Clamp を設定し、水平座標(U 軸)に Repeat を設定すると便利

Custom Render Textures

  • 特別な Type の Texture で、これを使うと Shader で Texture を更新可能
  • caustics(コースティクス:液体の入ったグラス、反射率の高い金属などに入射した光は、複雑な反射・屈折を繰り返し、周囲の物体の表面に独特の光の模様や筋など)、雨の効果のためのリップル simulation、液体のしぶきなどの複雑な simulation を作成可能

Wrap Mode

  • tile にするときの Texture 動作
mode description
Repeat Texture 自体を tile として繰り返す
Clamp Texture の edge を伸ばす

Filter Mode

  • 3D 変換によって Texture が引き伸ばされる時、どのように Texture を filtering するか
mode description
Point Texture に近づくと、block 状に見える
Bilinear Texture に近づくと、ぼやけて見える
Trilinear - Bilinear に似ている
- Texture は異なる mip level 間でもぼかされる
Aniso Level - 急角度から見たときの Texture の品質を向上させる
- 床や地面の Texture に適している

CubeMap

  • 周囲の環境の reflection を表現する正方形 Texture が「6つ」で一組になったもの
  • Object を囲む「仮想の立方体の面である6つの正方形」は、 それぞれの面が、world 軸の各方向 (上・下・左・右・前・後) の景観を表す
  • Object の反射や周囲環境を表すためによく使用される
    • Skybox や Reflection Probe には CubeMap が頻繁に用いられる

Sparse texture

  • そのまま Graphic memory にのせるには大きすぎる Texture のこと
  • 処理する際、「tile」と呼ぶ小さな四角形に分割し、個々の tile は必要に応じて読み込まれる

Discussion