Standard Shader

レンダリングモード (Rendering Mode)
  • Opaque不透明
  • Cutoutアルファ値が閾値より小さいピクセルを描画せず、それ以外のピクセルを描画する。
  • Transparentアルファ値に応じてマテリアルの透過度を決める。反射やハイライトは透過度に関わらず完全に描画される。
  • Fade反射やハイライトの描画も含めてアルファ値に応じて徐々にフェードさせる。

参考:

Rendering Mode の違いメモ – Qiita

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

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

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

アルベドカラーと透明度 | Unity マニュアル [公式]

シェーダーを作成する

  • Blend Offブレンドしない (デフォルト)
  • Blend SrcAlpha OneMinusSrcAlphaアルファブレンディング
  • Blend One OneMinusSrcAlphaアルファ乗算済み画像のブレンディング
  • Blend One One加算
  • Blend OneMinusDstColor Oneソフト加算
  • Blend DstColor Zero乗算
  • Blend DstColor SrcColor2倍乗算
カットアウト (Cutout)
// SubShader Tags { "Queue" = "AlphaTest" "RenderType" = "TransparentCutout" "IgnoreProjector" = "True" } // fragment shader clip(textureColor.a - alphaCutoffValue);
Code language: Arduino (arduino)
Alpha to Coverage

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

// SubShader Tags { "Queue" = "AlphaTest" "RenderType" = "TransparentCutout" "IgnoreProjector" = "True" } // Pass AlphaToMask On
Code language: Arduino (arduino)

参考:

Blend を試してみる – Qiita

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

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

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

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

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

透明なシェーダを作る | おもちゃラボ

Unlit/Transparent Cutout | 強火で進め

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

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

ShaderLab コマンドBlend | Unity マニュアル [公式]

ToonLit シェーダでテクスチャの透過がされない – teratail

How add support to alpha on this shader ? – Unity Forum

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

Blend コマンド

参考:

ShaderLab コマンドBlend | Unity マニュアル [公式]

final alpha value wrong – Unity Answers

Graphics.Blit trail alpha artifact – reddit

レンダーキュー (Render Queue)

参考:

clip() や discard を使うときには Render Queue を Alpha Test にする話 | LIGHT11

Transparency Sort Mode

参考:

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

Alpha Test

参考:

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

ZWrite

参考:

custom shader not obeying alpha (transparency) – Stack Overflow

HDRP

参考:

透過性の正確な表現 – ハイエンドビジュアライゼーション用に HD レンダーパイプラインをセットアップする方法 | Unity 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

動画:

Weighted Blended Transparency in Unity

Order-Independent Transparency (Approximation)

Approximated Order Independent transparency

リポジトリ:

NegInfinity/WeightedBlendedTransparency – GitHub

参考:

Weighted Blended Transparency in Unity | Negative Infinity

フォーラム:

Approximated Order Independent Transparency | Unity Forum

OIT Lab

リポジトリ:

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

記事をシェアする:
タグ:

コメントを残す

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

Protected by reCAPTCHA