本文へスキップ

class LightshipOcclusionExtension

(Niantic.Lightship.AR.Occlusion.LightshipOcclusionExtension)

概要

このコンポーネントを使用すると、LightshipのXROcclusionSubsystem 実装で使用可能な追加機能を設定できます。

	class LightshipOcclusionExtension:CompositeRenderer {
public
// フィールド

bool IsRenderingActive => IsCommandBufferAdded ||(!IsUsingLegacyRenderPipeline&& IsAnyFeatureEnabled);
bool SupportsTargetFrameRate => IsUsingLightshipOcclusionSubsystem;
static const string ZBufferOcclusionShaderName = "Lightship/ZBufferOcclusion";
static const string OcclusionMeshShaderName = "Lightship/OcclusionMesh";

// プロパティ

uint?TargetFrameRate;
Matrix4x4?LatestIntrinsicsMatrix;
Matrix4x4?LatestExtrinsicsMatrix;
OptimalOcclusionDistanceMode OcclusionDistanceMode;
bool BypassOcclusionManagerUpdates;
bool OverrideOcclusionManagerSettings;
Texture2D?DepthTexture;
Matrix4x4?DepthTransform;
Material CustomMaterial;
Material CustomBackgroundMaterial;
Material BackgroundMaterial;
bool UseCustomBackgroundMaterial;
Material FusedDepthMaterial;
OptimalOcclusionDistanceMode Mode;

// methods

bool TryGetDepth(int screenX, int screenY, out float depth);
void TrackOccludee(Renderer occludee);

protected
// フィールド

override string RendererName => "LightshipOcclusionExtension Pass(LegacyRP)";
override bool ShouldAddCommandBuffer => IsUsingLegacyRenderPipeline&& IsAnyFeatureEnabled;

// プロパティ

override string ShaderName;

// メソッド

override string[] OnRequestExternalPassDependencies(CameraEvent evt);
override bool OnAddRenderCommands(CommandBuffer cmd, Material mat);
override void Awake();
override void Update();
};

詳細なドキュメント

このコンポーネントを使用すると、LightshipのXROcclusionSubsystem 実装で使用可能な追加機能を設定できます。

フィールド

レンダラー名

override string RendererName => "LightshipOcclusionExtension Pass(LegacyRP)"

オクルージョン拡張コマンドバッファの名前。

ShouldAddCommandBuffer

override bool ShouldAddCommandBuffer => IsUsingLegacyRenderPipeline&& IsAnyFeatureEnabled

コマンドバッファをカメラに添付するかどうかを決定する。

IsRenderingActive

bool IsRenderingActive => IsCommandBufferAdded ||(!IsUsingLegacyRenderPipeline&& IsAnyFeatureEnabled)

カスタムオクルージョン機能を満たすために、背景レンダリングの2つめのパスをアクティブにするかどうか。

SupportsTargetFrameRate

bool SupportsTargetFrameRate => IsUsingLightshipOcclusionSubsystem

TargetFrameRate API が現在の設定でサポートされているかどうかを判定します。

プロパティ

シェーダー名

override string ShaderName

レンダリングマテリアルで使用されるシェーダーの名前。

TargetFrameRate

uint? TargetFrameRate

深度推論が目標とするフレームレート。 値を0に設定すると、推奨フレームレートが使用されます。 SupportsTargetFrameRate](./index.mdx#SupportsTargetFrameRate) を呼び出し、ターゲットフレームレートがサポートされているかどうかをチェックする。

LatestIntrinsicsMatrix

Matrix4x4? LatestIntrinsicsMatrix

DepthTexture の intrinsics 行列を返します。 カメラの焦点距離と主点の値を含みます。 カメラから見た2D画像のピクセル座標と3Dワールド座標を変換します。

LatestExtrinsicsMatrix

Matrix4x4? LatestExtrinsicsMatrix

DepthTexture の extrinsics 行列を返します。

OcclusionDistanceMode

OptimalOcclusionDistanceMode OcclusionDistanceMode

オクルージョンの視覚的品質が最も高くなる距離を決定するために使用されている現在のモードを取得または設定します。

BypassOcclusionManagerUpdates

bool BypassOcclusionManagerUpdates

オクルージョンマネージャーの深度テクスチャの自動更新を無効にするかどうかを設定します。 この機能を使用することで、深度は最終的にLightship Occlusion Extensionによって上書きされるため、不要なテクスチャ操作を防ぐことができます。 この設定を使用しない場合、レンダリングスレッドとの不要な同期が発生し、パフォーマンスに影響を及ぼす可能性があります。

OverrideOcclusionManagerSettings

bool OverrideOcclusionManagerSettings

オクルージョンマネージャーの設定を上書きして、オクルージョンエクステンションに最適な設定をするかどうか。 現在、以下のオーバーライドが適用されています:1) ライダーセンサーを搭載したiPhoneデバイスでは、ベスト・オクルージョンモードとミディアム・オクルージョンモードは、クラッシュするだけでなく、大幅なパフォーマンスの低下を引き起こします。 この問題を避けるために、オクルージョンモードを最速にオーバーライドし、最良の結果を得るためにスムーズなエッジを有効にします。 2) オクルージョン拡張機能が有効な場合、オクルージョン優先モードはNoOcclusionに設定されます。

DepthTexture

Texture2D? DepthTexture

レンダリングに使用される生の深度テクスチャを返します。

DepthTransform

Matrix4x4? DepthTransform

正規化された画像座標と、DepthTexture をビューポート上でレンダリングするのに適した座標空間との間で変換するための変換を返します。

カスタム素材

Material CustomMaterial

AR背景深度バッファの処理に使用するカスタムマテリアルを取得または設定します。 NULLに設定すると、デフォルトの素材が使用されます。

メソッド

OnRequestExternalPassDependencies

override string[] OnRequestExternalPassDependencies(CameraEvent evt)

オクルージョン拡張コマンドバッファは、AR 背景コマンドバッファの後に実行する必要があります。

TryGetDepth

bool TryGetDepth(int screenX, int screenY, out float depth)

指定されたピクセル座標におけるメトリックの視線深度が返ります。

    パラメーター:

    screenX - 画面上のx座標。

    screenY - 画面上のy座標。

    depth - 結果として得られる深度値。

    戻り値:

    深度値の取得が成功したかどうかを示します。

TrackOccludee

void TrackOccludee(Renderer occludee)

SpecifiedGameObjectオクルージョンモードでオクルージョンされる主要仮想オブジェクトを設定します。

この方法は、最適なオクルージョン距離モードの設定を変更します。