Version: 5.3 (switch to 5.4b)
言語English
  • C#
  • JS

スクリプト言語

好きな言語を選択してください。選択した言語でスクリプトコードが表示されます。

CommandBuffer.SetShadowSamplingMode

フィードバック

ありがとうございます

この度はドキュメントの品質向上のためにご意見・ご要望をお寄せいただき、誠にありがとうございます。頂いた内容をドキュメントチームで確認し、必要に応じて修正を致します。

閉じる

送信に失敗しました

なんらかのエラーが発生したため送信が出来ませんでした。しばらく経ってから<a>もう一度送信</a>してください。ドキュメントの品質向上のために時間を割いて頂き誠にありがとうございます。

閉じる

キャンセル

マニュアルに切り替える
public function SetShadowSamplingMode(shadowmap: Rendering.RenderTargetIdentifier, mode: Rendering.ShadowSamplingMode): void;
public void SetShadowSamplingMode(Rendering.RenderTargetIdentifier shadowmap, Rendering.ShadowSamplingMode mode);

パラメーター

shadowmap サンプリングモードを変更されたシャドウマップがレンダリングされるターゲット
mode 新しいサンプリングモード

説明

"set global shader matrix property" コマンドを追加します。

シャドウマップレンダーテクスチャは通常、以下の比較処理でサンプリングされるように設定されます。サンプラーがシャドウ空間の深度値をスクリーンピクセルで取得し、シャドウマップの深度値のほうが小さいか大きいかによって、0 か 1 を返します。これがデフォルトの ShadowSamplingMode.CompareDepths モードで、影をレンダリングするのに使用されます。

通常のテクスチャと同様にシャドウマップの値にアクセスしたい場合、サンプリングモードを ShadowSamplingMode.RawDepth に設定してください。

シャドウマップのサンプリングモードは、処理中の CommandBuffer の最終コマンドの後にデフォルトに戻ります。

使用中のランタイムプラットフォームがこの方法でシャドウサンプリングを行うのに適用しているかを検証するには、SystemInfo.supportsRawShadowDepthSampling を確認してください。DirectX9 は、明らかに適用していません。


        
using UnityEngine;
using UnityEngine.Rendering;

[RequireComponent(typeof(Camera))] public class RawShadowmapDepth : MonoBehaviour {

public Light m_Light; RenderTexture m_ShadowmapCopy;

void Start() { RenderTargetIdentifier shadowmap = BuiltinRenderTextureType.CurrentActive; m_ShadowmapCopy = new RenderTexture (1024, 1024, 0); CommandBuffer cb = new CommandBuffer(); // Change shadow sampling mode for m_Light's shadowmap. cb.SetShadowSamplingMode(shadowmap, ShadowSamplingMode.RawDepth);

// The shadowmap values can now be sampled normally - copy it to a different render texture. cb.Blit(shadowmap, new RenderTargetIdentifier(m_ShadowmapCopy));

// Execute after the shadowmap has been filled. m_Light.AddCommandBuffer(LightEvent.AfterShadowMap, cb);

// Sampling mode is restored automatically after this command buffer completes, so shadows will render normally. }

void OnRenderImage(RenderTexture src, RenderTexture dest) { // Display the shadowmap in the corner. Camera.main.rect = new Rect(0, 0, 0.5f, 0.5f); Graphics.Blit(m_ShadowmapCopy, dest); Camera.main.rect = new Rect(0, 0, 1, 1); } }