Standard Shader

レンダリングモード (Rendering Mode)

  • Opaque
  • Cutout
  • Tranaparent
  • Fade

参考:

Unity の Rendering Mode の違いメモ – Qiita

スクリプトで Unity の Standard シェーダーの Rendering Mode を変える – Qiita

標準シェーダーのレンダリングモードをスクリプトから切り替える | Kludge Factory

Rendering Mode | Unity マニュアル [公式]

Albedo カラーと Transparency (透明度) | Unity マニュアル [公式]

シェーダーを作成する

  • Blend Off:ブレンドしない (デフォルト)
  • Blend SrcAlpha OneMinusSrcAlpha:アルファブレンディング
  • Blend One OneMinusSrcAlpha:アルファ乗算済み画像のブレンディング
  • Blend One One:加算
  • Blend OneMinusDstColor One:ソフト加算
  • Blend DstColor Zero:乗算
  • Blend DstColor SrcColor:2倍乗算

カットアウト (Cutout)

// SubShader
Tags {
   "Queue"           = "AlphaTest"
   "RenderType"      = "TransparentCutout"
   "IgnoreProjector" = "True"
}

// fragment shader
clip(textureColor.a - alphaCutoffValue);

Alpha to Coverage

アルファ抜きのエッジにアンチエイリアス (MSAA) を適用して、切り抜きの品質を向上させる。

// SubShader
Tags {
    "Queue"           = "AlphaTest"
    "RenderType"      = "TransparentCutout"
    "IgnoreProjector" = "True"
}

// Pass
AlphaToMask On

参考:

Blend を試してみる – Qiita

スタンダードシェーダーでモデルを綺麗に半透明表示する – Qiita

アルファブレンディングとステンシルバッファ – Qiita

3D モデルの半透明をキレイに表示するシェーダを実装する | コガネブログ

アルファとアルファテスト | Tsumiki Tech Times

Alpha Test を綺麗に見せる方法 | Tsumiki Tech Times

Unlit/Transparent Cutout | 強火で進め

フラグメントシェーダーで背景を透過してみる | マカロン

デプス書き込みありの透過シェーダー | Unity 2018.4 マニュアル [公式]

ShaderLab: Blending | Unity マニュアル [公式]

Why does this transparent shader cause objects’ z-sorting to be backwards? – Game Development Stack Exchange

Possible to create transparency shader which doesn’t stack alpha values – Game Development Stack Exchange

レンダーキュー (Render Queue)

参考:

clip() や discard を使うときには RenderQueue を AlphaTest にする話 | LIGHT11

TransparencySortMode

参考:

TransparencySortMode | Unity スクリプトリファレンス [公式]

Transparent sprites have incorrect depth sorting from one direction – Unity Forum

Transparent Depth Prepass

HDRP で Transparent Depth Prepass を有効にするには、メニューから「Edit > Project Settings」を開いて、「Quality > HDRP > HDRPxxxQuality > Rendering > Transparent Depth Prepass」を有効にする。

参考:

Rendering – The High Definition Render Pipeline Asset | High Definition RP 10.4 Manual [Official]

#12 andywatts – Transparent doesn’t work see video | Unity Forum

AlphaTest

参考:

旧 Alpha Testing | Unity マニュアル [Official]

HDRP

参考:

透過性の正確な表現 – ハイエンドビジュアライゼーション用に Unity の HD レンダーパイプラインをセットアップする方法 | Unity Technologies Blog [公式]

描画順がおかしい

  • 深度プリパス (Depth Pre-Pass)
  • モデル毎に透明度が同じ → 別バッファーに不透明で描画してスプライトとして表示
  • モデル内でポリゴンをソートしておく (実現不可能???)

参考:

Z バッファとレンダリング順の仕組み – Qiita

#2 bgolus – Transparent doesn’t work see video | Unity Forum

アウトライン/輪郭を描画する

参考:

How to make Outline Shader draw by Z-Order? – Unity Forum

Weighted Blended Transparency

参考:

NegInfinity/WeightedBlendedTransparency – GitHub

Weighted blended transparency in Unity | Negative Infinity

Approximated Order Independent Transparency | Unity Forum

Weighted Blended Transparency in Unity – YouTube

Order-Independent Transparency (Approximation) – YouTube

Approximated Order Independent transparency – YouTube

OIT Lab

参考:

candycat1992/OIT_Lab: Order-independent Transparent in Unity – GitHub

タグ:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です