Command Buffer (コマンドバッファ) を使うと、Unity のビルトインの レンダリングパイプライン を拡張できます。コマンドバッファは、カメラのレンダリング中に様々な時点で実行するレンダリングコマンドのリストを保持します。コマンドバッファを実行するための Unity のビルトインレンダリングパイプラインの位置を指定するには、CameraEvent enum を使用します。
例えば、CameraEvent の AfterGBuffer とともにコマンドバッファを使用すると、パイプラインがすべての不透明なゲームオブジェクトを処理した後に、追加のゲームオブジェクトを ディファードパイプライン にレンダリングすることができます。
下は、どのように Camera がフォワードやディファードのパイプラインを使用して Unity のシーンをレンダリングするかの概要です。
See the CommandBuffer Class and the CameraEvent Enum for more information. You can also use Command buffers in conjunction with, or as a replacement for, image effects.
以下は、コマンドバッファで作成できるエフェクトの例を紹介する Unity プロジェクトのサンプルです。 RenderingCommandBuffers.zip
このシーンでは、ぼやけたリフレクションを作成するテクニックを紹介します。
Unity が不透明オブジェクトとスカイボックスをレンダリングした後、現在の画像を一時的なレンダリングターゲットにコピーし、それをぼかします。glass シェーダーはこのぼやけた画像をサンプリングし、法線マップを使用してUV 座標をオフセットして屈折をシミュレーションします。
このテクニックは Shader GrabPass に似ています。
このシーンは、カスタムのディファードスフィア形状ライトとチューブ形状ライトの作成に使用できるテクニックを紹介します。
Unity が通常のデファードライトパスを処理した後、このテクニックはカスタムライトごとにスフィアを描画します。次に、各スフィアはシェーダーを使用してイルミネーションを計算し、ライティングバッファに加えます。
このシーンは、ディファードのデカールを処理するための基本的なテクニックを示しています。
Unity が G バッファを処理した後、各デカールを描画し、G バッファのコンテンツを変更します。このテクニックは、ディファードパイプラインでライトを処理するのと似た方法で動作しますが、このテクニックは、ライティングを累積するのではなく、G バッファのテクスチャを変更する点が異なります。
このテクニックは、各デカールをボックスとして処理し、ボックスのボリューム内のジオメトリにのみ影響します。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.