import { BufferGeometry, Mesh, PerspectiveCamera, Scene } from 'three'; /** * three.js の Reflector(examples/jsm/objects/Reflector.js・MIT License・ * Copyright 2010-2026 three.js authors)のフォーク。 * XRift公式 (@xrift/world-components・ライセンス表記なし)のコードは * 一切含まない=依存ごと置き換える。 * * upstream からの変更点: * - reflectLayersMask: 反射レンダリングに使う仮想カメラの layers を外部から * 指定できる。「鏡に何を映すか」の選択=解像度と違いシーン再描画の * ドローコールそのものを削れる(VRChat流「アバターだけミラー」の本命レバー) * - blendOverlay の色合成を撤去した恒等ミラー(upstream既定 0x7F7F7F でも * overlay合成が残る。色を混ぜないのが「正しい鏡」) */ export interface LayeredReflectorOptions { /** 鏡面すれすれのオブジェクトの欠け対策バイアス */ clipBias?: number; textureWidth?: number; textureHeight?: number; /** MSAAサンプル数。Meta Quest (Android Chrome) の描画不具合回避には 0 */ multisample?: number; } export declare class LayeredReflector extends Mesh { readonly isReflector = true; /** 反射に使う仮想カメラの layers マスク。毎フレーム反射前に適用される */ reflectLayersMask: number; /** * 反射レンダリングの直前に毎回呼ばれるフック。ホストが毎フレーム * layersを設定し直す環境でも確実に効くよう、レイヤータグ付けはここで行う */ onBeforeReflect?: (scene: Scene) => void; /** 鏡が背を向けていても反射を更新するか */ forceUpdate: boolean; /** 反射視点の仮想カメラ(このフォークでは完全に自前所有) */ camera: PerspectiveCamera; dispose: () => void; constructor(geometry: BufferGeometry, options?: LayeredReflectorOptions); } //# sourceMappingURL=LayeredReflector.d.ts.map