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オクルージョンモードでオクルージョンされる主要仮想オブジェクトを設定します。
この方法は、最適なオクルージョン距離モードの設定を変更します。