@zephyr3d/editor 0.3.4 → 0.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{index-DzQzWsCG.js → index-ySiLtSxz.js} +3 -3
- package/dist/assistant/zephyr-types-index.json +14217 -7895
- package/dist/index.html +1 -1
- package/dist/modules/zephyr3d_backend-webgl.js.map +1 -1
- package/dist/modules/zephyr3d_backend-webgpu.js +13 -12
- package/dist/modules/zephyr3d_backend-webgpu.js.map +1 -1
- package/dist/modules/zephyr3d_device.js +15 -15
- package/dist/modules/zephyr3d_device.js.map +1 -1
- package/dist/modules/zephyr3d_imgui.js.map +1 -1
- package/dist/modules/zephyr3d_scene.js +3276 -1089
- package/dist/modules/zephyr3d_scene.js.map +1 -1
- package/dist/vendor/zephyr3d/backend-webgl/dist/index.js.map +1 -1
- package/dist/vendor/zephyr3d/backend-webgpu/dist/capabilities_webgpu.js +7 -6
- package/dist/vendor/zephyr3d/backend-webgpu/dist/capabilities_webgpu.js.map +1 -1
- package/dist/vendor/zephyr3d/backend-webgpu/dist/index.js.map +1 -1
- package/dist/vendor/zephyr3d/backend-webgpu/dist/renderpass_webgpu.js +6 -6
- package/dist/vendor/zephyr3d/backend-webgpu/dist/renderpass_webgpu.js.map +1 -1
- package/dist/vendor/zephyr3d/device/dist/device.js +15 -15
- package/dist/vendor/zephyr3d/device/dist/device.js.map +1 -1
- package/dist/vendor/zephyr3d/imgui/dist/index.d.ts +7 -0
- package/dist/vendor/zephyr3d/imgui/dist/index.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/animation/animation.js +87 -0
- package/dist/vendor/zephyr3d/scene/dist/animation/animation.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/animation/animationcontroller.js +503 -0
- package/dist/vendor/zephyr3d/scene/dist/animation/animationcontroller.js.map +1 -0
- package/dist/vendor/zephyr3d/scene/dist/animation/animationset.js +686 -63
- package/dist/vendor/zephyr3d/scene/dist/animation/animationset.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/animation/animationtimeline.js +974 -0
- package/dist/vendor/zephyr3d/scene/dist/animation/animationtimeline.js.map +1 -0
- package/dist/vendor/zephyr3d/scene/dist/animation/joint_dynamics_modifier.js +19 -19
- package/dist/vendor/zephyr3d/scene/dist/animation/joint_dynamics_modifier.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/app/engine.js +131 -131
- package/dist/vendor/zephyr3d/scene/dist/app/engine.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/app/scriptregistry.js +17 -12
- package/dist/vendor/zephyr3d/scene/dist/app/scriptregistry.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/asset/model.js +2 -1
- package/dist/vendor/zephyr3d/scene/dist/asset/model.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/avatar/wardrobe.js +13 -13
- package/dist/vendor/zephyr3d/scene/dist/avatar/wardrobe.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/camera/camera.js +201 -201
- package/dist/vendor/zephyr3d/scene/dist/camera/camera.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/index.d.ts +1271 -10
- package/dist/vendor/zephyr3d/scene/dist/index.js +3 -1
- package/dist/vendor/zephyr3d/scene/dist/index.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/material/mixins/lightmodel/pbrmetallicroughness.js +5 -5
- package/dist/vendor/zephyr3d/scene/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/material/mixins/lit.js +7 -3
- package/dist/vendor/zephyr3d/scene/dist/material/mixins/lit.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/material/mtoon.js +4 -4
- package/dist/vendor/zephyr3d/scene/dist/material/mtoon.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/material/pbrblueprint.js +11 -11
- package/dist/vendor/zephyr3d/scene/dist/material/pbrblueprint.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/material/shader/helper.js +284 -284
- package/dist/vendor/zephyr3d/scene/dist/material/shader/helper.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/posteffect/ssr.js +9 -9
- package/dist/vendor/zephyr3d/scene/dist/posteffect/ssr.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/render/lightpass.js +5 -5
- package/dist/vendor/zephyr3d/scene/dist/render/lightpass.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/render/renderer.js +7 -7
- package/dist/vendor/zephyr3d/scene/dist/render/renderer.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/shadow/esm.js +1 -1
- package/dist/vendor/zephyr3d/scene/dist/shadow/esm.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/shadow/shadow_region.js +45 -45
- package/dist/vendor/zephyr3d/scene/dist/shadow/shadow_region.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/manager.js +276 -275
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/manager.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/animation.js +4 -3
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/camera.js +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/camera.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/mesh.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/node.js +3 -2
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/node.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/sprite.js.map +1 -1
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"camera.js","sources":["../../src/camera/camera.ts"],"sourcesContent":["import type { CubeFace, Immutable, Nullable, Plane } from '@zephyr3d/base';\nimport { DRef, Vector2, Matrix4x4, Frustum, Vector4, Vector3, Ray, halton23 } from '@zephyr3d/base';\nimport { SceneNode } from '../scene/scene_node';\nimport type { Drawable, PickTarget } from '../render/drawable';\nimport type { BaseTexture } from '@zephyr3d/device';\nimport { Compositor } from '../posteffect/compositor';\nimport type { Scene } from '../scene/scene';\nimport type {\n BaseCameraController,\n IBaseEvent,\n IControllerKeydownEvent,\n IControllerKeyupEvent,\n IControllerPointerDownEvent,\n IControllerPointerMoveEvent,\n IControllerPointerUpEvent,\n IControllerWheelEvent\n} from './base';\nimport type { OIT } from '../render/oit';\nimport { TAA } from '../posteffect/taa';\nimport { SSR } from '../posteffect/ssr';\nimport { SSS } from '../posteffect/sss';\nimport { Tonemap } from '../posteffect/tonemap';\nimport { FXAA } from '../posteffect/fxaa';\nimport { Bloom } from '../posteffect/bloom';\nimport { SAO } from '../posteffect/sao';\nimport { MotionBlur } from '../posteffect/motionblur';\nimport { ColorAdjust } from '../posteffect/coloradjust';\nimport { getDevice } from '../app/api';\nimport type { ScreenConfig } from '../app/screen';\nimport { ScreenAdapter } from '../app/screen';\nimport { ABufferOIT } from '../render/abuffer_oit';\nimport { WeightedBlendedOIT } from '../render/weightedblended_oit';\nimport type { HistoryResourceManager } from '../render';\n\n/**\n * Result of a camera picking operation.\n *\n * Used by GPU/CPU picking flows to report what was intersected.\n *\n * @public\n */\nexport type PickResult = {\n /** Distance from ray origin to intersection point (world units). */\n distance: number;\n /** Intersection point in world space. */\n intersectedPoint: Vector3;\n /** The intersected drawable, if known. */\n drawable: Drawable;\n /** Logical pick target information. */\n target: PickTarget;\n};\n\n/**\n * Temporal history resources used by reprojection (TAA, motion blur).\n *\n * @public\n */\nexport type CameraHistoryData = {\n prevColorTex: Nullable<BaseTexture>;\n prevMotionVectorTex: Nullable<BaseTexture>;\n prevSSRReflectTex: Nullable<BaseTexture>;\n prevSSRMotionVectorTex: Nullable<BaseTexture>;\n};\n\n/**\n * Camera render path mode.\n * @public\n */\nexport type RenderPath = 'forward';\n/**\n * Camera Order-Independent Transparency mode.\n * @public\n */\nexport type CameraOITMode = 'none' | 'weighted' | 'abuffer';\n/**\n * Subsurface Scattering debug visualization modes (implementation-defined).\n * @public\n */\nexport type SSSDebugView =\n | 'none'\n | 'scatter_mask'\n | 'scatter_softness'\n | 'scatter_radius'\n | 'scatter_falloff'\n | 'profile_energy'\n | 'profile_transmission'\n | 'profile_boundary'\n | 'diffuse'\n | 'blur'\n | 'screen_thinness'\n | 'thin_transmission_mask'\n | 'thin_lighting'\n | 'transmission_shadow';\n/**\n * Subsurface Scattering quality presets that resolve multiple internal settings for convenience.\n * @public\n */\nexport type SSSQualityPreset = 'quality' | 'balanced' | 'performance';\n/**\n * Resolved Subsurface Scattering settings after applying the quality preset. These are the actual settings used by the SSS post effect.\n * @public\n */\nexport type SSSResolvedSettings = {\n halfRes: boolean;\n blurKernelSize: number;\n blurStdDev: number;\n blurDepthCutoff: number;\n normalCutoff: number;\n};\n\ntype SSSDefaultSettings = {\n blurScale: number;\n strength: number;\n transmissionStrength: number;\n transmissionPower: number;\n multiScatter: number;\n};\n\nconst SSS_DEFAULT_SETTINGS: SSSDefaultSettings = {\n blurScale: 11,\n strength: 0.65,\n transmissionStrength: 0.18,\n transmissionPower: 2.1,\n multiScatter: 0.08\n};\n\nconst SSS_QUALITY_PRESET_SETTINGS: Record<SSSQualityPreset, SSSResolvedSettings> = {\n quality: {\n halfRes: false,\n blurKernelSize: 11,\n blurStdDev: 3.5,\n blurDepthCutoff: 0.24,\n normalCutoff: 0.82\n },\n balanced: {\n halfRes: false,\n blurKernelSize: 9,\n blurStdDev: 3,\n blurDepthCutoff: 0.26,\n normalCutoff: 0.78\n },\n performance: {\n halfRes: true,\n blurKernelSize: 7,\n blurStdDev: 2.4,\n blurDepthCutoff: 0.32,\n normalCutoff: 0.72\n }\n};\n\n/**\n * A renderable camera node that manages view/projection math, frusta,\n * input control, picking, and a post-processing chain via a compositor.\n *\n * Key features:\n * - Maintains projection, view, VP, and inverse VP matrices and lazily recomputes them when invalidated.\n * - Provides world- and view-space frusta for culling and clipping.\n * - Supports perspective and orthographic projections.\n * - Integrates with post effects (Tonemap, FXAA, TAA, Bloom, SSR, SSS, SSAO, Motion Blur) through an internal `Compositor`.\n * - Handles temporal jitter and history state when TAA or motion blur are enabled.\n * - Emits picking rays from screen coordinates and supports async GPU picking.\n * - Optional controller integration for user input handling.\n *\n * Performance notes:\n * - Matrices/frusta are computed on demand and cached until invalidation.\n * - Temporal jitter and history are set up only when required by enabled features and device support.\n *\n * @public\n */\nexport class Camera extends SceneNode {\n /** @internal Halton 2-3 sequence used for TAA jittering. */\n private static readonly _halton23 = halton23(16);\n /** @internal Per-camera history resources. */\n private static readonly _historyData: WeakMap<Camera, CameraHistoryData> = new WeakMap();\n /** @internal Per-camera history resource manager. */\n private static readonly _historyResourceManager: WeakMap<Camera, HistoryResourceManager> = new WeakMap();\n /** @internal Screen adapter for this camera */\n protected _screenAdapter: ScreenAdapter;\n /** @internal Whether the camera is adapted */\n protected _adapted: boolean;\n /** @internal Adapted viewport */\n protected _adaptedViewport: Nullable<number[]>;\n /** @internal Adapted relative viewport */\n protected _adaptedRelativeViewport: Nullable<number[]>;\n /** @internal RenderTarget version */\n protected _adaptedVersion: number;\n /** @internal Projection matrix. */\n protected _projMatrix: Matrix4x4;\n /** @internal Inverse projection matrix. */\n protected _invProjMatrix: Matrix4x4;\n /** @internal View matrix (world -\\> camera). */\n protected _viewMatrix: Matrix4x4;\n /** @internal View-projection matrix. */\n protected _viewProjMatrix: Matrix4x4;\n /** @internal Inverse view-projection matrix. */\n protected _invViewProjMatrix: Matrix4x4;\n /** @internal Framebuffer clear color, disabled when null. Default is null */\n protected _clearColor: Vector4;\n /** @internal Framebuffer depth clear value, disabled when null. Default is 1 */\n protected _clearDepth: number;\n /** @internal Framebuffer stencil clear value, disabled when null. Default is 0 */\n protected _clearStencil: number;\n /** @internal Optional clip plane in camera space. */\n protected _clipPlane: Nullable<Plane>;\n /** @internal Camera controller (input). */\n protected _controller: Nullable<BaseCameraController>;\n /** @internal World-space frustum (from VP). */\n protected _frustum: Nullable<Frustum>;\n /** @internal View-space frustum (from P). */\n protected _frustumV: Nullable<Frustum>;\n /** @internal Dirty flag indicating derived matrices/frusta need recompute. */\n protected _dirty: boolean;\n /** @internal Viewport [x, y, w, h]; null uses full framebuffer. */\n protected _viewport: Nullable<number[]>;\n /** @internal Scissor rectangle [x, y, w, h]; null uses viewport. */\n protected _scissor: Nullable<number[]>;\n /** @internal Clip plane mask for custom clipping schemes. */\n protected _clipMask: number;\n /** @internal Order-Independent Transparency reference. */\n protected _oit: DRef<OIT>;\n /** @internal OIT algorithm selection mode. */\n protected _oitMode: CameraOITMode;\n /** @internal ABuffer OIT layer budget. */\n protected _oitABufferLayers: number;\n /** @internal Whether to perform a depth pre-pass. */\n protected _depthPrePass: boolean;\n /** @internal Render path selection for scene renderer. */\n protected _renderPath: RenderPath;\n /** @internal Whether command buffers may be reused for optimization. */\n protected _commandBufferReuse: boolean;\n /** @internal Hi-Z acceleration enable (primarily for SSR). */\n protected _HiZ: boolean;\n /** @internal If true, a float point backbuffer will be used. The default value is true */\n protected _HDR: boolean;\n /** @internal Tonemap enable flag (via post effect). */\n protected _toneMap: boolean;\n /** @internal Tonemap post effect reference. */\n protected _postEffectTonemap: DRef<Tonemap>;\n /** @internal Tonemap exposure. */\n protected _tonemapExposure: number;\n /** @internal Motion blur enable flag (via post effect). */\n protected _motionBlur: boolean;\n /** @internal Motion blur post effect reference. */\n protected _postEffectMotionBlur: DRef<MotionBlur>;\n /** @internal Motion blur strength. */\n protected _motionBlurStrength: number;\n /** @internal Bloom enable flag (via post effect). */\n protected _bloom: boolean;\n /** @internal Bloom post effect reference. */\n protected _postEffectBloom: DRef<Bloom>;\n /** @internal Bloom downsample level cap. */\n protected _bloomMaxDownsampleLevels: number;\n /** @internal Bloom downsample resolution limit. */\n protected _bloomDownsampleLimit: number;\n /** @internal Bloom threshold. */\n protected _bloomThreshold: number;\n /** @internal Bloom threshold knee (soft thresholding). */\n protected _bloomThresholdKnee: number;\n /** @internal Bloom intensity. */\n protected _bloomIntensity: number;\n /** @internal Color adjustment enable flag (via post effect). */\n protected _colorAdjustEnabled: boolean;\n /** @internal Color adjustment post effect reference. */\n protected _postEffectColorAdjust: DRef<ColorAdjust>;\n /** @internal Color adjustment saturation. */\n protected _colorAdjustSaturation: number;\n /** @internal Color adjustment contrast. */\n protected _colorAdjustContrast: number;\n /** @internal Color adjustment hue (degrees). */\n protected _colorAdjustHue: number;\n /** @internal Color adjustment sharpen amount. */\n protected _colorAdjustSharpen: number;\n\n /** @internal FXAA enable flag (via post effect). */\n protected _FXAA: boolean;\n /** @internal FXAA post effect reference. */\n protected _postEffectFXAA: DRef<FXAA>;\n\n /** @internal TAA enable flag (via post effect). */\n protected _TAA: boolean;\n /** @internal TAA post effect reference. */\n protected _postEffectTAA: DRef<TAA>;\n /** @internal TAA debug mode (implementation-defined). */\n protected _TAADebug: number;\n /** @internal Cascaded shadow debug visualization flag. */\n protected _shadowDebugCascades: boolean;\n\n /** @internal SSR enable flag (via post effect). */\n protected _SSR: boolean;\n /** @internal SSR post effect reference. */\n protected _postEffectSSR: DRef<SSR>;\n /** @internal SSR parameter vector: (maxDistance, iterations, thickness, reserved). */\n protected _ssrParams: Vector4;\n /** @internal SSR roughness cutoff; above this SSR is suppressed. */\n protected _ssrMaxRoughness: number;\n /** @internal SSR roughness factor scaling. */\n protected _ssrRoughnessFactor: number;\n /** @internal SSR stride for ray marching. */\n protected _ssrStride: number;\n /** @internal Whether SSR thickness is computed automatically. */\n protected _ssrCalcThickness: boolean;\n /** @internal SSR blur scale. */\n protected _ssrBlurriness: number;\n /** @internal SSR blur depth cutoff. */\n protected _ssrBlurDepthCutoff: number;\n /** @internal SSR blur kernel size. */\n protected _ssrBlurKernelSize: number;\n /** @internal SSR Gaussian blur standard deviation. */\n protected _ssrBlurStdDev: number;\n /** @internal Whether SSR temporal accumulation is enabled. */\n protected _ssrTemporal: boolean;\n /** @internal SSR temporal blending weight in [0, 1]. */\n protected _ssrTemporalWeight: number;\n /** @internal SSS enable flag (via post effect). */\n protected _SSS: boolean;\n /** @internal SSS post effect reference. */\n protected _postEffectSSS: DRef<SSS>;\n /** @internal SSS blur scale in pixels per authored width unit. */\n protected _sssBlurScale: number;\n /** @internal High-level preset that resolves SSS blur quality controls. */\n protected _sssQualityPreset: SSSQualityPreset;\n /** @internal SSS composite strength. */\n protected _sssStrength: number;\n /** @internal SSS thin-shell transmission strength. */\n protected _sssTransmissionStrength: number;\n /** @internal SSS thin-shell transmission exponent. */\n protected _sssTransmissionPower: number;\n /** @internal SSS multi-scatter energy compensation. */\n protected _sssMultiScatter: number;\n /** @internal Cached runtime SSS settings after applying the quality preset. */\n protected _sssResolvedSettings: SSSResolvedSettings;\n /** @internal SSS debug visualization mode. */\n protected _sssDebugView: SSSDebugView;\n /** @internal SSAO enable flag (via post effect). */\n protected _SSAO: boolean;\n /** @internal SSAO post effect reference. */\n protected _postEffectSSAO: DRef<SAO>;\n /** @internal SSAO scale (sampling radius multiplier). */\n protected _SSAOScale: number;\n /** @internal SSAO bias (self-shadowing reduction). */\n protected _SSAOBias: number;\n /** @internal SSAO sample radius. */\n protected _SSAORadius: number;\n /** @internal SSAO intensity. */\n protected _SSAOIntensity: number;\n /** @internal SSAO blur depth cutoff. */\n protected _SSAOBlurDepthCutoff: number;\n\n /** @internal Pending GPU-pick promise (one-shot). */\n protected _pickResultPromise: Nullable<Promise<Nullable<PickResult>>>;\n /** @internal Resolver for the pending pick promise. */\n protected _pickResultResolve: Nullable<(result: Nullable<PickResult>) => void>;\n /** @internal Last pick X position (viewport-relative). */\n protected _pickPosX: number;\n /** @internal Last pick Y position (viewport-relative). */\n protected _pickPosY: number;\n /** @internal Last resolved pick result (optional cache). */\n protected _pickResult: Nullable<PickResult>;\n\n /** @internal Current jitter value in clip space (x, y). */\n protected _jitterValue: Vector2;\n /** @internal Previous frame’s jitter value. */\n protected _prevJitterValue: Nullable<Vector2>;\n /** @internal Current jittered VP matrix. */\n protected _jitteredVPMatrix: Matrix4x4;\n /** @internal Inverse of the current jittered VP matrix. */\n protected _jitteredInvVPMatrix: Matrix4x4;\n /** @internal Previous frame’s non-jittered VP matrix. */\n protected _prevVPMatrix: Nullable<Matrix4x4>;\n /** @internal Previous frame’s camera world position. */\n protected _prevPosition: Nullable<Vector3>;\n /** @internal Previous frame’s jittered VP matrix. */\n protected _prevJitteredVPMatrix: Nullable<Matrix4x4>;\n /** @internal Post-processing compositor attached to this camera. */\n protected _compositor: Compositor;\n /** @internal Pointer interaction rectangle in css pixels (relative to canvas) */\n protected _interactionRect: Nullable<[left: number, top: number, width: number, height: number]>;\n /** @internal captured by which mouse button (-1 if not captured) */\n protected _capturedButton: number;\n /**\n * Creates a new camera node.\n *\n * Initializes projection/view matrices, temporal fields, controller linkage, and\n * builds the default post-processing pipeline on the internal compositor.\n *\n * @param scene - The scene that owns this camera.\n * @param projectionMatrix - Optional projection matrix to initialize with.\n */\n constructor(scene: Nullable<Scene>, projectionMatrix?: Matrix4x4) {\n super(scene);\n this._projMatrix = projectionMatrix || Matrix4x4.identity();\n this._invProjMatrix = Matrix4x4.invert(this._projMatrix);\n this._viewMatrix = Matrix4x4.identity();\n this._viewProjMatrix = Matrix4x4.identity();\n this._invViewProjMatrix = Matrix4x4.identity();\n this._clipPlane = null;\n this._clearColor = new Vector4(0, 0, 0, 1);\n this._clearDepth = 1;\n this._clearStencil = 0;\n this._dirty = true;\n this._controller = null;\n this._viewport = null;\n this._adaptedViewport = null;\n this._adaptedRelativeViewport = null;\n this._adaptedVersion = 0;\n this._scissor = null;\n this._clipMask = 0;\n this._frustum = null;\n this._frustumV = null;\n this._oit = new DRef();\n this._oitMode = 'none';\n this._oitABufferLayers = 20;\n this._depthPrePass = false;\n this._renderPath = 'forward';\n this._screenAdapter = new ScreenAdapter();\n this._adapted = false;\n this._HiZ = false;\n this._HDR = true;\n this._toneMap = true;\n this._postEffectTonemap = new DRef();\n this._tonemapExposure = 1;\n this._motionBlur = false;\n this._postEffectMotionBlur = new DRef();\n this._motionBlurStrength = 1;\n this._bloom = false;\n this._postEffectBloom = new DRef();\n this._bloomMaxDownsampleLevels = 4;\n this._bloomDownsampleLimit = 32;\n this._bloomThreshold = 0.8;\n this._bloomThresholdKnee = 0;\n this._bloomIntensity = 1;\n this._colorAdjustEnabled = false;\n this._postEffectColorAdjust = new DRef();\n this._colorAdjustSaturation = 1;\n this._colorAdjustContrast = 1;\n this._colorAdjustHue = 0;\n this._colorAdjustSharpen = 0;\n this._FXAA = false;\n this._postEffectFXAA = new DRef();\n this._TAA = false;\n this._postEffectTAA = new DRef();\n this._TAADebug = 0;\n this._shadowDebugCascades = false;\n this._SSR = false;\n this._postEffectSSR = new DRef();\n this._ssrParams = new Vector4(64, 96, 0.9, 0);\n this._ssrMaxRoughness = 0.55;\n this._ssrRoughnessFactor = 1;\n this._ssrStride = 1;\n this._ssrCalcThickness = false;\n this._ssrBlurriness = 0.008;\n this._ssrBlurDepthCutoff = 2;\n this._ssrBlurKernelSize = 5;\n this._ssrBlurStdDev = 4;\n this._ssrTemporal = true;\n this._ssrTemporalWeight = 0.85;\n this._SSS = false;\n this._postEffectSSS = new DRef();\n this._sssBlurScale = SSS_DEFAULT_SETTINGS.blurScale;\n this._sssQualityPreset = 'balanced';\n this._sssStrength = SSS_DEFAULT_SETTINGS.strength;\n this._sssTransmissionStrength = SSS_DEFAULT_SETTINGS.transmissionStrength;\n this._sssTransmissionPower = SSS_DEFAULT_SETTINGS.transmissionPower;\n this._sssMultiScatter = SSS_DEFAULT_SETTINGS.multiScatter;\n const defaultSSSQualityPreset = SSS_QUALITY_PRESET_SETTINGS.balanced;\n this._sssResolvedSettings = {\n halfRes: defaultSSSQualityPreset.halfRes,\n blurKernelSize: defaultSSSQualityPreset.blurKernelSize,\n blurStdDev: defaultSSSQualityPreset.blurStdDev,\n blurDepthCutoff: defaultSSSQualityPreset.blurDepthCutoff,\n normalCutoff: defaultSSSQualityPreset.normalCutoff\n };\n this.updateSSSResolvedSettings();\n this._sssDebugView = 'none';\n this._SSAO = false;\n this._postEffectSSAO = new DRef();\n this._SSAOScale = 10;\n this._SSAOBias = 1;\n this._SSAOIntensity = 0.025;\n this._SSAORadius = 100;\n this._SSAOBlurDepthCutoff = 2;\n this._pickResult = null;\n this._commandBufferReuse = true;\n this._jitteredVPMatrix = new Matrix4x4();\n this._jitteredInvVPMatrix = new Matrix4x4();\n this._jitterValue = new Vector2(0, 0);\n this._prevVPMatrix = null;\n this._prevPosition = null;\n this._prevJitteredVPMatrix = null;\n this._prevJitterValue = null;\n this._pickResultPromise = null;\n this._pickResultResolve = null;\n this._pickPosX = 0;\n this._pickPosY = 0;\n this._compositor = new Compositor();\n this._capturedButton = -1;\n this._interactionRect = null;\n this.updatePostProcessing();\n if (scene && !scene.mainCamera) {\n scene.mainCamera = this;\n }\n }\n /**\n * The compositor that owns and runs the camera's post-processing chain.\n */\n get compositor() {\n return this._compositor;\n }\n /**\n * Pointer interaction rectangle in css pixels (relative to canvas)\n */\n get interactionRect() {\n return this._interactionRect;\n }\n set interactionRect(rect) {\n this._interactionRect = rect;\n }\n /**\n * Framebuffer clear color, or `null` to disable.\n */\n get clearColor() {\n return this._clearColor;\n }\n set clearColor(v) {\n this._clearColor = v?.clone() ?? null;\n }\n /**\n * Framebuffer stencil clear value, disabled when null. Default is 0.\n */\n get clearDepth() {\n return this._clearDepth;\n }\n set clearDepth(v) {\n this._clearDepth = v;\n }\n /**\n * Framebuffer stencil clear value, disabled when null. Default is 0.\n */\n get clearStencil() {\n return this._clearStencil;\n }\n set clearStencil(v) {\n this._clearStencil = v;\n }\n /**\n * Whether Hi-Z acceleration is enabled.\n *\n * Often improves SSR performance with little quality impact when supported.\n */\n get HiZ() {\n return this._HiZ;\n }\n set HiZ(val) {\n this._HiZ = !!val;\n }\n /**\n * Render path used by the scene renderer.\n */\n get renderPath() {\n return this._renderPath;\n }\n set renderPath(_val: RenderPath) {\n this._renderPath = 'forward';\n }\n /**\n * Whether HDR backbuffer is enabled.\n *\n * Tonemap should be disabled when not using HDR backbuffer.\n */\n get HDR() {\n return this._HDR;\n }\n set HDR(val) {\n this._HDR = !!val;\n }\n /**\n * Whether tonemapping is enabled via the post effect.\n */\n get toneMap() {\n return this._postEffectTonemap.get()!.enabled;\n }\n set toneMap(val) {\n this._postEffectTonemap.get()!.enabled = !!val;\n }\n /**\n * Whether motion blur is enabled via the post effect.\n */\n get motionBlur() {\n return this._postEffectMotionBlur.get()!.enabled;\n }\n set motionBlur(val) {\n this._postEffectMotionBlur.get()!.enabled = !!val;\n }\n /** Motion blur strength */\n get motionBlurStrength() {\n return this._motionBlurStrength;\n }\n set motionBlurStrength(val) {\n this._motionBlurStrength = val;\n if (this._postEffectMotionBlur.get()) {\n this._postEffectMotionBlur.get()!.strength = this._motionBlurStrength;\n }\n }\n /**\n * Gets whether Bloom is enabled.\n */\n get bloom() {\n return this._postEffectBloom.get()!.enabled;\n }\n set bloom(val) {\n this._postEffectBloom.get()!.enabled = !!val;\n }\n /**\n * Maximum bloom downsample levels\n */\n get bloomMaxDownsampleLevels() {\n return this._bloomMaxDownsampleLevels;\n }\n set bloomMaxDownsampleLevels(val) {\n this._bloomMaxDownsampleLevels = val;\n if (this._postEffectBloom.get()) {\n this._postEffectBloom.get()!.maxDownsampleLevel = val;\n }\n }\n /**\n * Bloom downsample limit\n */\n get bloomDownsampleLimit() {\n return this._bloomDownsampleLimit;\n }\n set bloomDownsampleLimit(val) {\n this._bloomDownsampleLimit = val;\n if (this._postEffectBloom.get()) {\n this._postEffectBloom.get()!.downsampleLimit = val;\n }\n }\n /**\n * Bloom threshold\n */\n get bloomThreshold() {\n return this._bloomThreshold;\n }\n set bloomThreshold(val) {\n this._bloomThreshold = val;\n if (this._postEffectBloom.get()) {\n this._postEffectBloom.get()!.threshold = val;\n }\n }\n /**\n * Bloom threshold knee\n */\n get bloomThresholdKnee() {\n return this._bloomThresholdKnee;\n }\n set bloomThresholdKnee(val) {\n this._bloomThresholdKnee = val;\n if (this._postEffectBloom.get()) {\n this._postEffectBloom.get()!.thresholdKnee = val;\n }\n }\n /**\n * Bloom intensity\n */\n get bloomIntensity() {\n return this._bloomIntensity;\n }\n set bloomIntensity(val) {\n this._bloomIntensity = val;\n if (this._postEffectBloom.get()) {\n this._postEffectBloom.get()!.intensity = val;\n }\n }\n /** Whether color adjustment is enabled. */\n get colorAdjust() {\n return this._postEffectColorAdjust.get()!.enabled;\n }\n set colorAdjust(val) {\n this._postEffectColorAdjust.get()!.enabled = !!val;\n }\n /** Color adjustment saturation, 1 means unchanged. */\n get colorAdjustSaturation() {\n return this._colorAdjustSaturation;\n }\n set colorAdjustSaturation(val) {\n this._colorAdjustSaturation = val;\n if (this._postEffectColorAdjust.get()) {\n this._postEffectColorAdjust.get()!.saturation = val;\n }\n }\n /** Color adjustment contrast, 1 means unchanged. */\n get colorAdjustContrast() {\n return this._colorAdjustContrast;\n }\n set colorAdjustContrast(val) {\n this._colorAdjustContrast = val;\n if (this._postEffectColorAdjust.get()) {\n this._postEffectColorAdjust.get()!.contrast = val;\n }\n }\n /** Color adjustment hue in degrees. */\n get colorAdjustHue() {\n return this._colorAdjustHue;\n }\n set colorAdjustHue(val) {\n this._colorAdjustHue = val;\n if (this._postEffectColorAdjust.get()) {\n this._postEffectColorAdjust.get()!.hue = val;\n }\n }\n /** Color adjustment sharpen amount, 0 means disabled. */\n get colorAdjustSharpen() {\n return this._colorAdjustSharpen;\n }\n set colorAdjustSharpen(val) {\n this._colorAdjustSharpen = val;\n if (this._postEffectColorAdjust.get()) {\n this._postEffectColorAdjust.get()!.sharpen = val;\n }\n }\n /**\n * Gets whether FXAA is enabled.\n */\n get FXAA() {\n return this._postEffectFXAA.get()!.enabled;\n }\n set FXAA(val) {\n this._postEffectFXAA.get()!.enabled = !!val;\n }\n /**\n * Tonemap exposure\n */\n get toneMapExposure() {\n return this._tonemapExposure;\n }\n set toneMapExposure(val) {\n this._tonemapExposure = val;\n if (this._postEffectTonemap.get()) {\n this._postEffectTonemap.get()!.exposure = val;\n }\n }\n /**\n * Gets whether TAA is enabled.\n */\n get TAA() {\n return this._postEffectTAA.get()!.enabled;\n }\n set TAA(val) {\n this._postEffectTAA.get()!.enabled = !!val;\n }\n /**\n * Gets the debug flag for TAA\n */\n get TAADebug() {\n return this._TAADebug;\n }\n set TAADebug(val) {\n this._TAADebug = val;\n }\n /**\n * Enables cascade debug visualization for directional shadows.\n */\n get shadowDebugCascades() {\n return this._shadowDebugCascades;\n }\n set shadowDebugCascades(val) {\n this._shadowDebugCascades = !!val;\n }\n /**\n * Gets whether Screen Space Reflections (SSR) is enabled.\n */\n get SSR() {\n return this._postEffectSSR.get()!.enabled;\n }\n set SSR(val) {\n this._postEffectSSR.get()!.enabled = !!val;\n }\n /**\n * Gets the maximum roughness value for screen space reflections.\n * Controls the cutoff point where surfaces are considered too rough for SSR.\n */\n get ssrMaxRoughness() {\n return this._ssrMaxRoughness;\n }\n set ssrMaxRoughness(val) {\n this._ssrMaxRoughness = val;\n }\n /**\n * Gets the roughness factor for SSR calculations.\n * Affects how surface roughness influences reflection clarity.\n */\n get ssrRoughnessFactor() {\n return this._ssrRoughnessFactor;\n }\n set ssrRoughnessFactor(val) {\n this._ssrRoughnessFactor = val;\n }\n /**\n * Gets the stride value for SSR ray marching.\n * Controls the step size during ray marching. Larger values improve performance but may miss details.\n */\n get ssrStride() {\n return this._ssrStride;\n }\n set ssrStride(val) {\n this._ssrStride = val;\n }\n /**\n * Gets the maximum distance for SSR ray marching.\n * Defines how far rays will travel when searching for reflection intersections.\n */\n get ssrMaxDistance() {\n return this._ssrParams.x;\n }\n set ssrMaxDistance(val) {\n this._ssrParams.x = val;\n }\n /**\n * Gets the number of iterations for SSR ray marching.\n * Higher values provide more accurate reflections but impact performance.\n */\n get ssrIterations() {\n return this._ssrParams.y;\n }\n set ssrIterations(val) {\n this._ssrParams.y = val;\n }\n /**\n * Gets the thickness value for SSR calculations.\n * Determines the thickness threshold for surfaces when calculating reflections.\n */\n get ssrThickness() {\n return this._ssrParams.z;\n }\n set ssrThickness(val) {\n this._ssrParams.z = val;\n }\n /**\n * Gets whether SSR should calculate thickness automatically.\n * When enabled, the system will dynamically compute surface thickness for reflections.\n */\n get ssrCalcThickness() {\n return this._ssrCalcThickness;\n }\n set ssrCalcThickness(val) {\n this._ssrCalcThickness = !!val;\n }\n /**\n * Gets the blur scale factor for SSR.\n * Controls the overall intensity of the blur effect applied to reflections.\n */\n get ssrBlurScale() {\n return this._ssrBlurriness;\n }\n set ssrBlurScale(val) {\n this._ssrBlurriness = val;\n }\n /**\n * Gets the depth cutoff value for SSR blur.\n * Determines at what depth difference the blur effect should be reduced or eliminated.\n */\n get ssrBlurDepthCutoff() {\n return this._ssrBlurDepthCutoff;\n }\n set ssrBlurDepthCutoff(val) {\n this._ssrBlurDepthCutoff = val;\n }\n /**\n * Gets the kernel size for the SSR blur effect.\n * Defines the size of the blur kernel. Larger values create softer, more spread-out blur.\n */\n get ssrBlurKernelSize() {\n return this._ssrBlurKernelSize;\n }\n set ssrBlurKernelSize(val) {\n this._ssrBlurKernelSize = val;\n }\n /**\n * Gets the standard deviation for the SSR Gaussian blur.\n * Controls the distribution of the blur effect. Higher values create more pronounced blur.\n */\n get ssrBlurStdDev() {\n return this._ssrBlurStdDev;\n }\n set ssrBlurStdDev(val) {\n this._ssrBlurStdDev = val;\n }\n /**\n * Gets whether SSR temporal accumulation is enabled.\n */\n get ssrTemporal() {\n return this._ssrTemporal;\n }\n set ssrTemporal(val) {\n this._ssrTemporal = !!val;\n }\n /**\n * Gets SSR temporal blending weight in [0, 1].\n * Higher values rely more on reprojected history.\n */\n get ssrTemporalWeight() {\n return this._ssrTemporalWeight;\n }\n set ssrTemporalWeight(val) {\n this._ssrTemporalWeight = Math.max(0, Math.min(1, val ?? 0));\n }\n /**\n * Gets whether Screen Space Subsurface Scattering (SSS) is enabled.\n */\n get SSS() {\n return this._postEffectSSS.get()!.enabled;\n }\n set SSS(val) {\n this._postEffectSSS.get()!.enabled = !!val;\n }\n /** Global blur scale for screen-space SSS. */\n get sssBlurScale() {\n return this._sssBlurScale;\n }\n set sssBlurScale(val) {\n this._sssBlurScale = Math.max(0, val ?? 0);\n }\n /**\n * High-level quality preset for SSS blur controls.\n *\n * This is the primary user-facing SSS quality control and only affects\n * the blur sampling quality/performance tradeoff, not the authored look.\n */\n get sssQualityPreset() {\n return this._sssQualityPreset;\n }\n set sssQualityPreset(val: SSSQualityPreset) {\n const next = Camera.resolveSSSQualityPreset(val);\n if (next !== this._sssQualityPreset) {\n this._sssQualityPreset = next;\n this.updateSSSResolvedSettings();\n }\n }\n /** Final SSS composite strength. */\n get sssStrength() {\n return this._sssStrength;\n }\n set sssStrength(val) {\n this._sssStrength = Math.max(0, val ?? 0);\n }\n /** Thin-shell transmission strength. */\n get sssTransmissionStrength() {\n return this._sssTransmissionStrength;\n }\n set sssTransmissionStrength(val) {\n this._sssTransmissionStrength = Math.max(0, val ?? 0);\n }\n /** Thin-shell transmission exponent. */\n get sssTransmissionPower() {\n return this._sssTransmissionPower;\n }\n set sssTransmissionPower(val) {\n this._sssTransmissionPower = Math.max(0.1, val ?? 0.1);\n }\n /** Multi-scatter energy compensation factor. */\n get sssMultiScatter() {\n return this._sssMultiScatter;\n }\n set sssMultiScatter(val) {\n this._sssMultiScatter = Math.max(0, val ?? 0);\n }\n /** Resolved SSS blur settings after applying the quality preset. */\n get sssResolvedSettings(): Readonly<SSSResolvedSettings> {\n return this._sssResolvedSettings;\n }\n /** Debug visualization for screen-space SSS buffers. */\n get sssDebugView() {\n return this._sssDebugView;\n }\n set sssDebugView(val: SSSDebugView) {\n this._sssDebugView = val ?? 'none';\n }\n /** @internal */\n get ssrParams(): Immutable<Vector4> {\n return this._ssrParams;\n }\n /**\n * Gets whether SSAO is enabled.\n */\n get SSAO() {\n return this._postEffectSSAO.get()!.enabled;\n }\n set SSAO(val) {\n this._postEffectSSAO.get()!.enabled = !!val;\n }\n /** SSAO scale */\n get SSAOScale() {\n return this._SSAOScale;\n }\n set SSAOScale(val) {\n this._SSAOScale = val;\n if (this._postEffectSSAO.get()!) {\n this._postEffectSSAO.get()!.scale = val;\n }\n }\n /** SSAO bias */\n get SSAOBias() {\n return this._SSAOBias;\n }\n set SSAOBias(val) {\n this._SSAOBias = val;\n if (this._postEffectSSAO.get()) {\n this._postEffectSSAO.get()!.bias = val;\n }\n }\n /** SSAO radius */\n get SSAORadius() {\n return this._SSAORadius;\n }\n set SSAORadius(val) {\n this._SSAORadius = val;\n if (this._postEffectSSAO.get()) {\n this._postEffectSSAO.get()!.radius = val;\n }\n }\n /** SSAO intensity */\n get SSAOIntensity() {\n return this._SSAOIntensity;\n }\n set SSAOIntensity(val) {\n this._SSAOIntensity = val;\n if (this._postEffectSSAO.get()) {\n this._postEffectSSAO.get()!.intensity = val;\n }\n }\n /** SSAO depth cutoff */\n get SSAOBlurDepthCutoff() {\n return this._SSAOBlurDepthCutoff;\n }\n set SSAOBlurDepthCutoff(val) {\n this._SSAOBlurDepthCutoff = val;\n if (this._postEffectSSAO.get()) {\n this._postEffectSSAO.get()!.blurDepthCutoff = val;\n }\n }\n /** Whether to perform a depth pass */\n get depthPrePass() {\n return this._depthPrePass;\n }\n set depthPrePass(val) {\n this._depthPrePass = !!val;\n }\n /** Whether to allow command buffer reuse optimization */\n get commandBufferReuse() {\n return this._commandBufferReuse;\n }\n set commandBufferReuse(val) {\n this._commandBufferReuse = !!val;\n }\n /** Whether this camera is adapted to screen settins */\n get adapted() {\n return this._adapted;\n }\n set adapted(val) {\n if (val !== this._adapted) {\n this._adapted = !!val;\n this._adaptedViewport = null;\n this._adaptedRelativeViewport = null;\n this._invalidate(true);\n }\n }\n /** OIT */\n get oit() {\n return this._oit.get();\n }\n set oit(val) {\n this._oit.set(val);\n const inferredMode = this.inferOITMode(val);\n if (inferredMode) {\n this._oitMode = inferredMode;\n }\n }\n /** OIT mode */\n get oitMode() {\n return this._oitMode;\n }\n set oitMode(val: CameraOITMode) {\n const mode = val ?? 'none';\n if (mode !== this._oitMode) {\n this._oitMode = mode;\n this._oit.set(this.createOITForMode(mode));\n }\n }\n /** ABuffer OIT layer budget. */\n get oitABufferLayers() {\n return this._oitABufferLayers;\n }\n set oitABufferLayers(val: number) {\n const layers = Math.max(1, Math.floor(val || 0));\n if (layers !== this._oitABufferLayers) {\n this._oitABufferLayers = layers;\n if (this._oitMode === 'abuffer') {\n this._oit.set(this.createOITForMode('abuffer'));\n }\n }\n }\n /** Clip plane mask */\n get clipMask() {\n return this._clipMask;\n }\n set clipMask(val) {\n this._clipMask = val;\n }\n /** Viewport used for rendering, if null, use full framebuffer size */\n get viewport(): Nullable<Immutable<number[]>> {\n if (this._adapted) {\n if (!this._adaptedViewport) {\n this._adaptedViewport = this.calcAdaptedViewport(this._adaptedViewport);\n }\n return this._adaptedViewport;\n }\n return this._viewport;\n }\n set viewport(rect: Nullable<Immutable<number[]>>) {\n this._viewport = rect?.slice() ?? null;\n }\n /** Scissor rectangle used for rendering, if null, use viewport value */\n get scissor(): Nullable<Immutable<number[]>> {\n return this._adapted ? this.viewport : this._scissor;\n }\n set scissor(rect: Nullable<Immutable<number[]>>) {\n this._scissor = rect?.slice() ?? null;\n }\n get relativeViewport(): Nullable<Immutable<number[]>> {\n if (this._adapted) {\n if (!this._adaptedRelativeViewport) {\n this._adaptedRelativeViewport = this.calcRelativeAdaptedViewport(this._adaptedRelativeViewport);\n }\n return this._adaptedRelativeViewport;\n }\n return this._viewport;\n }\n /**\n * Screen configuration used for adapting the camera viewport\n */\n get screenConfig(): Immutable<ScreenConfig> {\n return this._screenAdapter.config;\n }\n set screenConfig(config: Immutable<ScreenConfig>) {\n this._screenAdapter.config = config;\n }\n /**\n * Screen viewport used for adapting the camera viewport\n */\n get screenViewport(): Nullable<Immutable<number[]>> {\n return this._screenAdapter.viewport;\n }\n set screenViewport(viewport: Nullable<Immutable<number[]>>) {\n this._screenAdapter.viewport = viewport;\n }\n /**\n * Handle input events\n * @param ev - input event object\n * @param type - event type, default to ev.type\n * @returns Boolean value indicates whether the event was handled.\n */\n handleEvent<T extends IBaseEvent<any>>(ev: T, type?: string) {\n let handled = false;\n if (this._controller) {\n if (\n this._capturedButton < 0 &&\n (ev instanceof PointerEvent || ev instanceof WheelEvent) &&\n !this.posInViewport(ev.offsetX, ev.offsetY)\n ) {\n return false;\n }\n type = type ?? ev.type;\n if (type === 'pointerdown') {\n if (this._capturedButton < 0) {\n this._capturedButton = (ev as unknown as IControllerPointerDownEvent).button;\n }\n handled = this._controller.onMouseDown(ev as unknown as IControllerPointerDownEvent);\n } else if (type === 'pointerup') {\n handled = this._controller.onMouseUp(ev as unknown as IControllerPointerUpEvent);\n if (this._capturedButton === (ev as unknown as IControllerPointerUpEvent).button) {\n this._capturedButton = -1;\n }\n } else if (type === 'pointermove') {\n handled = this._controller.onMouseMove(ev as unknown as IControllerPointerMoveEvent);\n } else if (type === 'wheel') {\n handled = this._controller.onMouseWheel(ev as unknown as IControllerWheelEvent);\n } else if (type === 'keydown') {\n handled = this._controller.onKeyDown(ev as unknown as IControllerKeydownEvent);\n } else if (type === 'keyup') {\n handled = this._controller.onKeyUp(ev as unknown as IControllerKeyupEvent);\n }\n if (handled && ev.preventDefault) {\n ev.preventDefault();\n }\n }\n return handled;\n }\n /**\n * Constructs a ray based on the given screen coordinates.\n *\n * @param x - The x-component of the screen coordinates, relative to the top-left corner of the viewport.\n * @param y - The y-component of the screen coordinates, relative to the top-left corner of the viewport.\n * @returns The ray originating from the camera position and passing through the given screen coordinates.\n */\n constructRay(x: number, y: number) {\n const width = this.viewport ? this.viewport[2] : getDevice().getViewport().width;\n const height = this.viewport ? this.viewport[3] : getDevice().getViewport().height;\n const ndcX = (2 * x) / width - 1;\n const ndcY = 1 - (2 * y) / height;\n const nearClip = new Vector4(ndcX, ndcY, -1, 1);\n const farClip = new Vector4(ndcX, ndcY, 1, 1);\n const nearWorld = this.invViewProjectionMatrix.transform(nearClip);\n const farWorld = this.invViewProjectionMatrix.transform(farClip);\n if (this.isPerspective()) {\n nearWorld.scaleBy(1 / nearWorld.w);\n farWorld.scaleBy(1 / farWorld.w);\n }\n const vEye = this.isPerspective() ? this.getWorldPosition() : nearWorld.xyz();\n const vDir = Vector3.sub(farWorld.xyz(), vEye).inplaceNormalize();\n return new Ray(vEye, vDir);\n }\n /**\n * Place the camera by specifying the camera position and the target point\n * @param eye - The camera position\n * @param target - The target point to look at\n * @param up - The up vector\n * @returns self\n */\n lookAt(eye: Vector3, target: Vector3, up: Vector3) {\n return this.setLocalTransform(Matrix4x4.lookAt(eye, target, up));\n }\n /**\n * Place the camera to look at a given cube face at a given camera position\n * @param face - The cube face to look at\n * @param position - The camera position\n * @returns self\n */\n lookAtCubeFace(face: CubeFace, position?: Vector3) {\n return this.setLocalTransform(Matrix4x4.lookAtCubeFace(face, position ?? this.position));\n }\n /**\n * Setup a perspective projection matrix for the camera\n * @param fovY - The vertical field of view in radians.\n * @param aspect - The aspect ratio\n * @param zNear - The near clip plane\n * @param zFar - The far clip plane\n * @returns self\n */\n setPerspective(fovY: number, aspect: number, zNear: number, zFar: number) {\n this._projMatrix.perspective(fovY, aspect, zNear, zFar);\n Matrix4x4.invert(this._projMatrix, this._invProjMatrix);\n this._invalidate(true);\n return this;\n }\n /**\n * Setup a orthogonal projection matrix for the camera\n * @param left - Left bound of the frustum\n * @param right - Right bound of the frustum\n * @param bottom - Bottom bound of the frustum\n * @param top - Top bound of the frustum\n * @param near - Near bound of the frustum.\n * @param far - Far bound of the frustum.\n * @returns self\n */\n setOrtho(left: number, right: number, bottom: number, top: number, near: number, far: number) {\n this._projMatrix.ortho(left, right, bottom, top, near, far);\n Matrix4x4.invert(this._projMatrix, this._invProjMatrix);\n this._invalidate(true);\n return this;\n }\n /**\n * Setup a projection matrix for the camera\n * @param matrix - The projection matrix\n */\n setProjectionMatrix(matrix: Matrix4x4) {\n if (matrix && matrix !== this._projMatrix) {\n this._projMatrix = matrix;\n Matrix4x4.invert(this._projMatrix, this._invProjMatrix);\n this._invalidate(true);\n }\n }\n /**\n * Gets the projection matrix of the camera\n * @returns The projection matrix\n */\n getProjectionMatrix(): Immutable<Matrix4x4> {\n if (this.dirtyCheck()) {\n this._compute();\n }\n return this._projMatrix;\n }\n /**\n * Gets the inverse projection matrix of the camera\n * @returns The projection matrix\n */\n getInvProjectionMatrix(): Immutable<Matrix4x4> {\n if (this.dirtyCheck()) {\n this._compute();\n }\n return this._invProjMatrix;\n }\n getRotationMatrix() {\n const rotationMatrix = new Matrix4x4();\n this.worldMatrix.decompose(null, rotationMatrix, null);\n const xAxis = rotationMatrix.getRow(0).xyz().scaleBy(-1);\n const yAxis = rotationMatrix.getRow(1).xyz();\n const zAxis = rotationMatrix.getRow(2).xyz().scaleBy(-1);\n rotationMatrix.setRow(0, new Vector4(xAxis.x, xAxis.y, xAxis.z, 0));\n rotationMatrix.setRow(1, new Vector4(yAxis.x, yAxis.y, yAxis.z, 0));\n rotationMatrix.setRow(2, new Vector4(zAxis.x, zAxis.y, zAxis.z, 0));\n return rotationMatrix;\n }\n /**\n * View matrix of the camera\n *\n * @remarks\n * Camera's view matrix will transform a point from the world space to the camera space\n */\n get viewMatrix(): Immutable<Matrix4x4> {\n if (this.dirtyCheck()) {\n this._compute();\n }\n return this._viewMatrix;\n }\n get viewProjectionMatrix(): Immutable<Matrix4x4> {\n if (this.dirtyCheck()) {\n this._compute();\n }\n return this._viewProjMatrix;\n }\n /**\n * The inverse-view-projection matrix of the camera\n *\n * @remarks\n * The inverse-view-projection matrix transforms a point from the clip space to the camera space\n */\n get invViewProjectionMatrix(): Immutable<Matrix4x4> {\n if (this.dirtyCheck()) {\n this._compute();\n }\n return this._invViewProjMatrix;\n }\n /** Gets the frustum of the camera */\n get frustum(): Immutable<Frustum> {\n if (this.dirtyCheck()) {\n this._compute();\n }\n return this._frustum!;\n }\n get frustumViewSpace(): Immutable<Frustum> {\n if (this.dirtyCheck()) {\n this._compute();\n }\n if (!this._frustumV) {\n this._frustumV = new Frustum(this._projMatrix);\n }\n return this._frustumV!;\n }\n /** The camera controller */\n get controller() {\n return this._controller;\n }\n set controller(controller) {\n this.setController(controller);\n }\n /** {@inheritDoc SceneNode.isCamera} */\n isCamera(): this is Camera {\n return true;\n }\n /** Gets the near clip plane of the camera */\n getNearPlane() {\n return this.getProjectionMatrix().getNearPlane();\n }\n /** Gets the far clip plane of the camera */\n getFarPlane() {\n return this.getProjectionMatrix().getFarPlane();\n }\n /** Gets the vertical field of view of the camera */\n getFOV() {\n return this.getProjectionMatrix().getFov();\n }\n /** Gets the tangent of half of the vertical field of view */\n getTanHalfFovy() {\n return this.getProjectionMatrix().getTanHalfFov();\n }\n /** Gets the aspect ratio */\n getAspect() {\n return this.getProjectionMatrix().getAspect();\n }\n /** Returns true if the camera is perspective */\n isPerspective() {\n return this.getProjectionMatrix().isPerspective();\n }\n /** Returns true if the camera is orthographic */\n isOrtho() {\n return this.getProjectionMatrix().isOrtho();\n }\n /**\n * Gets the camera history data which is used in temporal reprojection\n * @returns Camera history data\n */\n getHistoryData() {\n let data = Camera._historyData.get(this);\n if (!data) {\n data = {\n prevColorTex: null,\n prevMotionVectorTex: null,\n prevSSRReflectTex: null,\n prevSSRMotionVectorTex: null\n };\n Camera._historyData.set(this, data);\n }\n return data;\n }\n /**\n * Clears the camera history data which is used in temporal reprojection\n */\n clearHistoryData() {\n const data = Camera._historyData.get(this);\n if (data) {\n if (data.prevColorTex) {\n getDevice().pool.releaseTexture(data.prevColorTex);\n }\n if (data.prevMotionVectorTex) {\n getDevice().pool.releaseTexture(data.prevMotionVectorTex);\n }\n if (data.prevSSRReflectTex) {\n getDevice().pool.releaseTexture(data.prevSSRReflectTex);\n }\n if (data.prevSSRMotionVectorTex) {\n getDevice().pool.releaseTexture(data.prevSSRMotionVectorTex);\n }\n Camera._historyData.delete(this);\n }\n this._prevVPMatrix = null;\n this._prevPosition = null;\n this._prevJitteredVPMatrix = null;\n this._prevJitterValue = null;\n }\n /** @internal */\n private updatePostProcessing() {\n this._compositor.clear();\n if (!this._postEffectSSR.get()) {\n const ssr = new SSR();\n ssr.enabled = false;\n this._postEffectSSR.set(ssr);\n this._compositor.appendPostEffect(ssr);\n }\n if (!this._postEffectSSS.get()) {\n const sss = new SSS();\n sss.enabled = false;\n this._postEffectSSS.set(sss);\n this._compositor.appendPostEffect(sss);\n }\n if (!this._postEffectSSAO.get()) {\n const ssao = new SAO();\n ssao.enabled = false;\n ssao.scale = this._SSAOScale;\n ssao.bias = this._SSAOBias;\n ssao.radius = this._SSAORadius;\n ssao.intensity = this._SSAOIntensity;\n ssao.blurDepthCutoff = this._SSAOBlurDepthCutoff;\n this._postEffectSSAO.set(ssao);\n this._compositor.appendPostEffect(ssao);\n }\n if (!this._postEffectTAA.get()) {\n const taa = new TAA();\n taa.enabled = false;\n this._postEffectTAA.set(taa);\n this._compositor.appendPostEffect(taa);\n }\n if (!this._postEffectMotionBlur.get()) {\n const motionBlur = new MotionBlur();\n motionBlur.enabled = false;\n motionBlur.strength = this._motionBlurStrength;\n this._postEffectMotionBlur.set(motionBlur);\n this._compositor.appendPostEffect(motionBlur);\n }\n if (!this._postEffectTonemap.get()) {\n const tonemap = new Tonemap();\n tonemap.enabled = true;\n tonemap.exposure = this._tonemapExposure;\n this._postEffectTonemap.set(tonemap);\n this._compositor.appendPostEffect(tonemap);\n }\n if (!this._postEffectColorAdjust.get()) {\n const colorAdjust = new ColorAdjust();\n colorAdjust.enabled = false;\n colorAdjust.saturation = this._colorAdjustSaturation;\n colorAdjust.contrast = this._colorAdjustContrast;\n colorAdjust.hue = this._colorAdjustHue;\n colorAdjust.sharpen = this._colorAdjustSharpen;\n this._postEffectColorAdjust.set(colorAdjust);\n this._compositor.appendPostEffect(colorAdjust);\n }\n if (!this._postEffectFXAA.get()) {\n const fxaa = new FXAA();\n fxaa.enabled = false;\n this._postEffectFXAA.set(fxaa);\n this._compositor.appendPostEffect(fxaa);\n }\n if (!this._postEffectBloom.get()) {\n const bloom = new Bloom();\n bloom.enabled = false;\n bloom.maxDownsampleLevel = this._bloomMaxDownsampleLevels;\n bloom.downsampleLimit = this._bloomDownsampleLimit;\n bloom.threshold = this._bloomThreshold;\n bloom.thresholdKnee = this._bloomThresholdKnee;\n bloom.intensity = this._bloomIntensity;\n this._postEffectBloom.set(bloom);\n this._compositor.appendPostEffect(bloom);\n }\n }\n\n private static resolveSSSQualityPreset(val: SSSQualityPreset) {\n switch (val) {\n case 'quality':\n case 'balanced':\n case 'performance':\n return val;\n default:\n return 'balanced';\n }\n }\n\n private updateSSSResolvedSettings() {\n const source = SSS_QUALITY_PRESET_SETTINGS[this._sssQualityPreset];\n this._sssResolvedSettings.halfRes = source.halfRes;\n this._sssResolvedSettings.blurKernelSize = source.blurKernelSize;\n this._sssResolvedSettings.blurStdDev = source.blurStdDev;\n this._sssResolvedSettings.blurDepthCutoff = source.blurDepthCutoff;\n this._sssResolvedSettings.normalCutoff = source.normalCutoff;\n }\n /**\n * Renders a scene\n * @param scene - The scene to be rendered\n * @param compositor - Compositor instance that will be used to apply postprocess effects\n */\n render(scene: Scene) {\n const device = getDevice();\n //this.updatePostProcessing(device);\n const useMotionVector =\n (this.TAA || this.motionBlur || (this.SSR && this.ssrTemporal)) && device.type !== 'webgl';\n const useTAA = useMotionVector && this.TAA;\n scene.dispatchEvent('startrender', scene, this, this._compositor);\n if (useMotionVector) {\n const width = device.getDrawingBufferWidth();\n const height = device.getDrawingBufferHeight();\n if (useTAA) {\n const halton = Camera._halton23[device.frameInfo.frameCounter % Camera._halton23.length];\n this._jitterValue.setXY((halton[0] * 2) / width, (halton[1] * 2) / height);\n } else {\n this._jitterValue.setXY(0, 0);\n }\n this._jitteredVPMatrix.set(this.getProjectionMatrix());\n this._jitteredVPMatrix[8] += this._jitterValue.x;\n this._jitteredVPMatrix[9] += this._jitterValue.y;\n this._jitteredVPMatrix.multiplyRight(this.viewMatrix);\n Matrix4x4.invert(this._jitteredVPMatrix, this._jitteredInvVPMatrix);\n if (!this._prevJitteredVPMatrix) {\n this._prevJitteredVPMatrix = new Matrix4x4();\n this._prevJitteredVPMatrix.set(this._jitteredVPMatrix);\n this._prevJitterValue = new Vector2(this._jitterValue);\n }\n if (!this._prevVPMatrix) {\n this._prevVPMatrix = new Matrix4x4();\n this._prevVPMatrix.set(this.viewProjectionMatrix);\n this._prevPosition = this.getWorldPosition();\n }\n } else {\n this._jitterValue.setXY(0, 0);\n this._prevVPMatrix = null;\n this._prevPosition = null;\n this._prevJitteredVPMatrix = null;\n this._prevJitterValue = null;\n this._jitteredInvVPMatrix.set(this.invViewProjectionMatrix);\n }\n device.pushDeviceStates();\n device.reverseVertexWindingOrder(false);\n scene.getRenderer().renderScene(scene, this);\n device.popDeviceStates();\n if (useMotionVector) {\n this._prevJitteredVPMatrix!.set(this._jitteredVPMatrix);\n this._prevJitterValue!.set(this._jitterValue);\n this._prevVPMatrix!.set(this.viewProjectionMatrix);\n this._prevPosition = this.getWorldPosition();\n }\n scene.dispatchEvent('endrender', scene, this, this._compositor);\n }\n async pickAsync(posX: number, posY: number) {\n this._pickPosX = posX;\n this._pickPosY = posY;\n if (!this._pickResultPromise) {\n this._pickResultPromise = new Promise<Nullable<PickResult>>((resolve) => {\n this._pickResultResolve = (result: Nullable<PickResult>) => {\n resolve(result);\n this._pickResultPromise = null;\n this._pickResultResolve = null;\n };\n });\n }\n return this._pickResultPromise;\n }\n /** @internal */\n getPickResultResolveFunc() {\n return this._pickResultResolve;\n }\n /** @internal */\n getPickPosX() {\n return this._pickPosX;\n }\n /** @internal */\n getPickPosY() {\n return this._pickPosY;\n }\n /**\n * Updates the controller state\n */\n updateController() {\n this._controller?.update();\n }\n /**\n * Reset the controller\n */\n resetController() {\n this._controller?.reset();\n }\n /** @internal */\n get jitteredVPMatrix(): Immutable<Matrix4x4> {\n return this._jitteredVPMatrix;\n }\n /** @internal */\n get jitteredInvVPMatrix(): Immutable<Matrix4x4> {\n return this._jitteredInvVPMatrix;\n }\n /** @internal */\n get jitterValue(): Immutable<Vector2> {\n return this._jitterValue;\n }\n /** @internal */\n get prevJitteredVPMatrix(): Nullable<Immutable<Matrix4x4>> {\n return this._prevJitteredVPMatrix;\n }\n /** @internal */\n get prevJitterValue(): Nullable<Immutable<Vector2>> {\n return this._prevJitterValue;\n }\n /** @internal */\n get prevVPMatrix(): Nullable<Immutable<Matrix4x4>> {\n return this._prevVPMatrix;\n }\n /** @internal */\n get prevPosition(): Nullable<Immutable<Vector3>> {\n return this._prevPosition;\n }\n /**\n * Gets the camera history resource manager for temporal effects.\n */\n getHistoryResourceManager(): Nullable<HistoryResourceManager> {\n return Camera._historyResourceManager.get(this) ?? null;\n }\n /**\n * Sets the camera history resource manager for temporal effects.\n *\n * @internal\n */\n setHistoryResourceManager(manager: HistoryResourceManager): void {\n Camera._historyResourceManager.set(this, manager);\n }\n /** @internal */\n private setController(controller: Nullable<BaseCameraController>) {\n if (this._controller !== controller) {\n if (controller && controller._getCamera() && controller._getCamera() !== this) {\n throw new Error(\n 'Camera.setController failed: one camera controller object cannot be assigned to multiple camera'\n );\n }\n this._controller?._setCamera(null);\n this._controller = controller;\n this._controller?._setCamera(this);\n }\n return this;\n }\n /** @internal */\n protected _invalidate(projectMatrixChanged: boolean) {\n this._dirty = true;\n if (projectMatrixChanged) {\n this._frustumV = null;\n }\n }\n /** @internal */\n protected _compute() {\n this._computeProj();\n Matrix4x4.invertAffine(this.worldMatrix, this._viewMatrix);\n Matrix4x4.multiply(this._projMatrix, this._viewMatrix, this._viewProjMatrix);\n Matrix4x4.invert(this._viewProjMatrix, this._invViewProjMatrix);\n if (!this._frustum) {\n this._frustum = new Frustum(this._viewProjMatrix);\n } else {\n this._frustum.initWithMatrix(this._viewProjMatrix);\n }\n }\n /** @internal */\n protected _computeProj() {}\n /** @internal */\n protected _onTransformChanged(invalidateLocal: boolean) {\n super._onTransformChanged(invalidateLocal);\n this._invalidate(false);\n }\n /** {@inheritdoc SceneNode.onDispose} */\n protected onDispose() {\n super.onDispose();\n this.setController(null);\n this.clearHistoryData();\n this._postEffectBloom.dispose();\n this._postEffectFXAA.dispose();\n this._postEffectMotionBlur.dispose();\n this._postEffectSSAO.dispose();\n this._postEffectSSS.dispose();\n this._postEffectSSR.dispose();\n this._postEffectTAA.dispose();\n this._postEffectTonemap.dispose();\n this._postEffectColorAdjust.dispose();\n this._oit.dispose();\n }\n /** @internal */\n private createOITForMode(mode: CameraOITMode): OIT | null {\n if (mode === 'abuffer') {\n return new ABufferOIT(this._oitABufferLayers);\n }\n if (mode === 'weighted') {\n return new WeightedBlendedOIT();\n }\n return null;\n }\n /** @internal */\n private inferOITMode(oit: Nullable<OIT>): Nullable<CameraOITMode> {\n if (!oit) {\n return 'none';\n }\n const type = oit.getType();\n if (type === ABufferOIT.type) {\n return 'abuffer';\n }\n if (type === WeightedBlendedOIT.type) {\n return 'weighted';\n }\n return null;\n }\n /** @internal */\n private posInViewport(x: number, y: number) {\n let rect = this._interactionRect;\n if (!rect && this.viewport) {\n const cvs = getDevice().canvas;\n const vp = this.viewport;\n const vp_x = vp[0];\n const vp_y = cvs.clientHeight - vp[1] - vp[3];\n const vp_w = vp[2];\n const vp_h = vp[3];\n rect = [vp_x, vp_y, vp_w, vp_h];\n }\n if (!rect) {\n return true;\n }\n x -= rect[0];\n y -= rect[1];\n return x >= 0 && x < rect[2] && y >= 0 && y < rect[3];\n }\n /** @internal */\n private dirtyCheck() {\n if (this._adapted) {\n const version = this._screenAdapter.version;\n if (this._adaptedVersion !== version) {\n this._dirty = true;\n this._adaptedViewport = null;\n this._adaptedRelativeViewport = null;\n this._adaptedVersion = version;\n }\n }\n if (this._dirty) {\n this._dirty = false;\n return true;\n }\n return false;\n }\n /** @internal */\n private calcAdaptedViewport(outViewport?: Nullable<number[]>): number[] {\n outViewport = outViewport ?? [];\n const transform = this._screenAdapter.transform;\n outViewport[0] = transform.croppedViewport.x;\n outViewport[1] = transform.croppedViewport.y;\n outViewport[2] = transform.croppedViewport.width;\n outViewport[3] = transform.croppedViewport.height;\n return outViewport;\n }\n /** @internal */\n private calcRelativeAdaptedViewport(outViewport?: Nullable<number[]>): number[] {\n outViewport = outViewport ?? [];\n const transform = this._screenAdapter.transform;\n outViewport[0] = transform.croppedViewport.x - transform.viewportX;\n outViewport[1] = transform.croppedViewport.y - transform.viewportY;\n outViewport[2] = transform.croppedViewport.width;\n outViewport[3] = transform.croppedViewport.height;\n return outViewport;\n }\n /** @internal */\n protected calcAdaptedOrthographicProjection(\n nearClip: number,\n farClip: number,\n outMatrix?: Matrix4x4\n ): Matrix4x4 {\n const matrix = outMatrix ?? new Matrix4x4();\n const transform = this._screenAdapter.transform;\n const scaleX = this._screenAdapter.config.designWidth / transform.viewportWidth;\n const scaleY = this._screenAdapter.config.designHeight / transform.viewportHeight;\n const left = -transform.croppedViewport.width * scaleX * 0.5;\n const right = -left;\n const bottom = transform.croppedViewport.height * scaleY * 0.5;\n const top = -bottom;\n return matrix.ortho(left, right, bottom, top, nearClip, farClip);\n }\n /** @internal */\n protected calcAdaptedPerspectiveProjection(\n fov: number,\n nearClip: number,\n farClip: number,\n outMatrix?: Matrix4x4\n ): Matrix4x4 {\n const matrix = outMatrix ?? new Matrix4x4();\n const transform = this._screenAdapter.transform;\n const aspect = transform.viewportHeight !== 0 ? transform.viewportWidth / transform.viewportHeight : 1;\n const h = nearClip * Math.tan(fov * 0.5);\n const w = h * aspect;\n let left = -w + (2 * w * (transform.croppedViewport.x - transform.viewportX)) / transform.viewportWidth;\n let right =\n w -\n (2 *\n w *\n (transform.viewportX +\n transform.viewportWidth -\n transform.croppedViewport.x -\n transform.croppedViewport.width)) /\n transform.viewportWidth;\n let bottom =\n -h + (2 * w * (transform.croppedViewport.y - transform.viewportY)) / transform.viewportHeight;\n let top =\n h -\n (2 *\n h *\n (transform.viewportY +\n transform.viewportHeight -\n transform.croppedViewport.y -\n transform.croppedViewport.height)) /\n transform.viewportHeight;\n return matrix.frustum(left, right, bottom, top, nearClip, farClip);\n }\n}\n"],"names":["SSS_DEFAULT_SETTINGS","blurScale","strength","transmissionStrength","transmissionPower","multiScatter","SSS_QUALITY_PRESET_SETTINGS","quality","halfRes","blurKernelSize","blurStdDev","blurDepthCutoff","normalCutoff","balanced","performance","Camera","SceneNode","_halton23","halton23","_historyData","WeakMap","_historyResourceManager","scene","projectionMatrix","_projMatrix","Matrix4x4","identity","_invProjMatrix","invert","_viewMatrix","_viewProjMatrix","_invViewProjMatrix","_clipPlane","_clearColor","Vector4","_clearDepth","_clearStencil","_dirty","_controller","_viewport","_adaptedViewport","_adaptedRelativeViewport","_adaptedVersion","_scissor","_clipMask","_frustum","_frustumV","_oit","DRef","_oitMode","_oitABufferLayers","_depthPrePass","_renderPath","_screenAdapter","ScreenAdapter","_adapted","_HiZ","_HDR","_toneMap","_postEffectTonemap","_tonemapExposure","_motionBlur","_postEffectMotionBlur","_motionBlurStrength","_bloom","_postEffectBloom","_bloomMaxDownsampleLevels","_bloomDownsampleLimit","_bloomThreshold","_bloomThresholdKnee","_bloomIntensity","_colorAdjustEnabled","_postEffectColorAdjust","_colorAdjustSaturation","_colorAdjustContrast","_colorAdjustHue","_colorAdjustSharpen","_FXAA","_postEffectFXAA","_TAA","_postEffectTAA","_TAADebug","_shadowDebugCascades","_SSR","_postEffectSSR","_ssrParams","_ssrMaxRoughness","_ssrRoughnessFactor","_ssrStride","_ssrCalcThickness","_ssrBlurriness","_ssrBlurDepthCutoff","_ssrBlurKernelSize","_ssrBlurStdDev","_ssrTemporal","_ssrTemporalWeight","_SSS","_postEffectSSS","_sssBlurScale","_sssQualityPreset","_sssStrength","_sssTransmissionStrength","_sssTransmissionPower","_sssMultiScatter","defaultSSSQualityPreset","_sssResolvedSettings","updateSSSResolvedSettings","_sssDebugView","_SSAO","_postEffectSSAO","_SSAOScale","_SSAOBias","_SSAOIntensity","_SSAORadius","_SSAOBlurDepthCutoff","_pickResult","_commandBufferReuse","_jitteredVPMatrix","_jitteredInvVPMatrix","_jitterValue","Vector2","_prevVPMatrix","_prevPosition","_prevJitteredVPMatrix","_prevJitterValue","_pickResultPromise","_pickResultResolve","_pickPosX","_pickPosY","_compositor","Compositor","_capturedButton","_interactionRect","updatePostProcessing","mainCamera","compositor","interactionRect","rect","clearColor","v","clone","clearDepth","clearStencil","HiZ","val","renderPath","_val","HDR","toneMap","get","enabled","motionBlur","motionBlurStrength","bloom","bloomMaxDownsampleLevels","maxDownsampleLevel","bloomDownsampleLimit","downsampleLimit","bloomThreshold","threshold","bloomThresholdKnee","thresholdKnee","bloomIntensity","intensity","colorAdjust","colorAdjustSaturation","saturation","colorAdjustContrast","contrast","colorAdjustHue","hue","colorAdjustSharpen","sharpen","FXAA","toneMapExposure","exposure","TAA","TAADebug","shadowDebugCascades","SSR","ssrMaxRoughness","ssrRoughnessFactor","ssrStride","ssrMaxDistance","x","ssrIterations","y","ssrThickness","z","ssrCalcThickness","ssrBlurScale","ssrBlurDepthCutoff","ssrBlurKernelSize","ssrBlurStdDev","ssrTemporal","ssrTemporalWeight","Math","max","min","SSS","sssBlurScale","sssQualityPreset","next","resolveSSSQualityPreset","sssStrength","sssTransmissionStrength","sssTransmissionPower","sssMultiScatter","sssResolvedSettings","sssDebugView","ssrParams","SSAO","SSAOScale","scale","SSAOBias","bias","SSAORadius","radius","SSAOIntensity","SSAOBlurDepthCutoff","depthPrePass","commandBufferReuse","adapted","_invalidate","oit","set","inferredMode","inferOITMode","oitMode","mode","createOITForMode","oitABufferLayers","layers","floor","clipMask","viewport","calcAdaptedViewport","slice","scissor","relativeViewport","calcRelativeAdaptedViewport","screenConfig","config","screenViewport","handleEvent","ev","type","handled","PointerEvent","WheelEvent","posInViewport","offsetX","offsetY","button","onMouseDown","onMouseUp","onMouseMove","onMouseWheel","onKeyDown","onKeyUp","preventDefault","constructRay","width","getDevice","getViewport","height","ndcX","ndcY","nearClip","farClip","nearWorld","invViewProjectionMatrix","transform","farWorld","isPerspective","scaleBy","w","vEye","getWorldPosition","xyz","vDir","Vector3","sub","inplaceNormalize","Ray","lookAt","eye","target","up","setLocalTransform","lookAtCubeFace","face","position","setPerspective","fovY","aspect","zNear","zFar","perspective","setOrtho","left","right","bottom","top","near","far","ortho","setProjectionMatrix","matrix","getProjectionMatrix","dirtyCheck","_compute","getInvProjectionMatrix","getRotationMatrix","rotationMatrix","worldMatrix","decompose","xAxis","getRow","yAxis","zAxis","setRow","viewMatrix","viewProjectionMatrix","frustum","frustumViewSpace","Frustum","controller","setController","isCamera","getNearPlane","getFarPlane","getFOV","getFov","getTanHalfFovy","getTanHalfFov","getAspect","isOrtho","getHistoryData","data","prevColorTex","prevMotionVectorTex","prevSSRReflectTex","prevSSRMotionVectorTex","clearHistoryData","pool","releaseTexture","delete","clear","ssr","appendPostEffect","sss","ssao","SAO","taa","MotionBlur","tonemap","Tonemap","ColorAdjust","fxaa","Bloom","source","render","device","useMotionVector","useTAA","dispatchEvent","getDrawingBufferWidth","getDrawingBufferHeight","halton","frameInfo","frameCounter","length","setXY","multiplyRight","pushDeviceStates","reverseVertexWindingOrder","getRenderer","renderScene","popDeviceStates","pickAsync","posX","posY","Promise","resolve","result","getPickResultResolveFunc","getPickPosX","getPickPosY","updateController","update","resetController","reset","jitteredVPMatrix","jitteredInvVPMatrix","jitterValue","prevJitteredVPMatrix","prevJitterValue","prevVPMatrix","prevPosition","getHistoryResourceManager","setHistoryResourceManager","manager","_getCamera","Error","_setCamera","projectMatrixChanged","_computeProj","invertAffine","multiply","initWithMatrix","_onTransformChanged","invalidateLocal","onDispose","dispose","ABufferOIT","WeightedBlendedOIT","getType","cvs","canvas","vp","vp_x","vp_y","clientHeight","vp_w","vp_h","version","outViewport","croppedViewport","viewportX","viewportY","outMatrix","scaleX","designWidth","viewportWidth","scaleY","designHeight","viewportHeight","calcAdaptedPerspectiveProjection","fov","h","tan"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"camera.js","sources":["../../src/camera/camera.ts"],"sourcesContent":["import type { CubeFace, Immutable, Nullable, Plane } from '@zephyr3d/base';\r\nimport { DRef, Vector2, Matrix4x4, Frustum, Vector4, Vector3, Ray, halton23 } from '@zephyr3d/base';\r\nimport { SceneNode } from '../scene/scene_node';\r\nimport type { Drawable, PickTarget } from '../render/drawable';\r\nimport type { BaseTexture } from '@zephyr3d/device';\r\nimport { Compositor } from '../posteffect/compositor';\r\nimport type { Scene } from '../scene/scene';\r\nimport type {\r\n BaseCameraController,\r\n IBaseEvent,\r\n IControllerKeydownEvent,\r\n IControllerKeyupEvent,\r\n IControllerPointerDownEvent,\r\n IControllerPointerMoveEvent,\r\n IControllerPointerUpEvent,\r\n IControllerWheelEvent\r\n} from './base';\r\nimport type { OIT } from '../render/oit';\r\nimport { TAA } from '../posteffect/taa';\r\nimport { SSR } from '../posteffect/ssr';\r\nimport { SSS } from '../posteffect/sss';\r\nimport { Tonemap } from '../posteffect/tonemap';\r\nimport { FXAA } from '../posteffect/fxaa';\r\nimport { Bloom } from '../posteffect/bloom';\r\nimport { SAO } from '../posteffect/sao';\r\nimport { MotionBlur } from '../posteffect/motionblur';\r\nimport { ColorAdjust } from '../posteffect/coloradjust';\r\nimport { getDevice } from '../app/api';\r\nimport type { ScreenConfig } from '../app/screen';\r\nimport { ScreenAdapter } from '../app/screen';\r\nimport { ABufferOIT } from '../render/abuffer_oit';\r\nimport { WeightedBlendedOIT } from '../render/weightedblended_oit';\r\nimport type { HistoryResourceManager } from '../render';\r\n\r\n/**\r\n * Result of a camera picking operation.\r\n *\r\n * Used by GPU/CPU picking flows to report what was intersected.\r\n *\r\n * @public\r\n */\r\nexport type PickResult = {\r\n /** Distance from ray origin to intersection point (world units). */\r\n distance: number;\r\n /** Intersection point in world space. */\r\n intersectedPoint: Vector3;\r\n /** The intersected drawable, if known. */\r\n drawable: Drawable;\r\n /** Logical pick target information. */\r\n target: PickTarget;\r\n};\r\n\r\n/**\r\n * Temporal history resources used by reprojection (TAA, motion blur).\r\n *\r\n * @public\r\n */\r\nexport type CameraHistoryData = {\r\n prevColorTex: Nullable<BaseTexture>;\r\n prevMotionVectorTex: Nullable<BaseTexture>;\r\n prevSSRReflectTex: Nullable<BaseTexture>;\r\n prevSSRMotionVectorTex: Nullable<BaseTexture>;\r\n};\r\n\r\n/**\r\n * Camera render path mode.\r\n * @public\r\n */\r\nexport type RenderPath = 'forward';\r\n/**\r\n * Camera Order-Independent Transparency mode.\r\n * @public\r\n */\r\nexport type CameraOITMode = 'none' | 'weighted' | 'abuffer';\r\n/**\r\n * Subsurface Scattering debug visualization modes (implementation-defined).\r\n * @public\r\n */\r\nexport type SSSDebugView =\r\n | 'none'\r\n | 'scatter_mask'\r\n | 'scatter_softness'\r\n | 'scatter_radius'\r\n | 'scatter_falloff'\r\n | 'profile_energy'\r\n | 'profile_transmission'\r\n | 'profile_boundary'\r\n | 'diffuse'\r\n | 'blur'\r\n | 'screen_thinness'\r\n | 'thin_transmission_mask'\r\n | 'thin_lighting'\r\n | 'transmission_shadow';\r\n/**\r\n * Subsurface Scattering quality presets that resolve multiple internal settings for convenience.\r\n * @public\r\n */\r\nexport type SSSQualityPreset = 'quality' | 'balanced' | 'performance';\r\n/**\r\n * Resolved Subsurface Scattering settings after applying the quality preset. These are the actual settings used by the SSS post effect.\r\n * @public\r\n */\r\nexport type SSSResolvedSettings = {\r\n halfRes: boolean;\r\n blurKernelSize: number;\r\n blurStdDev: number;\r\n blurDepthCutoff: number;\r\n normalCutoff: number;\r\n};\r\n\r\ntype SSSDefaultSettings = {\r\n blurScale: number;\r\n strength: number;\r\n transmissionStrength: number;\r\n transmissionPower: number;\r\n multiScatter: number;\r\n};\r\n\r\nconst SSS_DEFAULT_SETTINGS: SSSDefaultSettings = {\r\n blurScale: 11,\r\n strength: 0.65,\r\n transmissionStrength: 0.18,\r\n transmissionPower: 2.1,\r\n multiScatter: 0.08\r\n};\r\n\r\nconst SSS_QUALITY_PRESET_SETTINGS: Record<SSSQualityPreset, SSSResolvedSettings> = {\r\n quality: {\r\n halfRes: false,\r\n blurKernelSize: 11,\r\n blurStdDev: 3.5,\r\n blurDepthCutoff: 0.24,\r\n normalCutoff: 0.82\r\n },\r\n balanced: {\r\n halfRes: false,\r\n blurKernelSize: 9,\r\n blurStdDev: 3,\r\n blurDepthCutoff: 0.26,\r\n normalCutoff: 0.78\r\n },\r\n performance: {\r\n halfRes: true,\r\n blurKernelSize: 7,\r\n blurStdDev: 2.4,\r\n blurDepthCutoff: 0.32,\r\n normalCutoff: 0.72\r\n }\r\n};\r\n\r\n/**\r\n * A renderable camera node that manages view/projection math, frusta,\r\n * input control, picking, and a post-processing chain via a compositor.\r\n *\r\n * Key features:\r\n * - Maintains projection, view, VP, and inverse VP matrices and lazily recomputes them when invalidated.\r\n * - Provides world- and view-space frusta for culling and clipping.\r\n * - Supports perspective and orthographic projections.\r\n * - Integrates with post effects (Tonemap, FXAA, TAA, Bloom, SSR, SSS, SSAO, Motion Blur) through an internal `Compositor`.\r\n * - Handles temporal jitter and history state when TAA or motion blur are enabled.\r\n * - Emits picking rays from screen coordinates and supports async GPU picking.\r\n * - Optional controller integration for user input handling.\r\n *\r\n * Performance notes:\r\n * - Matrices/frusta are computed on demand and cached until invalidation.\r\n * - Temporal jitter and history are set up only when required by enabled features and device support.\r\n *\r\n * @public\r\n */\r\nexport class Camera extends SceneNode {\r\n /** @internal Halton 2-3 sequence used for TAA jittering. */\r\n private static readonly _halton23 = halton23(16);\r\n /** @internal Per-camera history resources. */\r\n private static readonly _historyData: WeakMap<Camera, CameraHistoryData> = new WeakMap();\r\n /** @internal Per-camera history resource manager. */\r\n private static readonly _historyResourceManager: WeakMap<Camera, HistoryResourceManager> = new WeakMap();\r\n /** @internal Screen adapter for this camera */\r\n protected _screenAdapter: ScreenAdapter;\r\n /** @internal Whether the camera is adapted */\r\n protected _adapted: boolean;\r\n /** @internal Adapted viewport */\r\n protected _adaptedViewport: Nullable<number[]>;\r\n /** @internal Adapted relative viewport */\r\n protected _adaptedRelativeViewport: Nullable<number[]>;\r\n /** @internal RenderTarget version */\r\n protected _adaptedVersion: number;\r\n /** @internal Projection matrix. */\r\n protected _projMatrix: Matrix4x4;\r\n /** @internal Inverse projection matrix. */\r\n protected _invProjMatrix: Matrix4x4;\r\n /** @internal View matrix (world -\\> camera). */\r\n protected _viewMatrix: Matrix4x4;\r\n /** @internal View-projection matrix. */\r\n protected _viewProjMatrix: Matrix4x4;\r\n /** @internal Inverse view-projection matrix. */\r\n protected _invViewProjMatrix: Matrix4x4;\r\n /** @internal Framebuffer clear color, disabled when null. Default is null */\r\n protected _clearColor: Vector4;\r\n /** @internal Framebuffer depth clear value, disabled when null. Default is 1 */\r\n protected _clearDepth: number;\r\n /** @internal Framebuffer stencil clear value, disabled when null. Default is 0 */\r\n protected _clearStencil: number;\r\n /** @internal Optional clip plane in camera space. */\r\n protected _clipPlane: Nullable<Plane>;\r\n /** @internal Camera controller (input). */\r\n protected _controller: Nullable<BaseCameraController>;\r\n /** @internal World-space frustum (from VP). */\r\n protected _frustum: Nullable<Frustum>;\r\n /** @internal View-space frustum (from P). */\r\n protected _frustumV: Nullable<Frustum>;\r\n /** @internal Dirty flag indicating derived matrices/frusta need recompute. */\r\n protected _dirty: boolean;\r\n /** @internal Viewport [x, y, w, h]; null uses full framebuffer. */\r\n protected _viewport: Nullable<number[]>;\r\n /** @internal Scissor rectangle [x, y, w, h]; null uses viewport. */\r\n protected _scissor: Nullable<number[]>;\r\n /** @internal Clip plane mask for custom clipping schemes. */\r\n protected _clipMask: number;\r\n /** @internal Order-Independent Transparency reference. */\r\n protected _oit: DRef<OIT>;\r\n /** @internal OIT algorithm selection mode. */\r\n protected _oitMode: CameraOITMode;\r\n /** @internal ABuffer OIT layer budget. */\r\n protected _oitABufferLayers: number;\r\n /** @internal Whether to perform a depth pre-pass. */\r\n protected _depthPrePass: boolean;\r\n /** @internal Render path selection for scene renderer. */\r\n protected _renderPath: RenderPath;\r\n /** @internal Whether command buffers may be reused for optimization. */\r\n protected _commandBufferReuse: boolean;\r\n /** @internal Hi-Z acceleration enable (primarily for SSR). */\r\n protected _HiZ: boolean;\r\n /** @internal If true, a float point backbuffer will be used. The default value is true */\r\n protected _HDR: boolean;\r\n /** @internal Tonemap enable flag (via post effect). */\r\n protected _toneMap: boolean;\r\n /** @internal Tonemap post effect reference. */\r\n protected _postEffectTonemap: DRef<Tonemap>;\r\n /** @internal Tonemap exposure. */\r\n protected _tonemapExposure: number;\r\n /** @internal Motion blur enable flag (via post effect). */\r\n protected _motionBlur: boolean;\r\n /** @internal Motion blur post effect reference. */\r\n protected _postEffectMotionBlur: DRef<MotionBlur>;\r\n /** @internal Motion blur strength. */\r\n protected _motionBlurStrength: number;\r\n /** @internal Bloom enable flag (via post effect). */\r\n protected _bloom: boolean;\r\n /** @internal Bloom post effect reference. */\r\n protected _postEffectBloom: DRef<Bloom>;\r\n /** @internal Bloom downsample level cap. */\r\n protected _bloomMaxDownsampleLevels: number;\r\n /** @internal Bloom downsample resolution limit. */\r\n protected _bloomDownsampleLimit: number;\r\n /** @internal Bloom threshold. */\r\n protected _bloomThreshold: number;\r\n /** @internal Bloom threshold knee (soft thresholding). */\r\n protected _bloomThresholdKnee: number;\r\n /** @internal Bloom intensity. */\r\n protected _bloomIntensity: number;\r\n /** @internal Color adjustment enable flag (via post effect). */\r\n protected _colorAdjustEnabled: boolean;\r\n /** @internal Color adjustment post effect reference. */\r\n protected _postEffectColorAdjust: DRef<ColorAdjust>;\r\n /** @internal Color adjustment saturation. */\r\n protected _colorAdjustSaturation: number;\r\n /** @internal Color adjustment contrast. */\r\n protected _colorAdjustContrast: number;\r\n /** @internal Color adjustment hue (degrees). */\r\n protected _colorAdjustHue: number;\r\n /** @internal Color adjustment sharpen amount. */\r\n protected _colorAdjustSharpen: number;\r\n\r\n /** @internal FXAA enable flag (via post effect). */\r\n protected _FXAA: boolean;\r\n /** @internal FXAA post effect reference. */\r\n protected _postEffectFXAA: DRef<FXAA>;\r\n\r\n /** @internal TAA enable flag (via post effect). */\r\n protected _TAA: boolean;\r\n /** @internal TAA post effect reference. */\r\n protected _postEffectTAA: DRef<TAA>;\r\n /** @internal TAA debug mode (implementation-defined). */\r\n protected _TAADebug: number;\r\n /** @internal Cascaded shadow debug visualization flag. */\r\n protected _shadowDebugCascades: boolean;\r\n\r\n /** @internal SSR enable flag (via post effect). */\r\n protected _SSR: boolean;\r\n /** @internal SSR post effect reference. */\r\n protected _postEffectSSR: DRef<SSR>;\r\n /** @internal SSR parameter vector: (maxDistance, iterations, thickness, reserved). */\r\n protected _ssrParams: Vector4;\r\n /** @internal SSR roughness cutoff; above this SSR is suppressed. */\r\n protected _ssrMaxRoughness: number;\r\n /** @internal SSR roughness factor scaling. */\r\n protected _ssrRoughnessFactor: number;\r\n /** @internal SSR stride for ray marching. */\r\n protected _ssrStride: number;\r\n /** @internal Whether SSR thickness is computed automatically. */\r\n protected _ssrCalcThickness: boolean;\r\n /** @internal SSR blur scale. */\r\n protected _ssrBlurriness: number;\r\n /** @internal SSR blur depth cutoff. */\r\n protected _ssrBlurDepthCutoff: number;\r\n /** @internal SSR blur kernel size. */\r\n protected _ssrBlurKernelSize: number;\r\n /** @internal SSR Gaussian blur standard deviation. */\r\n protected _ssrBlurStdDev: number;\r\n /** @internal Whether SSR temporal accumulation is enabled. */\r\n protected _ssrTemporal: boolean;\r\n /** @internal SSR temporal blending weight in [0, 1]. */\r\n protected _ssrTemporalWeight: number;\r\n /** @internal SSS enable flag (via post effect). */\r\n protected _SSS: boolean;\r\n /** @internal SSS post effect reference. */\r\n protected _postEffectSSS: DRef<SSS>;\r\n /** @internal SSS blur scale in pixels per authored width unit. */\r\n protected _sssBlurScale: number;\r\n /** @internal High-level preset that resolves SSS blur quality controls. */\r\n protected _sssQualityPreset: SSSQualityPreset;\r\n /** @internal SSS composite strength. */\r\n protected _sssStrength: number;\r\n /** @internal SSS thin-shell transmission strength. */\r\n protected _sssTransmissionStrength: number;\r\n /** @internal SSS thin-shell transmission exponent. */\r\n protected _sssTransmissionPower: number;\r\n /** @internal SSS multi-scatter energy compensation. */\r\n protected _sssMultiScatter: number;\r\n /** @internal Cached runtime SSS settings after applying the quality preset. */\r\n protected _sssResolvedSettings: SSSResolvedSettings;\r\n /** @internal SSS debug visualization mode. */\r\n protected _sssDebugView: SSSDebugView;\r\n /** @internal SSAO enable flag (via post effect). */\r\n protected _SSAO: boolean;\r\n /** @internal SSAO post effect reference. */\r\n protected _postEffectSSAO: DRef<SAO>;\r\n /** @internal SSAO scale (sampling radius multiplier). */\r\n protected _SSAOScale: number;\r\n /** @internal SSAO bias (self-shadowing reduction). */\r\n protected _SSAOBias: number;\r\n /** @internal SSAO sample radius. */\r\n protected _SSAORadius: number;\r\n /** @internal SSAO intensity. */\r\n protected _SSAOIntensity: number;\r\n /** @internal SSAO blur depth cutoff. */\r\n protected _SSAOBlurDepthCutoff: number;\r\n\r\n /** @internal Pending GPU-pick promise (one-shot). */\r\n protected _pickResultPromise: Nullable<Promise<Nullable<PickResult>>>;\r\n /** @internal Resolver for the pending pick promise. */\r\n protected _pickResultResolve: Nullable<(result: Nullable<PickResult>) => void>;\r\n /** @internal Last pick X position (viewport-relative). */\r\n protected _pickPosX: number;\r\n /** @internal Last pick Y position (viewport-relative). */\r\n protected _pickPosY: number;\r\n /** @internal Last resolved pick result (optional cache). */\r\n protected _pickResult: Nullable<PickResult>;\r\n\r\n /** @internal Current jitter value in clip space (x, y). */\r\n protected _jitterValue: Vector2;\r\n /** @internal Previous frame’s jitter value. */\r\n protected _prevJitterValue: Nullable<Vector2>;\r\n /** @internal Current jittered VP matrix. */\r\n protected _jitteredVPMatrix: Matrix4x4;\r\n /** @internal Inverse of the current jittered VP matrix. */\r\n protected _jitteredInvVPMatrix: Matrix4x4;\r\n /** @internal Previous frame’s non-jittered VP matrix. */\r\n protected _prevVPMatrix: Nullable<Matrix4x4>;\r\n /** @internal Previous frame’s camera world position. */\r\n protected _prevPosition: Nullable<Vector3>;\r\n /** @internal Previous frame’s jittered VP matrix. */\r\n protected _prevJitteredVPMatrix: Nullable<Matrix4x4>;\r\n /** @internal Post-processing compositor attached to this camera. */\r\n protected _compositor: Compositor;\r\n /** @internal Pointer interaction rectangle in css pixels (relative to canvas) */\r\n protected _interactionRect: Nullable<[left: number, top: number, width: number, height: number]>;\r\n /** @internal captured by which mouse button (-1 if not captured) */\r\n protected _capturedButton: number;\r\n /**\r\n * Creates a new camera node.\r\n *\r\n * Initializes projection/view matrices, temporal fields, controller linkage, and\r\n * builds the default post-processing pipeline on the internal compositor.\r\n *\r\n * @param scene - The scene that owns this camera.\r\n * @param projectionMatrix - Optional projection matrix to initialize with.\r\n */\r\n constructor(scene: Nullable<Scene>, projectionMatrix?: Matrix4x4) {\r\n super(scene);\r\n this._projMatrix = projectionMatrix || Matrix4x4.identity();\r\n this._invProjMatrix = Matrix4x4.invert(this._projMatrix);\r\n this._viewMatrix = Matrix4x4.identity();\r\n this._viewProjMatrix = Matrix4x4.identity();\r\n this._invViewProjMatrix = Matrix4x4.identity();\r\n this._clipPlane = null;\r\n this._clearColor = new Vector4(0, 0, 0, 1);\r\n this._clearDepth = 1;\r\n this._clearStencil = 0;\r\n this._dirty = true;\r\n this._controller = null;\r\n this._viewport = null;\r\n this._adaptedViewport = null;\r\n this._adaptedRelativeViewport = null;\r\n this._adaptedVersion = 0;\r\n this._scissor = null;\r\n this._clipMask = 0;\r\n this._frustum = null;\r\n this._frustumV = null;\r\n this._oit = new DRef();\r\n this._oitMode = 'none';\r\n this._oitABufferLayers = 20;\r\n this._depthPrePass = false;\r\n this._renderPath = 'forward';\r\n this._screenAdapter = new ScreenAdapter();\r\n this._adapted = false;\r\n this._HiZ = false;\r\n this._HDR = true;\r\n this._toneMap = true;\r\n this._postEffectTonemap = new DRef();\r\n this._tonemapExposure = 1;\r\n this._motionBlur = false;\r\n this._postEffectMotionBlur = new DRef();\r\n this._motionBlurStrength = 1;\r\n this._bloom = false;\r\n this._postEffectBloom = new DRef();\r\n this._bloomMaxDownsampleLevels = 4;\r\n this._bloomDownsampleLimit = 32;\r\n this._bloomThreshold = 0.8;\r\n this._bloomThresholdKnee = 0;\r\n this._bloomIntensity = 1;\r\n this._colorAdjustEnabled = false;\r\n this._postEffectColorAdjust = new DRef();\r\n this._colorAdjustSaturation = 1;\r\n this._colorAdjustContrast = 1;\r\n this._colorAdjustHue = 0;\r\n this._colorAdjustSharpen = 0;\r\n this._FXAA = false;\r\n this._postEffectFXAA = new DRef();\r\n this._TAA = false;\r\n this._postEffectTAA = new DRef();\r\n this._TAADebug = 0;\r\n this._shadowDebugCascades = false;\r\n this._SSR = false;\r\n this._postEffectSSR = new DRef();\r\n this._ssrParams = new Vector4(64, 96, 0.9, 0);\r\n this._ssrMaxRoughness = 0.55;\r\n this._ssrRoughnessFactor = 1;\r\n this._ssrStride = 1;\r\n this._ssrCalcThickness = false;\r\n this._ssrBlurriness = 0.008;\r\n this._ssrBlurDepthCutoff = 2;\r\n this._ssrBlurKernelSize = 5;\r\n this._ssrBlurStdDev = 4;\r\n this._ssrTemporal = true;\r\n this._ssrTemporalWeight = 0.85;\r\n this._SSS = false;\r\n this._postEffectSSS = new DRef();\r\n this._sssBlurScale = SSS_DEFAULT_SETTINGS.blurScale;\r\n this._sssQualityPreset = 'balanced';\r\n this._sssStrength = SSS_DEFAULT_SETTINGS.strength;\r\n this._sssTransmissionStrength = SSS_DEFAULT_SETTINGS.transmissionStrength;\r\n this._sssTransmissionPower = SSS_DEFAULT_SETTINGS.transmissionPower;\r\n this._sssMultiScatter = SSS_DEFAULT_SETTINGS.multiScatter;\r\n const defaultSSSQualityPreset = SSS_QUALITY_PRESET_SETTINGS.balanced;\r\n this._sssResolvedSettings = {\r\n halfRes: defaultSSSQualityPreset.halfRes,\r\n blurKernelSize: defaultSSSQualityPreset.blurKernelSize,\r\n blurStdDev: defaultSSSQualityPreset.blurStdDev,\r\n blurDepthCutoff: defaultSSSQualityPreset.blurDepthCutoff,\r\n normalCutoff: defaultSSSQualityPreset.normalCutoff\r\n };\r\n this.updateSSSResolvedSettings();\r\n this._sssDebugView = 'none';\r\n this._SSAO = false;\r\n this._postEffectSSAO = new DRef();\r\n this._SSAOScale = 10;\r\n this._SSAOBias = 1;\r\n this._SSAOIntensity = 0.025;\r\n this._SSAORadius = 100;\r\n this._SSAOBlurDepthCutoff = 2;\r\n this._pickResult = null;\r\n this._commandBufferReuse = true;\r\n this._jitteredVPMatrix = new Matrix4x4();\r\n this._jitteredInvVPMatrix = new Matrix4x4();\r\n this._jitterValue = new Vector2(0, 0);\r\n this._prevVPMatrix = null;\r\n this._prevPosition = null;\r\n this._prevJitteredVPMatrix = null;\r\n this._prevJitterValue = null;\r\n this._pickResultPromise = null;\r\n this._pickResultResolve = null;\r\n this._pickPosX = 0;\r\n this._pickPosY = 0;\r\n this._compositor = new Compositor();\r\n this._capturedButton = -1;\r\n this._interactionRect = null;\r\n this.updatePostProcessing();\r\n if (scene && !scene.mainCamera) {\r\n scene.mainCamera = this;\r\n }\r\n }\r\n /**\r\n * The compositor that owns and runs the camera's post-processing chain.\r\n */\r\n get compositor() {\r\n return this._compositor;\r\n }\r\n /**\r\n * Pointer interaction rectangle in css pixels (relative to canvas)\r\n */\r\n get interactionRect() {\r\n return this._interactionRect;\r\n }\r\n set interactionRect(rect) {\r\n this._interactionRect = rect;\r\n }\r\n /**\r\n * Framebuffer clear color, or `null` to disable.\r\n */\r\n get clearColor() {\r\n return this._clearColor;\r\n }\r\n set clearColor(v) {\r\n this._clearColor = v?.clone() ?? null;\r\n }\r\n /**\r\n * Framebuffer stencil clear value, disabled when null. Default is 0.\r\n */\r\n get clearDepth() {\r\n return this._clearDepth;\r\n }\r\n set clearDepth(v) {\r\n this._clearDepth = v;\r\n }\r\n /**\r\n * Framebuffer stencil clear value, disabled when null. Default is 0.\r\n */\r\n get clearStencil() {\r\n return this._clearStencil;\r\n }\r\n set clearStencil(v) {\r\n this._clearStencil = v;\r\n }\r\n /**\r\n * Whether Hi-Z acceleration is enabled.\r\n *\r\n * Often improves SSR performance with little quality impact when supported.\r\n */\r\n get HiZ() {\r\n return this._HiZ;\r\n }\r\n set HiZ(val) {\r\n this._HiZ = !!val;\r\n }\r\n /**\r\n * Render path used by the scene renderer.\r\n */\r\n get renderPath() {\r\n return this._renderPath;\r\n }\r\n set renderPath(_val: RenderPath) {\r\n this._renderPath = 'forward';\r\n }\r\n /**\r\n * Whether HDR backbuffer is enabled.\r\n *\r\n * Tonemap should be disabled when not using HDR backbuffer.\r\n */\r\n get HDR() {\r\n return this._HDR;\r\n }\r\n set HDR(val) {\r\n this._HDR = !!val;\r\n }\r\n /**\r\n * Whether tonemapping is enabled via the post effect.\r\n */\r\n get toneMap() {\r\n return this._postEffectTonemap.get()!.enabled;\r\n }\r\n set toneMap(val) {\r\n this._postEffectTonemap.get()!.enabled = !!val;\r\n }\r\n /**\r\n * Whether motion blur is enabled via the post effect.\r\n */\r\n get motionBlur() {\r\n return this._postEffectMotionBlur.get()!.enabled;\r\n }\r\n set motionBlur(val) {\r\n this._postEffectMotionBlur.get()!.enabled = !!val;\r\n }\r\n /** Motion blur strength */\r\n get motionBlurStrength() {\r\n return this._motionBlurStrength;\r\n }\r\n set motionBlurStrength(val) {\r\n this._motionBlurStrength = val;\r\n if (this._postEffectMotionBlur.get()) {\r\n this._postEffectMotionBlur.get()!.strength = this._motionBlurStrength;\r\n }\r\n }\r\n /**\r\n * Gets whether Bloom is enabled.\r\n */\r\n get bloom() {\r\n return this._postEffectBloom.get()!.enabled;\r\n }\r\n set bloom(val) {\r\n this._postEffectBloom.get()!.enabled = !!val;\r\n }\r\n /**\r\n * Maximum bloom downsample levels\r\n */\r\n get bloomMaxDownsampleLevels() {\r\n return this._bloomMaxDownsampleLevels;\r\n }\r\n set bloomMaxDownsampleLevels(val) {\r\n this._bloomMaxDownsampleLevels = val;\r\n if (this._postEffectBloom.get()) {\r\n this._postEffectBloom.get()!.maxDownsampleLevel = val;\r\n }\r\n }\r\n /**\r\n * Bloom downsample limit\r\n */\r\n get bloomDownsampleLimit() {\r\n return this._bloomDownsampleLimit;\r\n }\r\n set bloomDownsampleLimit(val) {\r\n this._bloomDownsampleLimit = val;\r\n if (this._postEffectBloom.get()) {\r\n this._postEffectBloom.get()!.downsampleLimit = val;\r\n }\r\n }\r\n /**\r\n * Bloom threshold\r\n */\r\n get bloomThreshold() {\r\n return this._bloomThreshold;\r\n }\r\n set bloomThreshold(val) {\r\n this._bloomThreshold = val;\r\n if (this._postEffectBloom.get()) {\r\n this._postEffectBloom.get()!.threshold = val;\r\n }\r\n }\r\n /**\r\n * Bloom threshold knee\r\n */\r\n get bloomThresholdKnee() {\r\n return this._bloomThresholdKnee;\r\n }\r\n set bloomThresholdKnee(val) {\r\n this._bloomThresholdKnee = val;\r\n if (this._postEffectBloom.get()) {\r\n this._postEffectBloom.get()!.thresholdKnee = val;\r\n }\r\n }\r\n /**\r\n * Bloom intensity\r\n */\r\n get bloomIntensity() {\r\n return this._bloomIntensity;\r\n }\r\n set bloomIntensity(val) {\r\n this._bloomIntensity = val;\r\n if (this._postEffectBloom.get()) {\r\n this._postEffectBloom.get()!.intensity = val;\r\n }\r\n }\r\n /** Whether color adjustment is enabled. */\r\n get colorAdjust() {\r\n return this._postEffectColorAdjust.get()!.enabled;\r\n }\r\n set colorAdjust(val) {\r\n this._postEffectColorAdjust.get()!.enabled = !!val;\r\n }\r\n /** Color adjustment saturation, 1 means unchanged. */\r\n get colorAdjustSaturation() {\r\n return this._colorAdjustSaturation;\r\n }\r\n set colorAdjustSaturation(val) {\r\n this._colorAdjustSaturation = val;\r\n if (this._postEffectColorAdjust.get()) {\r\n this._postEffectColorAdjust.get()!.saturation = val;\r\n }\r\n }\r\n /** Color adjustment contrast, 1 means unchanged. */\r\n get colorAdjustContrast() {\r\n return this._colorAdjustContrast;\r\n }\r\n set colorAdjustContrast(val) {\r\n this._colorAdjustContrast = val;\r\n if (this._postEffectColorAdjust.get()) {\r\n this._postEffectColorAdjust.get()!.contrast = val;\r\n }\r\n }\r\n /** Color adjustment hue in degrees. */\r\n get colorAdjustHue() {\r\n return this._colorAdjustHue;\r\n }\r\n set colorAdjustHue(val) {\r\n this._colorAdjustHue = val;\r\n if (this._postEffectColorAdjust.get()) {\r\n this._postEffectColorAdjust.get()!.hue = val;\r\n }\r\n }\r\n /** Color adjustment sharpen amount, 0 means disabled. */\r\n get colorAdjustSharpen() {\r\n return this._colorAdjustSharpen;\r\n }\r\n set colorAdjustSharpen(val) {\r\n this._colorAdjustSharpen = val;\r\n if (this._postEffectColorAdjust.get()) {\r\n this._postEffectColorAdjust.get()!.sharpen = val;\r\n }\r\n }\r\n /**\r\n * Gets whether FXAA is enabled.\r\n */\r\n get FXAA() {\r\n return this._postEffectFXAA.get()!.enabled;\r\n }\r\n set FXAA(val) {\r\n this._postEffectFXAA.get()!.enabled = !!val;\r\n }\r\n /**\r\n * Tonemap exposure\r\n */\r\n get toneMapExposure() {\r\n return this._tonemapExposure;\r\n }\r\n set toneMapExposure(val) {\r\n this._tonemapExposure = val;\r\n if (this._postEffectTonemap.get()) {\r\n this._postEffectTonemap.get()!.exposure = val;\r\n }\r\n }\r\n /**\r\n * Gets whether TAA is enabled.\r\n */\r\n get TAA() {\r\n return this._postEffectTAA.get()!.enabled;\r\n }\r\n set TAA(val) {\r\n this._postEffectTAA.get()!.enabled = !!val;\r\n }\r\n /**\r\n * Gets the debug flag for TAA\r\n */\r\n get TAADebug() {\r\n return this._TAADebug;\r\n }\r\n set TAADebug(val) {\r\n this._TAADebug = val;\r\n }\r\n /**\r\n * Enables cascade debug visualization for directional shadows.\r\n */\r\n get shadowDebugCascades() {\r\n return this._shadowDebugCascades;\r\n }\r\n set shadowDebugCascades(val) {\r\n this._shadowDebugCascades = !!val;\r\n }\r\n /**\r\n * Gets whether Screen Space Reflections (SSR) is enabled.\r\n */\r\n get SSR() {\r\n return this._postEffectSSR.get()!.enabled;\r\n }\r\n set SSR(val) {\r\n this._postEffectSSR.get()!.enabled = !!val;\r\n }\r\n /**\r\n * Gets the maximum roughness value for screen space reflections.\r\n * Controls the cutoff point where surfaces are considered too rough for SSR.\r\n */\r\n get ssrMaxRoughness() {\r\n return this._ssrMaxRoughness;\r\n }\r\n set ssrMaxRoughness(val) {\r\n this._ssrMaxRoughness = val;\r\n }\r\n /**\r\n * Gets the roughness factor for SSR calculations.\r\n * Affects how surface roughness influences reflection clarity.\r\n */\r\n get ssrRoughnessFactor() {\r\n return this._ssrRoughnessFactor;\r\n }\r\n set ssrRoughnessFactor(val) {\r\n this._ssrRoughnessFactor = val;\r\n }\r\n /**\r\n * Gets the stride value for SSR ray marching.\r\n * Controls the step size during ray marching. Larger values improve performance but may miss details.\r\n */\r\n get ssrStride() {\r\n return this._ssrStride;\r\n }\r\n set ssrStride(val) {\r\n this._ssrStride = val;\r\n }\r\n /**\r\n * Gets the maximum distance for SSR ray marching.\r\n * Defines how far rays will travel when searching for reflection intersections.\r\n */\r\n get ssrMaxDistance() {\r\n return this._ssrParams.x;\r\n }\r\n set ssrMaxDistance(val) {\r\n this._ssrParams.x = val;\r\n }\r\n /**\r\n * Gets the number of iterations for SSR ray marching.\r\n * Higher values provide more accurate reflections but impact performance.\r\n */\r\n get ssrIterations() {\r\n return this._ssrParams.y;\r\n }\r\n set ssrIterations(val) {\r\n this._ssrParams.y = val;\r\n }\r\n /**\r\n * Gets the thickness value for SSR calculations.\r\n * Determines the thickness threshold for surfaces when calculating reflections.\r\n */\r\n get ssrThickness() {\r\n return this._ssrParams.z;\r\n }\r\n set ssrThickness(val) {\r\n this._ssrParams.z = val;\r\n }\r\n /**\r\n * Gets whether SSR should calculate thickness automatically.\r\n * When enabled, the system will dynamically compute surface thickness for reflections.\r\n */\r\n get ssrCalcThickness() {\r\n return this._ssrCalcThickness;\r\n }\r\n set ssrCalcThickness(val) {\r\n this._ssrCalcThickness = !!val;\r\n }\r\n /**\r\n * Gets the blur scale factor for SSR.\r\n * Controls the overall intensity of the blur effect applied to reflections.\r\n */\r\n get ssrBlurScale() {\r\n return this._ssrBlurriness;\r\n }\r\n set ssrBlurScale(val) {\r\n this._ssrBlurriness = val;\r\n }\r\n /**\r\n * Gets the depth cutoff value for SSR blur.\r\n * Determines at what depth difference the blur effect should be reduced or eliminated.\r\n */\r\n get ssrBlurDepthCutoff() {\r\n return this._ssrBlurDepthCutoff;\r\n }\r\n set ssrBlurDepthCutoff(val) {\r\n this._ssrBlurDepthCutoff = val;\r\n }\r\n /**\r\n * Gets the kernel size for the SSR blur effect.\r\n * Defines the size of the blur kernel. Larger values create softer, more spread-out blur.\r\n */\r\n get ssrBlurKernelSize() {\r\n return this._ssrBlurKernelSize;\r\n }\r\n set ssrBlurKernelSize(val) {\r\n this._ssrBlurKernelSize = val;\r\n }\r\n /**\r\n * Gets the standard deviation for the SSR Gaussian blur.\r\n * Controls the distribution of the blur effect. Higher values create more pronounced blur.\r\n */\r\n get ssrBlurStdDev() {\r\n return this._ssrBlurStdDev;\r\n }\r\n set ssrBlurStdDev(val) {\r\n this._ssrBlurStdDev = val;\r\n }\r\n /**\r\n * Gets whether SSR temporal accumulation is enabled.\r\n */\r\n get ssrTemporal() {\r\n return this._ssrTemporal;\r\n }\r\n set ssrTemporal(val) {\r\n this._ssrTemporal = !!val;\r\n }\r\n /**\r\n * Gets SSR temporal blending weight in [0, 1].\r\n * Higher values rely more on reprojected history.\r\n */\r\n get ssrTemporalWeight() {\r\n return this._ssrTemporalWeight;\r\n }\r\n set ssrTemporalWeight(val) {\r\n this._ssrTemporalWeight = Math.max(0, Math.min(1, val ?? 0));\r\n }\r\n /**\r\n * Gets whether Screen Space Subsurface Scattering (SSS) is enabled.\r\n */\r\n get SSS() {\r\n return this._postEffectSSS.get()!.enabled;\r\n }\r\n set SSS(val) {\r\n this._postEffectSSS.get()!.enabled = !!val;\r\n }\r\n /** Global blur scale for screen-space SSS. */\r\n get sssBlurScale() {\r\n return this._sssBlurScale;\r\n }\r\n set sssBlurScale(val) {\r\n this._sssBlurScale = Math.max(0, val ?? 0);\r\n }\r\n /**\r\n * High-level quality preset for SSS blur controls.\r\n *\r\n * This is the primary user-facing SSS quality control and only affects\r\n * the blur sampling quality/performance tradeoff, not the authored look.\r\n */\r\n get sssQualityPreset() {\r\n return this._sssQualityPreset;\r\n }\r\n set sssQualityPreset(val: SSSQualityPreset) {\r\n const next = Camera.resolveSSSQualityPreset(val);\r\n if (next !== this._sssQualityPreset) {\r\n this._sssQualityPreset = next;\r\n this.updateSSSResolvedSettings();\r\n }\r\n }\r\n /** Final SSS composite strength. */\r\n get sssStrength() {\r\n return this._sssStrength;\r\n }\r\n set sssStrength(val) {\r\n this._sssStrength = Math.max(0, val ?? 0);\r\n }\r\n /** Thin-shell transmission strength. */\r\n get sssTransmissionStrength() {\r\n return this._sssTransmissionStrength;\r\n }\r\n set sssTransmissionStrength(val) {\r\n this._sssTransmissionStrength = Math.max(0, val ?? 0);\r\n }\r\n /** Thin-shell transmission exponent. */\r\n get sssTransmissionPower() {\r\n return this._sssTransmissionPower;\r\n }\r\n set sssTransmissionPower(val) {\r\n this._sssTransmissionPower = Math.max(0.1, val ?? 0.1);\r\n }\r\n /** Multi-scatter energy compensation factor. */\r\n get sssMultiScatter() {\r\n return this._sssMultiScatter;\r\n }\r\n set sssMultiScatter(val) {\r\n this._sssMultiScatter = Math.max(0, val ?? 0);\r\n }\r\n /** Resolved SSS blur settings after applying the quality preset. */\r\n get sssResolvedSettings(): Readonly<SSSResolvedSettings> {\r\n return this._sssResolvedSettings;\r\n }\r\n /** Debug visualization for screen-space SSS buffers. */\r\n get sssDebugView() {\r\n return this._sssDebugView;\r\n }\r\n set sssDebugView(val: SSSDebugView) {\r\n this._sssDebugView = val ?? 'none';\r\n }\r\n /** @internal */\r\n get ssrParams(): Immutable<Vector4> {\r\n return this._ssrParams;\r\n }\r\n /**\r\n * Gets whether SSAO is enabled.\r\n */\r\n get SSAO() {\r\n return this._postEffectSSAO.get()!.enabled;\r\n }\r\n set SSAO(val) {\r\n this._postEffectSSAO.get()!.enabled = !!val;\r\n }\r\n /** SSAO scale */\r\n get SSAOScale() {\r\n return this._SSAOScale;\r\n }\r\n set SSAOScale(val) {\r\n this._SSAOScale = val;\r\n if (this._postEffectSSAO.get()!) {\r\n this._postEffectSSAO.get()!.scale = val;\r\n }\r\n }\r\n /** SSAO bias */\r\n get SSAOBias() {\r\n return this._SSAOBias;\r\n }\r\n set SSAOBias(val) {\r\n this._SSAOBias = val;\r\n if (this._postEffectSSAO.get()) {\r\n this._postEffectSSAO.get()!.bias = val;\r\n }\r\n }\r\n /** SSAO radius */\r\n get SSAORadius() {\r\n return this._SSAORadius;\r\n }\r\n set SSAORadius(val) {\r\n this._SSAORadius = val;\r\n if (this._postEffectSSAO.get()) {\r\n this._postEffectSSAO.get()!.radius = val;\r\n }\r\n }\r\n /** SSAO intensity */\r\n get SSAOIntensity() {\r\n return this._SSAOIntensity;\r\n }\r\n set SSAOIntensity(val) {\r\n this._SSAOIntensity = val;\r\n if (this._postEffectSSAO.get()) {\r\n this._postEffectSSAO.get()!.intensity = val;\r\n }\r\n }\r\n /** SSAO depth cutoff */\r\n get SSAOBlurDepthCutoff() {\r\n return this._SSAOBlurDepthCutoff;\r\n }\r\n set SSAOBlurDepthCutoff(val) {\r\n this._SSAOBlurDepthCutoff = val;\r\n if (this._postEffectSSAO.get()) {\r\n this._postEffectSSAO.get()!.blurDepthCutoff = val;\r\n }\r\n }\r\n /** Whether to perform a depth pass */\r\n get depthPrePass() {\r\n return this._depthPrePass;\r\n }\r\n set depthPrePass(val) {\r\n this._depthPrePass = !!val;\r\n }\r\n /** Whether to allow command buffer reuse optimization */\r\n get commandBufferReuse() {\r\n return this._commandBufferReuse;\r\n }\r\n set commandBufferReuse(val) {\r\n this._commandBufferReuse = !!val;\r\n }\r\n /** Whether this camera is adapted to screen settins */\r\n get adapted() {\r\n return this._adapted;\r\n }\r\n set adapted(val) {\r\n if (val !== this._adapted) {\r\n this._adapted = !!val;\r\n this._adaptedViewport = null;\r\n this._adaptedRelativeViewport = null;\r\n this._invalidate(true);\r\n }\r\n }\r\n /** OIT */\r\n get oit() {\r\n return this._oit.get();\r\n }\r\n set oit(val) {\r\n this._oit.set(val);\r\n const inferredMode = this.inferOITMode(val);\r\n if (inferredMode) {\r\n this._oitMode = inferredMode;\r\n }\r\n }\r\n /** OIT mode */\r\n get oitMode() {\r\n return this._oitMode;\r\n }\r\n set oitMode(val: CameraOITMode) {\r\n const mode = val ?? 'none';\r\n if (mode !== this._oitMode) {\r\n this._oitMode = mode;\r\n this._oit.set(this.createOITForMode(mode));\r\n }\r\n }\r\n /** ABuffer OIT layer budget. */\r\n get oitABufferLayers() {\r\n return this._oitABufferLayers;\r\n }\r\n set oitABufferLayers(val: number) {\r\n const layers = Math.max(1, Math.floor(val || 0));\r\n if (layers !== this._oitABufferLayers) {\r\n this._oitABufferLayers = layers;\r\n if (this._oitMode === 'abuffer') {\r\n this._oit.set(this.createOITForMode('abuffer'));\r\n }\r\n }\r\n }\r\n /** Clip plane mask */\r\n get clipMask() {\r\n return this._clipMask;\r\n }\r\n set clipMask(val) {\r\n this._clipMask = val;\r\n }\r\n /** Viewport used for rendering, if null, use full framebuffer size */\r\n get viewport(): Nullable<Immutable<number[]>> {\r\n if (this._adapted) {\r\n if (!this._adaptedViewport) {\r\n this._adaptedViewport = this.calcAdaptedViewport(this._adaptedViewport);\r\n }\r\n return this._adaptedViewport;\r\n }\r\n return this._viewport;\r\n }\r\n set viewport(rect: Nullable<Immutable<number[]>>) {\r\n this._viewport = rect?.slice() ?? null;\r\n }\r\n /** Scissor rectangle used for rendering, if null, use viewport value */\r\n get scissor(): Nullable<Immutable<number[]>> {\r\n return this._adapted ? this.viewport : this._scissor;\r\n }\r\n set scissor(rect: Nullable<Immutable<number[]>>) {\r\n this._scissor = rect?.slice() ?? null;\r\n }\r\n get relativeViewport(): Nullable<Immutable<number[]>> {\r\n if (this._adapted) {\r\n if (!this._adaptedRelativeViewport) {\r\n this._adaptedRelativeViewport = this.calcRelativeAdaptedViewport(this._adaptedRelativeViewport);\r\n }\r\n return this._adaptedRelativeViewport;\r\n }\r\n return this._viewport;\r\n }\r\n /**\r\n * Screen configuration used for adapting the camera viewport\r\n */\r\n get screenConfig(): Immutable<ScreenConfig> {\r\n return this._screenAdapter.config;\r\n }\r\n set screenConfig(config: Immutable<ScreenConfig>) {\r\n this._screenAdapter.config = config;\r\n }\r\n /**\r\n * Screen viewport used for adapting the camera viewport\r\n */\r\n get screenViewport(): Nullable<Immutable<number[]>> {\r\n return this._screenAdapter.viewport;\r\n }\r\n set screenViewport(viewport: Nullable<Immutable<number[]>>) {\r\n this._screenAdapter.viewport = viewport;\r\n }\r\n /**\r\n * Handle input events\r\n * @param ev - input event object\r\n * @param type - event type, default to ev.type\r\n * @returns Boolean value indicates whether the event was handled.\r\n */\r\n handleEvent<T extends IBaseEvent<any>>(ev: T, type?: string) {\r\n let handled = false;\r\n if (this._controller) {\r\n if (\r\n this._capturedButton < 0 &&\r\n (ev instanceof PointerEvent || ev instanceof WheelEvent) &&\r\n !this.posInViewport(ev.offsetX, ev.offsetY)\r\n ) {\r\n return false;\r\n }\r\n type = type ?? ev.type;\r\n if (type === 'pointerdown') {\r\n if (this._capturedButton < 0) {\r\n this._capturedButton = (ev as unknown as IControllerPointerDownEvent).button;\r\n }\r\n handled = this._controller.onMouseDown(ev as unknown as IControllerPointerDownEvent);\r\n } else if (type === 'pointerup') {\r\n handled = this._controller.onMouseUp(ev as unknown as IControllerPointerUpEvent);\r\n if (this._capturedButton === (ev as unknown as IControllerPointerUpEvent).button) {\r\n this._capturedButton = -1;\r\n }\r\n } else if (type === 'pointermove') {\r\n handled = this._controller.onMouseMove(ev as unknown as IControllerPointerMoveEvent);\r\n } else if (type === 'wheel') {\r\n handled = this._controller.onMouseWheel(ev as unknown as IControllerWheelEvent);\r\n } else if (type === 'keydown') {\r\n handled = this._controller.onKeyDown(ev as unknown as IControllerKeydownEvent);\r\n } else if (type === 'keyup') {\r\n handled = this._controller.onKeyUp(ev as unknown as IControllerKeyupEvent);\r\n }\r\n if (handled && ev.preventDefault) {\r\n ev.preventDefault();\r\n }\r\n }\r\n return handled;\r\n }\r\n /**\r\n * Constructs a ray based on the given screen coordinates.\r\n *\r\n * @param x - The x-component of the screen coordinates, relative to the top-left corner of the viewport.\r\n * @param y - The y-component of the screen coordinates, relative to the top-left corner of the viewport.\r\n * @returns The ray originating from the camera position and passing through the given screen coordinates.\r\n */\r\n constructRay(x: number, y: number) {\r\n const width = this.viewport ? this.viewport[2] : getDevice().getViewport().width;\r\n const height = this.viewport ? this.viewport[3] : getDevice().getViewport().height;\r\n const ndcX = (2 * x) / width - 1;\r\n const ndcY = 1 - (2 * y) / height;\r\n const nearClip = new Vector4(ndcX, ndcY, -1, 1);\r\n const farClip = new Vector4(ndcX, ndcY, 1, 1);\r\n const nearWorld = this.invViewProjectionMatrix.transform(nearClip);\r\n const farWorld = this.invViewProjectionMatrix.transform(farClip);\r\n if (this.isPerspective()) {\r\n nearWorld.scaleBy(1 / nearWorld.w);\r\n farWorld.scaleBy(1 / farWorld.w);\r\n }\r\n const vEye = this.isPerspective() ? this.getWorldPosition() : nearWorld.xyz();\r\n const vDir = Vector3.sub(farWorld.xyz(), vEye).inplaceNormalize();\r\n return new Ray(vEye, vDir);\r\n }\r\n /**\r\n * Place the camera by specifying the camera position and the target point\r\n * @param eye - The camera position\r\n * @param target - The target point to look at\r\n * @param up - The up vector\r\n * @returns self\r\n */\r\n lookAt(eye: Vector3, target: Vector3, up: Vector3) {\r\n return this.setLocalTransform(Matrix4x4.lookAt(eye, target, up));\r\n }\r\n /**\r\n * Place the camera to look at a given cube face at a given camera position\r\n * @param face - The cube face to look at\r\n * @param position - The camera position\r\n * @returns self\r\n */\r\n lookAtCubeFace(face: CubeFace, position?: Vector3) {\r\n return this.setLocalTransform(Matrix4x4.lookAtCubeFace(face, position ?? this.position));\r\n }\r\n /**\r\n * Setup a perspective projection matrix for the camera\r\n * @param fovY - The vertical field of view in radians.\r\n * @param aspect - The aspect ratio\r\n * @param zNear - The near clip plane\r\n * @param zFar - The far clip plane\r\n * @returns self\r\n */\r\n setPerspective(fovY: number, aspect: number, zNear: number, zFar: number) {\r\n this._projMatrix.perspective(fovY, aspect, zNear, zFar);\r\n Matrix4x4.invert(this._projMatrix, this._invProjMatrix);\r\n this._invalidate(true);\r\n return this;\r\n }\r\n /**\r\n * Setup a orthogonal projection matrix for the camera\r\n * @param left - Left bound of the frustum\r\n * @param right - Right bound of the frustum\r\n * @param bottom - Bottom bound of the frustum\r\n * @param top - Top bound of the frustum\r\n * @param near - Near bound of the frustum.\r\n * @param far - Far bound of the frustum.\r\n * @returns self\r\n */\r\n setOrtho(left: number, right: number, bottom: number, top: number, near: number, far: number) {\r\n this._projMatrix.ortho(left, right, bottom, top, near, far);\r\n Matrix4x4.invert(this._projMatrix, this._invProjMatrix);\r\n this._invalidate(true);\r\n return this;\r\n }\r\n /**\r\n * Setup a projection matrix for the camera\r\n * @param matrix - The projection matrix\r\n */\r\n setProjectionMatrix(matrix: Matrix4x4) {\r\n if (matrix && matrix !== this._projMatrix) {\r\n this._projMatrix = matrix;\r\n Matrix4x4.invert(this._projMatrix, this._invProjMatrix);\r\n this._invalidate(true);\r\n }\r\n }\r\n /**\r\n * Gets the projection matrix of the camera\r\n * @returns The projection matrix\r\n */\r\n getProjectionMatrix(): Immutable<Matrix4x4> {\r\n if (this.dirtyCheck()) {\r\n this._compute();\r\n }\r\n return this._projMatrix;\r\n }\r\n /**\r\n * Gets the inverse projection matrix of the camera\r\n * @returns The projection matrix\r\n */\r\n getInvProjectionMatrix(): Immutable<Matrix4x4> {\r\n if (this.dirtyCheck()) {\r\n this._compute();\r\n }\r\n return this._invProjMatrix;\r\n }\r\n getRotationMatrix() {\r\n const rotationMatrix = new Matrix4x4();\r\n this.worldMatrix.decompose(null, rotationMatrix, null);\r\n const xAxis = rotationMatrix.getRow(0).xyz().scaleBy(-1);\r\n const yAxis = rotationMatrix.getRow(1).xyz();\r\n const zAxis = rotationMatrix.getRow(2).xyz().scaleBy(-1);\r\n rotationMatrix.setRow(0, new Vector4(xAxis.x, xAxis.y, xAxis.z, 0));\r\n rotationMatrix.setRow(1, new Vector4(yAxis.x, yAxis.y, yAxis.z, 0));\r\n rotationMatrix.setRow(2, new Vector4(zAxis.x, zAxis.y, zAxis.z, 0));\r\n return rotationMatrix;\r\n }\r\n /**\r\n * View matrix of the camera\r\n *\r\n * @remarks\r\n * Camera's view matrix will transform a point from the world space to the camera space\r\n */\r\n get viewMatrix(): Immutable<Matrix4x4> {\r\n if (this.dirtyCheck()) {\r\n this._compute();\r\n }\r\n return this._viewMatrix;\r\n }\r\n get viewProjectionMatrix(): Immutable<Matrix4x4> {\r\n if (this.dirtyCheck()) {\r\n this._compute();\r\n }\r\n return this._viewProjMatrix;\r\n }\r\n /**\r\n * The inverse-view-projection matrix of the camera\r\n *\r\n * @remarks\r\n * The inverse-view-projection matrix transforms a point from the clip space to the camera space\r\n */\r\n get invViewProjectionMatrix(): Immutable<Matrix4x4> {\r\n if (this.dirtyCheck()) {\r\n this._compute();\r\n }\r\n return this._invViewProjMatrix;\r\n }\r\n /** Gets the frustum of the camera */\r\n get frustum(): Immutable<Frustum> {\r\n if (this.dirtyCheck()) {\r\n this._compute();\r\n }\r\n return this._frustum!;\r\n }\r\n get frustumViewSpace(): Immutable<Frustum> {\r\n if (this.dirtyCheck()) {\r\n this._compute();\r\n }\r\n if (!this._frustumV) {\r\n this._frustumV = new Frustum(this._projMatrix);\r\n }\r\n return this._frustumV!;\r\n }\r\n /** The camera controller */\r\n get controller() {\r\n return this._controller;\r\n }\r\n set controller(controller) {\r\n this.setController(controller);\r\n }\r\n /** {@inheritDoc SceneNode.isCamera} */\r\n isCamera(): this is Camera {\r\n return true;\r\n }\r\n /** Gets the near clip plane of the camera */\r\n getNearPlane() {\r\n return this.getProjectionMatrix().getNearPlane();\r\n }\r\n /** Gets the far clip plane of the camera */\r\n getFarPlane() {\r\n return this.getProjectionMatrix().getFarPlane();\r\n }\r\n /** Gets the vertical field of view of the camera */\r\n getFOV() {\r\n return this.getProjectionMatrix().getFov();\r\n }\r\n /** Gets the tangent of half of the vertical field of view */\r\n getTanHalfFovy() {\r\n return this.getProjectionMatrix().getTanHalfFov();\r\n }\r\n /** Gets the aspect ratio */\r\n getAspect() {\r\n return this.getProjectionMatrix().getAspect();\r\n }\r\n /** Returns true if the camera is perspective */\r\n isPerspective() {\r\n return this.getProjectionMatrix().isPerspective();\r\n }\r\n /** Returns true if the camera is orthographic */\r\n isOrtho() {\r\n return this.getProjectionMatrix().isOrtho();\r\n }\r\n /**\r\n * Gets the camera history data which is used in temporal reprojection\r\n * @returns Camera history data\r\n */\r\n getHistoryData() {\r\n let data = Camera._historyData.get(this);\r\n if (!data) {\r\n data = {\r\n prevColorTex: null,\r\n prevMotionVectorTex: null,\r\n prevSSRReflectTex: null,\r\n prevSSRMotionVectorTex: null\r\n };\r\n Camera._historyData.set(this, data);\r\n }\r\n return data;\r\n }\r\n /**\r\n * Clears the camera history data which is used in temporal reprojection\r\n */\r\n clearHistoryData() {\r\n const data = Camera._historyData.get(this);\r\n if (data) {\r\n if (data.prevColorTex) {\r\n getDevice().pool.releaseTexture(data.prevColorTex);\r\n }\r\n if (data.prevMotionVectorTex) {\r\n getDevice().pool.releaseTexture(data.prevMotionVectorTex);\r\n }\r\n if (data.prevSSRReflectTex) {\r\n getDevice().pool.releaseTexture(data.prevSSRReflectTex);\r\n }\r\n if (data.prevSSRMotionVectorTex) {\r\n getDevice().pool.releaseTexture(data.prevSSRMotionVectorTex);\r\n }\r\n Camera._historyData.delete(this);\r\n }\r\n this._prevVPMatrix = null;\r\n this._prevPosition = null;\r\n this._prevJitteredVPMatrix = null;\r\n this._prevJitterValue = null;\r\n }\r\n /** @internal */\r\n private updatePostProcessing() {\r\n this._compositor.clear();\r\n if (!this._postEffectSSR.get()) {\r\n const ssr = new SSR();\r\n ssr.enabled = false;\r\n this._postEffectSSR.set(ssr);\r\n this._compositor.appendPostEffect(ssr);\r\n }\r\n if (!this._postEffectSSS.get()) {\r\n const sss = new SSS();\r\n sss.enabled = false;\r\n this._postEffectSSS.set(sss);\r\n this._compositor.appendPostEffect(sss);\r\n }\r\n if (!this._postEffectSSAO.get()) {\r\n const ssao = new SAO();\r\n ssao.enabled = false;\r\n ssao.scale = this._SSAOScale;\r\n ssao.bias = this._SSAOBias;\r\n ssao.radius = this._SSAORadius;\r\n ssao.intensity = this._SSAOIntensity;\r\n ssao.blurDepthCutoff = this._SSAOBlurDepthCutoff;\r\n this._postEffectSSAO.set(ssao);\r\n this._compositor.appendPostEffect(ssao);\r\n }\r\n if (!this._postEffectTAA.get()) {\r\n const taa = new TAA();\r\n taa.enabled = false;\r\n this._postEffectTAA.set(taa);\r\n this._compositor.appendPostEffect(taa);\r\n }\r\n if (!this._postEffectMotionBlur.get()) {\r\n const motionBlur = new MotionBlur();\r\n motionBlur.enabled = false;\r\n motionBlur.strength = this._motionBlurStrength;\r\n this._postEffectMotionBlur.set(motionBlur);\r\n this._compositor.appendPostEffect(motionBlur);\r\n }\r\n if (!this._postEffectTonemap.get()) {\r\n const tonemap = new Tonemap();\r\n tonemap.enabled = true;\r\n tonemap.exposure = this._tonemapExposure;\r\n this._postEffectTonemap.set(tonemap);\r\n this._compositor.appendPostEffect(tonemap);\r\n }\r\n if (!this._postEffectColorAdjust.get()) {\r\n const colorAdjust = new ColorAdjust();\r\n colorAdjust.enabled = false;\r\n colorAdjust.saturation = this._colorAdjustSaturation;\r\n colorAdjust.contrast = this._colorAdjustContrast;\r\n colorAdjust.hue = this._colorAdjustHue;\r\n colorAdjust.sharpen = this._colorAdjustSharpen;\r\n this._postEffectColorAdjust.set(colorAdjust);\r\n this._compositor.appendPostEffect(colorAdjust);\r\n }\r\n if (!this._postEffectFXAA.get()) {\r\n const fxaa = new FXAA();\r\n fxaa.enabled = false;\r\n this._postEffectFXAA.set(fxaa);\r\n this._compositor.appendPostEffect(fxaa);\r\n }\r\n if (!this._postEffectBloom.get()) {\r\n const bloom = new Bloom();\r\n bloom.enabled = false;\r\n bloom.maxDownsampleLevel = this._bloomMaxDownsampleLevels;\r\n bloom.downsampleLimit = this._bloomDownsampleLimit;\r\n bloom.threshold = this._bloomThreshold;\r\n bloom.thresholdKnee = this._bloomThresholdKnee;\r\n bloom.intensity = this._bloomIntensity;\r\n this._postEffectBloom.set(bloom);\r\n this._compositor.appendPostEffect(bloom);\r\n }\r\n }\r\n\r\n private static resolveSSSQualityPreset(val: SSSQualityPreset) {\r\n switch (val) {\r\n case 'quality':\r\n case 'balanced':\r\n case 'performance':\r\n return val;\r\n default:\r\n return 'balanced';\r\n }\r\n }\r\n\r\n private updateSSSResolvedSettings() {\r\n const source = SSS_QUALITY_PRESET_SETTINGS[this._sssQualityPreset];\r\n this._sssResolvedSettings.halfRes = source.halfRes;\r\n this._sssResolvedSettings.blurKernelSize = source.blurKernelSize;\r\n this._sssResolvedSettings.blurStdDev = source.blurStdDev;\r\n this._sssResolvedSettings.blurDepthCutoff = source.blurDepthCutoff;\r\n this._sssResolvedSettings.normalCutoff = source.normalCutoff;\r\n }\r\n /**\r\n * Renders a scene\r\n * @param scene - The scene to be rendered\r\n * @param compositor - Compositor instance that will be used to apply postprocess effects\r\n */\r\n render(scene: Scene) {\r\n const device = getDevice();\r\n //this.updatePostProcessing(device);\r\n const useMotionVector =\r\n (this.TAA || this.motionBlur || (this.SSR && this.ssrTemporal)) && device.type !== 'webgl';\r\n const useTAA = useMotionVector && this.TAA;\r\n scene.dispatchEvent('startrender', scene, this, this._compositor);\r\n if (useMotionVector) {\r\n const width = device.getDrawingBufferWidth();\r\n const height = device.getDrawingBufferHeight();\r\n if (useTAA) {\r\n const halton = Camera._halton23[device.frameInfo.frameCounter % Camera._halton23.length];\r\n this._jitterValue.setXY((halton[0] * 2) / width, (halton[1] * 2) / height);\r\n } else {\r\n this._jitterValue.setXY(0, 0);\r\n }\r\n this._jitteredVPMatrix.set(this.getProjectionMatrix());\r\n this._jitteredVPMatrix[8] += this._jitterValue.x;\r\n this._jitteredVPMatrix[9] += this._jitterValue.y;\r\n this._jitteredVPMatrix.multiplyRight(this.viewMatrix);\r\n Matrix4x4.invert(this._jitteredVPMatrix, this._jitteredInvVPMatrix);\r\n if (!this._prevJitteredVPMatrix) {\r\n this._prevJitteredVPMatrix = new Matrix4x4();\r\n this._prevJitteredVPMatrix.set(this._jitteredVPMatrix);\r\n this._prevJitterValue = new Vector2(this._jitterValue);\r\n }\r\n if (!this._prevVPMatrix) {\r\n this._prevVPMatrix = new Matrix4x4();\r\n this._prevVPMatrix.set(this.viewProjectionMatrix);\r\n this._prevPosition = this.getWorldPosition();\r\n }\r\n } else {\r\n this._jitterValue.setXY(0, 0);\r\n this._prevVPMatrix = null;\r\n this._prevPosition = null;\r\n this._prevJitteredVPMatrix = null;\r\n this._prevJitterValue = null;\r\n this._jitteredInvVPMatrix.set(this.invViewProjectionMatrix);\r\n }\r\n device.pushDeviceStates();\r\n device.reverseVertexWindingOrder(false);\r\n scene.getRenderer().renderScene(scene, this);\r\n device.popDeviceStates();\r\n if (useMotionVector) {\r\n this._prevJitteredVPMatrix!.set(this._jitteredVPMatrix);\r\n this._prevJitterValue!.set(this._jitterValue);\r\n this._prevVPMatrix!.set(this.viewProjectionMatrix);\r\n this._prevPosition = this.getWorldPosition();\r\n }\r\n scene.dispatchEvent('endrender', scene, this, this._compositor);\r\n }\r\n async pickAsync(posX: number, posY: number) {\r\n this._pickPosX = posX;\r\n this._pickPosY = posY;\r\n if (!this._pickResultPromise) {\r\n this._pickResultPromise = new Promise<Nullable<PickResult>>((resolve) => {\r\n this._pickResultResolve = (result: Nullable<PickResult>) => {\r\n resolve(result);\r\n this._pickResultPromise = null;\r\n this._pickResultResolve = null;\r\n };\r\n });\r\n }\r\n return this._pickResultPromise;\r\n }\r\n /** @internal */\r\n getPickResultResolveFunc() {\r\n return this._pickResultResolve;\r\n }\r\n /** @internal */\r\n getPickPosX() {\r\n return this._pickPosX;\r\n }\r\n /** @internal */\r\n getPickPosY() {\r\n return this._pickPosY;\r\n }\r\n /**\r\n * Updates the controller state\r\n */\r\n updateController() {\r\n this._controller?.update();\r\n }\r\n /**\r\n * Reset the controller\r\n */\r\n resetController() {\r\n this._controller?.reset();\r\n }\r\n /** @internal */\r\n get jitteredVPMatrix(): Immutable<Matrix4x4> {\r\n return this._jitteredVPMatrix;\r\n }\r\n /** @internal */\r\n get jitteredInvVPMatrix(): Immutable<Matrix4x4> {\r\n return this._jitteredInvVPMatrix;\r\n }\r\n /** @internal */\r\n get jitterValue(): Immutable<Vector2> {\r\n return this._jitterValue;\r\n }\r\n /** @internal */\r\n get prevJitteredVPMatrix(): Nullable<Immutable<Matrix4x4>> {\r\n return this._prevJitteredVPMatrix;\r\n }\r\n /** @internal */\r\n get prevJitterValue(): Nullable<Immutable<Vector2>> {\r\n return this._prevJitterValue;\r\n }\r\n /** @internal */\r\n get prevVPMatrix(): Nullable<Immutable<Matrix4x4>> {\r\n return this._prevVPMatrix;\r\n }\r\n /** @internal */\r\n get prevPosition(): Nullable<Immutable<Vector3>> {\r\n return this._prevPosition;\r\n }\r\n /**\r\n * Gets the camera history resource manager for temporal effects.\r\n */\r\n getHistoryResourceManager(): Nullable<HistoryResourceManager> {\r\n return Camera._historyResourceManager.get(this) ?? null;\r\n }\r\n /**\r\n * Sets the camera history resource manager for temporal effects.\r\n *\r\n * @internal\r\n */\r\n setHistoryResourceManager(manager: HistoryResourceManager): void {\r\n Camera._historyResourceManager.set(this, manager);\r\n }\r\n /** @internal */\r\n private setController(controller: Nullable<BaseCameraController>) {\r\n if (this._controller !== controller) {\r\n if (controller && controller._getCamera() && controller._getCamera() !== this) {\r\n throw new Error(\r\n 'Camera.setController failed: one camera controller object cannot be assigned to multiple camera'\r\n );\r\n }\r\n this._controller?._setCamera(null);\r\n this._controller = controller;\r\n this._controller?._setCamera(this);\r\n }\r\n return this;\r\n }\r\n /** @internal */\r\n protected _invalidate(projectMatrixChanged: boolean) {\r\n this._dirty = true;\r\n if (projectMatrixChanged) {\r\n this._frustumV = null;\r\n }\r\n }\r\n /** @internal */\r\n protected _compute() {\r\n this._computeProj();\r\n Matrix4x4.invertAffine(this.worldMatrix, this._viewMatrix);\r\n Matrix4x4.multiply(this._projMatrix, this._viewMatrix, this._viewProjMatrix);\r\n Matrix4x4.invert(this._viewProjMatrix, this._invViewProjMatrix);\r\n if (!this._frustum) {\r\n this._frustum = new Frustum(this._viewProjMatrix);\r\n } else {\r\n this._frustum.initWithMatrix(this._viewProjMatrix);\r\n }\r\n }\r\n /** @internal */\r\n protected _computeProj() {}\r\n /** @internal */\r\n protected _onTransformChanged(invalidateLocal: boolean) {\r\n super._onTransformChanged(invalidateLocal);\r\n this._invalidate(false);\r\n }\r\n /** {@inheritdoc SceneNode.onDispose} */\r\n protected onDispose() {\r\n super.onDispose();\r\n this.setController(null);\r\n this.clearHistoryData();\r\n this._postEffectBloom.dispose();\r\n this._postEffectFXAA.dispose();\r\n this._postEffectMotionBlur.dispose();\r\n this._postEffectSSAO.dispose();\r\n this._postEffectSSS.dispose();\r\n this._postEffectSSR.dispose();\r\n this._postEffectTAA.dispose();\r\n this._postEffectTonemap.dispose();\r\n this._postEffectColorAdjust.dispose();\r\n this._oit.dispose();\r\n }\r\n /** @internal */\r\n private createOITForMode(mode: CameraOITMode): OIT | null {\r\n if (mode === 'abuffer') {\r\n return new ABufferOIT(this._oitABufferLayers);\r\n }\r\n if (mode === 'weighted') {\r\n return new WeightedBlendedOIT();\r\n }\r\n return null;\r\n }\r\n /** @internal */\r\n private inferOITMode(oit: Nullable<OIT>): Nullable<CameraOITMode> {\r\n if (!oit) {\r\n return 'none';\r\n }\r\n const type = oit.getType();\r\n if (type === ABufferOIT.type) {\r\n return 'abuffer';\r\n }\r\n if (type === WeightedBlendedOIT.type) {\r\n return 'weighted';\r\n }\r\n return null;\r\n }\r\n /** @internal */\r\n private posInViewport(x: number, y: number) {\r\n let rect = this._interactionRect;\r\n if (!rect && this.viewport) {\r\n const cvs = getDevice().canvas;\r\n const vp = this.viewport;\r\n const vp_x = vp[0];\r\n const vp_y = cvs.clientHeight - vp[1] - vp[3];\r\n const vp_w = vp[2];\r\n const vp_h = vp[3];\r\n rect = [vp_x, vp_y, vp_w, vp_h];\r\n }\r\n if (!rect) {\r\n return true;\r\n }\r\n x -= rect[0];\r\n y -= rect[1];\r\n return x >= 0 && x < rect[2] && y >= 0 && y < rect[3];\r\n }\r\n /** @internal */\r\n private dirtyCheck() {\r\n if (this._adapted) {\r\n const version = this._screenAdapter.version;\r\n if (this._adaptedVersion !== version) {\r\n this._dirty = true;\r\n this._adaptedViewport = null;\r\n this._adaptedRelativeViewport = null;\r\n this._adaptedVersion = version;\r\n }\r\n }\r\n if (this._dirty) {\r\n this._dirty = false;\r\n return true;\r\n }\r\n return false;\r\n }\r\n /** @internal */\r\n private calcAdaptedViewport(outViewport?: Nullable<number[]>): number[] {\r\n outViewport = outViewport ?? [];\r\n const transform = this._screenAdapter.transform;\r\n outViewport[0] = transform.croppedViewport.x;\r\n outViewport[1] = transform.croppedViewport.y;\r\n outViewport[2] = transform.croppedViewport.width;\r\n outViewport[3] = transform.croppedViewport.height;\r\n return outViewport;\r\n }\r\n /** @internal */\r\n private calcRelativeAdaptedViewport(outViewport?: Nullable<number[]>): number[] {\r\n outViewport = outViewport ?? [];\r\n const transform = this._screenAdapter.transform;\r\n outViewport[0] = transform.croppedViewport.x - transform.viewportX;\r\n outViewport[1] = transform.croppedViewport.y - transform.viewportY;\r\n outViewport[2] = transform.croppedViewport.width;\r\n outViewport[3] = transform.croppedViewport.height;\r\n return outViewport;\r\n }\r\n /** @internal */\r\n protected calcAdaptedOrthographicProjection(\r\n nearClip: number,\r\n farClip: number,\r\n outMatrix?: Matrix4x4\r\n ): Matrix4x4 {\r\n const matrix = outMatrix ?? new Matrix4x4();\r\n const transform = this._screenAdapter.transform;\r\n const scaleX = this._screenAdapter.config.designWidth / transform.viewportWidth;\r\n const scaleY = this._screenAdapter.config.designHeight / transform.viewportHeight;\r\n const left = -transform.croppedViewport.width * scaleX * 0.5;\r\n const right = -left;\r\n const bottom = transform.croppedViewport.height * scaleY * 0.5;\r\n const top = -bottom;\r\n return matrix.ortho(left, right, bottom, top, nearClip, farClip);\r\n }\r\n /** @internal */\r\n protected calcAdaptedPerspectiveProjection(\r\n fov: number,\r\n nearClip: number,\r\n farClip: number,\r\n outMatrix?: Matrix4x4\r\n ): Matrix4x4 {\r\n const matrix = outMatrix ?? new Matrix4x4();\r\n const transform = this._screenAdapter.transform;\r\n const aspect = transform.viewportHeight !== 0 ? transform.viewportWidth / transform.viewportHeight : 1;\r\n const h = nearClip * Math.tan(fov * 0.5);\r\n const w = h * aspect;\r\n let left = -w + (2 * w * (transform.croppedViewport.x - transform.viewportX)) / transform.viewportWidth;\r\n let right =\r\n w -\r\n (2 *\r\n w *\r\n (transform.viewportX +\r\n transform.viewportWidth -\r\n transform.croppedViewport.x -\r\n transform.croppedViewport.width)) /\r\n transform.viewportWidth;\r\n let bottom =\r\n -h + (2 * w * (transform.croppedViewport.y - transform.viewportY)) / transform.viewportHeight;\r\n let top =\r\n h -\r\n (2 *\r\n h *\r\n (transform.viewportY +\r\n transform.viewportHeight -\r\n transform.croppedViewport.y -\r\n transform.croppedViewport.height)) /\r\n transform.viewportHeight;\r\n return matrix.frustum(left, right, bottom, top, nearClip, farClip);\r\n }\r\n}\r\n"],"names":["SSS_DEFAULT_SETTINGS","blurScale","strength","transmissionStrength","transmissionPower","multiScatter","SSS_QUALITY_PRESET_SETTINGS","quality","halfRes","blurKernelSize","blurStdDev","blurDepthCutoff","normalCutoff","balanced","performance","Camera","SceneNode","_halton23","halton23","_historyData","WeakMap","_historyResourceManager","scene","projectionMatrix","_projMatrix","Matrix4x4","identity","_invProjMatrix","invert","_viewMatrix","_viewProjMatrix","_invViewProjMatrix","_clipPlane","_clearColor","Vector4","_clearDepth","_clearStencil","_dirty","_controller","_viewport","_adaptedViewport","_adaptedRelativeViewport","_adaptedVersion","_scissor","_clipMask","_frustum","_frustumV","_oit","DRef","_oitMode","_oitABufferLayers","_depthPrePass","_renderPath","_screenAdapter","ScreenAdapter","_adapted","_HiZ","_HDR","_toneMap","_postEffectTonemap","_tonemapExposure","_motionBlur","_postEffectMotionBlur","_motionBlurStrength","_bloom","_postEffectBloom","_bloomMaxDownsampleLevels","_bloomDownsampleLimit","_bloomThreshold","_bloomThresholdKnee","_bloomIntensity","_colorAdjustEnabled","_postEffectColorAdjust","_colorAdjustSaturation","_colorAdjustContrast","_colorAdjustHue","_colorAdjustSharpen","_FXAA","_postEffectFXAA","_TAA","_postEffectTAA","_TAADebug","_shadowDebugCascades","_SSR","_postEffectSSR","_ssrParams","_ssrMaxRoughness","_ssrRoughnessFactor","_ssrStride","_ssrCalcThickness","_ssrBlurriness","_ssrBlurDepthCutoff","_ssrBlurKernelSize","_ssrBlurStdDev","_ssrTemporal","_ssrTemporalWeight","_SSS","_postEffectSSS","_sssBlurScale","_sssQualityPreset","_sssStrength","_sssTransmissionStrength","_sssTransmissionPower","_sssMultiScatter","defaultSSSQualityPreset","_sssResolvedSettings","updateSSSResolvedSettings","_sssDebugView","_SSAO","_postEffectSSAO","_SSAOScale","_SSAOBias","_SSAOIntensity","_SSAORadius","_SSAOBlurDepthCutoff","_pickResult","_commandBufferReuse","_jitteredVPMatrix","_jitteredInvVPMatrix","_jitterValue","Vector2","_prevVPMatrix","_prevPosition","_prevJitteredVPMatrix","_prevJitterValue","_pickResultPromise","_pickResultResolve","_pickPosX","_pickPosY","_compositor","Compositor","_capturedButton","_interactionRect","updatePostProcessing","mainCamera","compositor","interactionRect","rect","clearColor","v","clone","clearDepth","clearStencil","HiZ","val","renderPath","_val","HDR","toneMap","get","enabled","motionBlur","motionBlurStrength","bloom","bloomMaxDownsampleLevels","maxDownsampleLevel","bloomDownsampleLimit","downsampleLimit","bloomThreshold","threshold","bloomThresholdKnee","thresholdKnee","bloomIntensity","intensity","colorAdjust","colorAdjustSaturation","saturation","colorAdjustContrast","contrast","colorAdjustHue","hue","colorAdjustSharpen","sharpen","FXAA","toneMapExposure","exposure","TAA","TAADebug","shadowDebugCascades","SSR","ssrMaxRoughness","ssrRoughnessFactor","ssrStride","ssrMaxDistance","x","ssrIterations","y","ssrThickness","z","ssrCalcThickness","ssrBlurScale","ssrBlurDepthCutoff","ssrBlurKernelSize","ssrBlurStdDev","ssrTemporal","ssrTemporalWeight","Math","max","min","SSS","sssBlurScale","sssQualityPreset","next","resolveSSSQualityPreset","sssStrength","sssTransmissionStrength","sssTransmissionPower","sssMultiScatter","sssResolvedSettings","sssDebugView","ssrParams","SSAO","SSAOScale","scale","SSAOBias","bias","SSAORadius","radius","SSAOIntensity","SSAOBlurDepthCutoff","depthPrePass","commandBufferReuse","adapted","_invalidate","oit","set","inferredMode","inferOITMode","oitMode","mode","createOITForMode","oitABufferLayers","layers","floor","clipMask","viewport","calcAdaptedViewport","slice","scissor","relativeViewport","calcRelativeAdaptedViewport","screenConfig","config","screenViewport","handleEvent","ev","type","handled","PointerEvent","WheelEvent","posInViewport","offsetX","offsetY","button","onMouseDown","onMouseUp","onMouseMove","onMouseWheel","onKeyDown","onKeyUp","preventDefault","constructRay","width","getDevice","getViewport","height","ndcX","ndcY","nearClip","farClip","nearWorld","invViewProjectionMatrix","transform","farWorld","isPerspective","scaleBy","w","vEye","getWorldPosition","xyz","vDir","Vector3","sub","inplaceNormalize","Ray","lookAt","eye","target","up","setLocalTransform","lookAtCubeFace","face","position","setPerspective","fovY","aspect","zNear","zFar","perspective","setOrtho","left","right","bottom","top","near","far","ortho","setProjectionMatrix","matrix","getProjectionMatrix","dirtyCheck","_compute","getInvProjectionMatrix","getRotationMatrix","rotationMatrix","worldMatrix","decompose","xAxis","getRow","yAxis","zAxis","setRow","viewMatrix","viewProjectionMatrix","frustum","frustumViewSpace","Frustum","controller","setController","isCamera","getNearPlane","getFarPlane","getFOV","getFov","getTanHalfFovy","getTanHalfFov","getAspect","isOrtho","getHistoryData","data","prevColorTex","prevMotionVectorTex","prevSSRReflectTex","prevSSRMotionVectorTex","clearHistoryData","pool","releaseTexture","delete","clear","ssr","appendPostEffect","sss","ssao","SAO","taa","MotionBlur","tonemap","Tonemap","ColorAdjust","fxaa","Bloom","source","render","device","useMotionVector","useTAA","dispatchEvent","getDrawingBufferWidth","getDrawingBufferHeight","halton","frameInfo","frameCounter","length","setXY","multiplyRight","pushDeviceStates","reverseVertexWindingOrder","getRenderer","renderScene","popDeviceStates","pickAsync","posX","posY","Promise","resolve","result","getPickResultResolveFunc","getPickPosX","getPickPosY","updateController","update","resetController","reset","jitteredVPMatrix","jitteredInvVPMatrix","jitterValue","prevJitteredVPMatrix","prevJitterValue","prevVPMatrix","prevPosition","getHistoryResourceManager","setHistoryResourceManager","manager","_getCamera","Error","_setCamera","projectMatrixChanged","_computeProj","invertAffine","multiply","initWithMatrix","_onTransformChanged","invalidateLocal","onDispose","dispose","ABufferOIT","WeightedBlendedOIT","getType","cvs","canvas","vp","vp_x","vp_y","clientHeight","vp_w","vp_h","version","outViewport","croppedViewport","viewportX","viewportY","outMatrix","scaleX","designWidth","viewportWidth","scaleY","designHeight","viewportHeight","calcAdaptedPerspectiveProjection","fov","h","tan"],"mappings":"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"}
|