@onerjs/core 8.32.3 → 8.32.5

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.
Files changed (41) hide show
  1. package/Engines/Extensions/engine.computeShader.d.ts +2 -3
  2. package/Engines/Extensions/engine.computeShader.js.map +1 -1
  3. package/Engines/ICanvas.d.ts +3 -3
  4. package/Engines/ICanvas.js.map +1 -1
  5. package/Engines/webgpuEngine.js +2 -2
  6. package/Engines/webgpuEngine.js.map +1 -1
  7. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.d.ts +3 -0
  8. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +29 -14
  9. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
  10. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.d.ts +12 -41
  11. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js +106 -184
  12. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js.map +1 -1
  13. package/FrameGraph/Passes/renderPass.js +3 -1
  14. package/FrameGraph/Passes/renderPass.js.map +1 -1
  15. package/FrameGraph/Tasks/Rendering/geometryRendererTask.d.ts +17 -58
  16. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +112 -122
  17. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
  18. package/FrameGraph/Tasks/Rendering/objectRendererTask.d.ts +11 -0
  19. package/FrameGraph/Tasks/Rendering/objectRendererTask.js +62 -26
  20. package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
  21. package/FrameGraph/Tasks/Texture/clearTextureTask.js +18 -8
  22. package/FrameGraph/Tasks/Texture/clearTextureTask.js.map +1 -1
  23. package/FrameGraph/frameGraphContext.js +2 -2
  24. package/FrameGraph/frameGraphContext.js.map +1 -1
  25. package/FrameGraph/frameGraphRenderContext.js +3 -3
  26. package/FrameGraph/frameGraphRenderContext.js.map +1 -1
  27. package/FrameGraph/frameGraphTask.js +2 -2
  28. package/FrameGraph/frameGraphTask.js.map +1 -1
  29. package/FrameGraph/frameGraphUtils.d.ts +2 -2
  30. package/FrameGraph/frameGraphUtils.js +6 -6
  31. package/FrameGraph/frameGraphUtils.js.map +1 -1
  32. package/Inputs/scene.inputManager.d.ts +1 -1
  33. package/Inputs/scene.inputManager.js +12 -10
  34. package/Inputs/scene.inputManager.js.map +1 -1
  35. package/Materials/materialHelper.geometryrendering.d.ts +5 -1
  36. package/Materials/materialHelper.geometryrendering.js +11 -2
  37. package/Materials/materialHelper.geometryrendering.js.map +1 -1
  38. package/Rendering/objectRenderer.d.ts +6 -2
  39. package/Rendering/objectRenderer.js +69 -63
  40. package/Rendering/objectRenderer.js.map +1 -1
  41. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"frameGraphTask.js","sourceRoot":"","sources":["../../../../dev/core/src/FrameGraph/frameGraphTask.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FrameGraph, FrameGraphObjectList, IFrameGraphPass, Nullable, FrameGraphTextureHandle, InternalTexture, FrameGraphRenderContext } from \"core/index\";\r\nimport { FrameGraphObjectListPass } from \"./Passes/objectListPass\";\r\nimport { FrameGraphRenderPass } from \"./Passes/renderPass\";\r\nimport { Observable } from \"core/Misc/observable\";\r\n\r\n/**\r\n * Represents a task in a frame graph.\r\n * @experimental\r\n */\r\nexport abstract class FrameGraphTask {\r\n protected readonly _frameGraph: FrameGraph;\r\n\r\n private readonly _passes: IFrameGraphPass[] = [];\r\n private readonly _passesDisabled: IFrameGraphPass[] = [];\r\n\r\n // Note: must be a getter/setter even if there's no specific processing, otherwise inherited classes can't make it a getter/setter!\r\n // Same thing for the disabled property\r\n protected _name: string;\r\n\r\n /**\r\n * The name of the task.\r\n */\r\n public get name() {\r\n return this._name;\r\n }\r\n\r\n public set name(value: string) {\r\n this._name = value;\r\n }\r\n\r\n protected _disabled = false;\r\n\r\n /**\r\n * Whether the task is disabled.\r\n */\r\n public get disabled() {\r\n return this._disabled;\r\n }\r\n\r\n public set disabled(value: boolean) {\r\n this._disabled = value;\r\n }\r\n\r\n /**\r\n * Gets the render passes of the task.\r\n */\r\n public get passes() {\r\n return this._passes;\r\n }\r\n\r\n /**\r\n * Gets the disabled render passes of the task.\r\n */\r\n public get passesDisabled() {\r\n return this._passesDisabled;\r\n }\r\n\r\n /**\r\n * The (texture) dependencies of the task (optional).\r\n */\r\n public dependencies?: Set<FrameGraphTextureHandle>;\r\n\r\n /**\r\n * Records the task in the frame graph. Use this function to add content (render passes, ...) to the task.\r\n * @param skipCreationOfDisabledPasses If true, the disabled passe(s) won't be created.\r\n */\r\n public abstract record(skipCreationOfDisabledPasses?: boolean): void;\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public getClassName(): string {\r\n return \"FrameGraphTask\";\r\n }\r\n\r\n /**\r\n * This function is called once after the task has been added to the frame graph and before the frame graph is built for the first time.\r\n * This allows you to initialize asynchronous resources, which is not possible in the constructor.\r\n * @returns A promise that resolves when the initialization is complete.\r\n */\r\n // eslint-disable-next-line @typescript-eslint/promise-function-async, no-restricted-syntax\r\n public initAsync(): Promise<void> {\r\n return Promise.resolve();\r\n }\r\n\r\n /**\r\n * An observable that is triggered after the textures have been allocated.\r\n */\r\n public onTexturesAllocatedObservable: Observable<FrameGraphRenderContext> = new Observable();\r\n\r\n /**\r\n * An observable that is triggered before the task is executed.\r\n */\r\n public onBeforeTaskExecute: Observable<FrameGraphTask> = new Observable();\r\n\r\n /**\r\n * An observable that is triggered after the task is executed.\r\n */\r\n public onAfterTaskExecute: Observable<FrameGraphTask> = new Observable();\r\n\r\n /**\r\n * Checks if the task is ready to be executed.\r\n * @returns True if the task is ready to be executed, else false.\r\n */\r\n public isReady(): boolean {\r\n return true;\r\n }\r\n\r\n /**\r\n * Disposes of the task.\r\n */\r\n public dispose() {\r\n this._reset();\r\n this.onTexturesAllocatedObservable.clear();\r\n this.onBeforeTaskExecute.clear();\r\n this.onAfterTaskExecute.clear();\r\n }\r\n\r\n /**\r\n * Constructs a new frame graph task.\r\n * @param name The name of the task.\r\n * @param frameGraph The frame graph this task is associated with.\r\n */\r\n constructor(name: string, frameGraph: FrameGraph) {\r\n this.name = name;\r\n this._frameGraph = frameGraph;\r\n this._reset();\r\n }\r\n\r\n /** @internal */\r\n public _reset() {\r\n for (const pass of this._passes) {\r\n pass._dispose();\r\n }\r\n for (const pass of this._passesDisabled) {\r\n pass._dispose();\r\n }\r\n this._passes.length = 0;\r\n this._passesDisabled.length = 0;\r\n }\r\n\r\n /** @internal */\r\n public _addPass(pass: IFrameGraphPass, disabled: boolean) {\r\n if (disabled) {\r\n this._passesDisabled.push(pass);\r\n } else {\r\n this._passes.push(pass);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public _checkTask() {\r\n let outputTexture: Nullable<Nullable<InternalTexture>[]> = null;\r\n let outputDepthTexture: Nullable<InternalTexture> = null;\r\n let outputObjectList: FrameGraphObjectList | undefined;\r\n\r\n for (const pass of this._passes) {\r\n const errMsg = pass._isValid();\r\n if (errMsg) {\r\n throw new Error(`Pass \"${pass.name}\" is not valid. ${errMsg}`);\r\n }\r\n if (FrameGraphRenderPass.IsRenderPass(pass)) {\r\n const handles = Array.isArray(pass.renderTarget) ? pass.renderTarget : [pass.renderTarget];\r\n outputTexture = [];\r\n for (const handle of handles) {\r\n if (handle !== undefined) {\r\n outputTexture.push(this._frameGraph.textureManager.getTextureFromHandle(handle));\r\n }\r\n }\r\n outputDepthTexture = pass.renderTargetDepth !== undefined ? this._frameGraph.textureManager.getTextureFromHandle(pass.renderTargetDepth) : null;\r\n } else if (FrameGraphObjectListPass.IsObjectListPass(pass)) {\r\n outputObjectList = pass.objectList;\r\n }\r\n }\r\n\r\n let disabledOutputTexture: Nullable<Nullable<InternalTexture>[]> = null;\r\n let disabledOutputTextureHandle: (FrameGraphTextureHandle | undefined)[] = [];\r\n let disabledOutputDepthTexture: Nullable<InternalTexture> = null;\r\n let disabledOutputObjectList: FrameGraphObjectList | undefined;\r\n\r\n for (const pass of this._passesDisabled) {\r\n const errMsg = pass._isValid();\r\n if (errMsg) {\r\n throw new Error(`Pass \"${pass.name}\" is not valid. ${errMsg}`);\r\n }\r\n if (FrameGraphRenderPass.IsRenderPass(pass)) {\r\n const handles = Array.isArray(pass.renderTarget) ? pass.renderTarget : [pass.renderTarget];\r\n disabledOutputTexture = [];\r\n for (const handle of handles) {\r\n if (handle !== undefined) {\r\n disabledOutputTexture.push(this._frameGraph.textureManager.getTextureFromHandle(handle));\r\n }\r\n }\r\n disabledOutputTextureHandle = handles;\r\n disabledOutputDepthTexture = pass.renderTargetDepth !== undefined ? this._frameGraph.textureManager.getTextureFromHandle(pass.renderTargetDepth) : null;\r\n } else if (FrameGraphObjectListPass.IsObjectListPass(pass)) {\r\n disabledOutputObjectList = pass.objectList;\r\n }\r\n }\r\n\r\n if (this._passesDisabled.length > 0) {\r\n if (!this._checkSameRenderTarget(outputTexture, disabledOutputTexture)) {\r\n let ok = true;\r\n for (const handle of disabledOutputTextureHandle) {\r\n if (handle !== undefined && !this._frameGraph.textureManager.isHistoryTexture(handle)) {\r\n ok = false;\r\n break;\r\n }\r\n }\r\n if (!ok) {\r\n throw new Error(`The output texture of the task \"${this.name}\" is different when it is enabled or disabled.`);\r\n }\r\n }\r\n if (outputDepthTexture !== disabledOutputDepthTexture && disabledOutputDepthTexture !== null) {\r\n throw new Error(`The output depth texture of the task \"${this.name}\" is different when it is enabled or disabled.`);\r\n }\r\n if (outputObjectList !== disabledOutputObjectList && disabledOutputObjectList !== null) {\r\n throw new Error(`The output object list of the task \"${this.name}\" is different when it is enabled or disabled.`);\r\n }\r\n }\r\n }\r\n\r\n /** @internal */\r\n public _execute() {\r\n const passes = this._disabled && this._passesDisabled.length > 0 ? this._passesDisabled : this._passes;\r\n\r\n this.onBeforeTaskExecute.notifyObservers(this);\r\n\r\n this._frameGraph.engine._debugPushGroup?.(`${this.getClassName()} (${this.name})`, 1);\r\n\r\n for (const pass of passes) {\r\n pass._execute();\r\n }\r\n\r\n this._frameGraph.engine._debugPopGroup?.(1);\r\n\r\n this.onAfterTaskExecute.notifyObservers(this);\r\n }\r\n\r\n private _checkSameRenderTarget(src: Nullable<Nullable<InternalTexture>[]>, dst: Nullable<Nullable<InternalTexture>[]>) {\r\n if (src === null || dst === null) {\r\n return src === dst;\r\n }\r\n\r\n if (src.length !== dst.length) {\r\n return false;\r\n }\r\n\r\n for (let i = 0; i < src.length; i++) {\r\n if (src[i] !== dst[i]) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"frameGraphTask.js","sourceRoot":"","sources":["../../../../dev/core/src/FrameGraph/frameGraphTask.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FrameGraph, FrameGraphObjectList, IFrameGraphPass, Nullable, FrameGraphTextureHandle, InternalTexture, FrameGraphRenderContext } from \"core/index\";\r\nimport { FrameGraphObjectListPass } from \"./Passes/objectListPass\";\r\nimport { FrameGraphRenderPass } from \"./Passes/renderPass\";\r\nimport { Observable } from \"core/Misc/observable\";\r\n\r\n/**\r\n * Represents a task in a frame graph.\r\n * @experimental\r\n */\r\nexport abstract class FrameGraphTask {\r\n protected readonly _frameGraph: FrameGraph;\r\n\r\n private readonly _passes: IFrameGraphPass[] = [];\r\n private readonly _passesDisabled: IFrameGraphPass[] = [];\r\n\r\n // Note: must be a getter/setter even if there's no specific processing, otherwise inherited classes can't make it a getter/setter!\r\n // Same thing for the disabled property\r\n protected _name: string;\r\n\r\n /**\r\n * The name of the task.\r\n */\r\n public get name() {\r\n return this._name;\r\n }\r\n\r\n public set name(value: string) {\r\n this._name = value;\r\n }\r\n\r\n protected _disabled = false;\r\n\r\n /**\r\n * Whether the task is disabled.\r\n */\r\n public get disabled() {\r\n return this._disabled;\r\n }\r\n\r\n public set disabled(value: boolean) {\r\n this._disabled = value;\r\n }\r\n\r\n /**\r\n * Gets the render passes of the task.\r\n */\r\n public get passes() {\r\n return this._passes;\r\n }\r\n\r\n /**\r\n * Gets the disabled render passes of the task.\r\n */\r\n public get passesDisabled() {\r\n return this._passesDisabled;\r\n }\r\n\r\n /**\r\n * The (texture) dependencies of the task (optional).\r\n */\r\n public dependencies?: Set<FrameGraphTextureHandle>;\r\n\r\n /**\r\n * Records the task in the frame graph. Use this function to add content (render passes, ...) to the task.\r\n * @param skipCreationOfDisabledPasses If true, the disabled passe(s) won't be created.\r\n */\r\n public abstract record(skipCreationOfDisabledPasses?: boolean): void;\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public getClassName(): string {\r\n return \"FrameGraphTask\";\r\n }\r\n\r\n /**\r\n * This function is called once after the task has been added to the frame graph and before the frame graph is built for the first time.\r\n * This allows you to initialize asynchronous resources, which is not possible in the constructor.\r\n * @returns A promise that resolves when the initialization is complete.\r\n */\r\n // eslint-disable-next-line @typescript-eslint/promise-function-async, no-restricted-syntax\r\n public initAsync(): Promise<void> {\r\n return Promise.resolve();\r\n }\r\n\r\n /**\r\n * An observable that is triggered after the textures have been allocated.\r\n */\r\n public onTexturesAllocatedObservable: Observable<FrameGraphRenderContext> = new Observable();\r\n\r\n /**\r\n * An observable that is triggered before the task is executed.\r\n */\r\n public onBeforeTaskExecute: Observable<FrameGraphTask> = new Observable();\r\n\r\n /**\r\n * An observable that is triggered after the task is executed.\r\n */\r\n public onAfterTaskExecute: Observable<FrameGraphTask> = new Observable();\r\n\r\n /**\r\n * Checks if the task is ready to be executed.\r\n * @returns True if the task is ready to be executed, else false.\r\n */\r\n public isReady(): boolean {\r\n return true;\r\n }\r\n\r\n /**\r\n * Disposes of the task.\r\n */\r\n public dispose() {\r\n this._reset();\r\n this.onTexturesAllocatedObservable.clear();\r\n this.onBeforeTaskExecute.clear();\r\n this.onAfterTaskExecute.clear();\r\n }\r\n\r\n /**\r\n * Constructs a new frame graph task.\r\n * @param name The name of the task.\r\n * @param frameGraph The frame graph this task is associated with.\r\n */\r\n constructor(name: string, frameGraph: FrameGraph) {\r\n this.name = name;\r\n this._frameGraph = frameGraph;\r\n this._reset();\r\n }\r\n\r\n /** @internal */\r\n public _reset() {\r\n for (const pass of this._passes) {\r\n pass._dispose();\r\n }\r\n for (const pass of this._passesDisabled) {\r\n pass._dispose();\r\n }\r\n this._passes.length = 0;\r\n this._passesDisabled.length = 0;\r\n }\r\n\r\n /** @internal */\r\n public _addPass(pass: IFrameGraphPass, disabled: boolean) {\r\n if (disabled) {\r\n this._passesDisabled.push(pass);\r\n } else {\r\n this._passes.push(pass);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public _checkTask() {\r\n let outputTexture: Nullable<Nullable<InternalTexture>[]> = null;\r\n let outputDepthTexture: Nullable<InternalTexture> = null;\r\n let outputObjectList: FrameGraphObjectList | undefined;\r\n\r\n for (const pass of this._passes) {\r\n const errMsg = pass._isValid();\r\n if (errMsg) {\r\n throw new Error(`Pass \"${pass.name}\" is not valid. ${errMsg}`);\r\n }\r\n if (FrameGraphRenderPass.IsRenderPass(pass)) {\r\n const handles = Array.isArray(pass.renderTarget) ? pass.renderTarget : [pass.renderTarget];\r\n outputTexture = [];\r\n for (const handle of handles) {\r\n if (handle !== undefined) {\r\n outputTexture.push(this._frameGraph.textureManager.getTextureFromHandle(handle));\r\n }\r\n }\r\n outputDepthTexture = pass.renderTargetDepth !== undefined ? this._frameGraph.textureManager.getTextureFromHandle(pass.renderTargetDepth) : null;\r\n } else if (FrameGraphObjectListPass.IsObjectListPass(pass)) {\r\n outputObjectList = pass.objectList;\r\n }\r\n }\r\n\r\n let disabledOutputTexture: Nullable<Nullable<InternalTexture>[]> = null;\r\n let disabledOutputTextureHandle: (FrameGraphTextureHandle | undefined)[] = [];\r\n let disabledOutputDepthTexture: Nullable<InternalTexture> = null;\r\n let disabledOutputObjectList: FrameGraphObjectList | undefined;\r\n\r\n for (const pass of this._passesDisabled) {\r\n const errMsg = pass._isValid();\r\n if (errMsg) {\r\n throw new Error(`Pass \"${pass.name}\" is not valid. ${errMsg}`);\r\n }\r\n if (FrameGraphRenderPass.IsRenderPass(pass)) {\r\n const handles = Array.isArray(pass.renderTarget) ? pass.renderTarget : [pass.renderTarget];\r\n disabledOutputTexture = [];\r\n for (const handle of handles) {\r\n if (handle !== undefined) {\r\n disabledOutputTexture.push(this._frameGraph.textureManager.getTextureFromHandle(handle));\r\n }\r\n }\r\n disabledOutputTextureHandle = handles;\r\n disabledOutputDepthTexture = pass.renderTargetDepth !== undefined ? this._frameGraph.textureManager.getTextureFromHandle(pass.renderTargetDepth) : null;\r\n } else if (FrameGraphObjectListPass.IsObjectListPass(pass)) {\r\n disabledOutputObjectList = pass.objectList;\r\n }\r\n }\r\n\r\n if (this._passesDisabled.length > 0) {\r\n if (!this._checkSameRenderTarget(outputTexture, disabledOutputTexture)) {\r\n let ok = true;\r\n for (const handle of disabledOutputTextureHandle) {\r\n if (handle !== undefined && !this._frameGraph.textureManager.isHistoryTexture(handle)) {\r\n ok = false;\r\n break;\r\n }\r\n }\r\n if (!ok) {\r\n throw new Error(`The output texture of the task \"${this.name}\" is different when it is enabled or disabled.`);\r\n }\r\n }\r\n if (outputDepthTexture !== disabledOutputDepthTexture && disabledOutputDepthTexture !== null) {\r\n throw new Error(`The output depth texture of the task \"${this.name}\" is different when it is enabled or disabled.`);\r\n }\r\n if (outputObjectList !== disabledOutputObjectList && disabledOutputObjectList !== null) {\r\n throw new Error(`The output object list of the task \"${this.name}\" is different when it is enabled or disabled.`);\r\n }\r\n }\r\n }\r\n\r\n /** @internal */\r\n public _execute() {\r\n const passes = this._disabled && this._passesDisabled.length > 0 ? this._passesDisabled : this._passes;\r\n\r\n this.onBeforeTaskExecute.notifyObservers(this);\r\n\r\n this._frameGraph.engine._debugPushGroup?.(`${this.getClassName()} (${this.name})`, 2);\r\n\r\n for (const pass of passes) {\r\n pass._execute();\r\n }\r\n\r\n this._frameGraph.engine._debugPopGroup?.(2);\r\n\r\n this.onAfterTaskExecute.notifyObservers(this);\r\n }\r\n\r\n private _checkSameRenderTarget(src: Nullable<Nullable<InternalTexture>[]>, dst: Nullable<Nullable<InternalTexture>[]>) {\r\n if (src === null || dst === null) {\r\n return src === dst;\r\n }\r\n\r\n if (src.length !== dst.length) {\r\n return false;\r\n }\r\n\r\n for (let i = 0; i < src.length; i++) {\r\n if (src[i] !== dst[i]) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n"]}
@@ -11,8 +11,8 @@ import { UtilityLayerRenderer } from "../Rendering/utilityLayerRenderer.js";
11
11
  export declare function FindMainCamera(frameGraph: FrameGraph): Nullable<Camera>;
12
12
  /**
13
13
  * Looks for the main object renderer task in the frame graph.
14
- * By default, this is the object renderer task with isMainObjectRenderer set to true.
15
- * If no such task, we return the last object renderer task that has an object list with meshes (or null if none found).
14
+ * By default, this is the object/geometry renderer task with isMainObjectRenderer set to true.
15
+ * If no such task, we return the last object/geometry renderer task that has an object list with meshes (or null if none found).
16
16
  * @param frameGraph The frame graph to search in
17
17
  * @returns The main object renderer of the frame graph, or null if not found
18
18
  */
@@ -1,5 +1,4 @@
1
1
  import { FrameGraphObjectRendererTask } from "./Tasks/Rendering/objectRendererTask.js";
2
- import { FrameGraphGeometryRendererTask } from "./Tasks/Rendering/geometryRendererTask.js";
3
2
  import { FrameGraphUtilityLayerRendererTask } from "./Tasks/Rendering/utilityLayerRendererTask.js";
4
3
  import { UtilityLayerRenderer } from "../Rendering/utilityLayerRenderer.js";
5
4
  /**
@@ -14,11 +13,11 @@ export function FindMainCamera(frameGraph) {
14
13
  if (mainObjectRenderer) {
15
14
  return mainObjectRenderer.camera;
16
15
  }
17
- // Try to find a camera in either the geometry renderer or the utility layer renderer tasks
16
+ // Try to find a camera in the utility layer renderer tasks
18
17
  const tasks = frameGraph.tasks;
19
18
  for (let i = tasks.length - 1; i >= 0; i--) {
20
19
  const task = tasks[i];
21
- if (task instanceof FrameGraphGeometryRendererTask || task instanceof FrameGraphUtilityLayerRendererTask) {
20
+ if (task instanceof FrameGraphUtilityLayerRendererTask) {
22
21
  return task.camera;
23
22
  }
24
23
  }
@@ -26,8 +25,8 @@ export function FindMainCamera(frameGraph) {
26
25
  }
27
26
  /**
28
27
  * Looks for the main object renderer task in the frame graph.
29
- * By default, this is the object renderer task with isMainObjectRenderer set to true.
30
- * If no such task, we return the last object renderer task that has an object list with meshes (or null if none found).
28
+ * By default, this is the object/geometry renderer task with isMainObjectRenderer set to true.
29
+ * If no such task, we return the last object/geometry renderer task that has an object list with meshes (or null if none found).
31
30
  * @param frameGraph The frame graph to search in
32
31
  * @returns The main object renderer of the frame graph, or null if not found
33
32
  */
@@ -35,10 +34,11 @@ export function FindMainObjectRenderer(frameGraph) {
35
34
  const objectRenderers = frameGraph.getTasksByType(FrameGraphObjectRendererTask);
36
35
  let fallbackRenderer = null;
37
36
  for (let i = objectRenderers.length - 1; i >= 0; --i) {
37
+ const meshes = objectRenderers[i].objectList.meshes;
38
38
  if (objectRenderers[i].isMainObjectRenderer) {
39
39
  return objectRenderers[i];
40
40
  }
41
- if (objectRenderers[i].objectList.meshes && !fallbackRenderer) {
41
+ if ((!meshes || meshes.length > 0) && !fallbackRenderer) {
42
42
  fallbackRenderer = objectRenderers[i];
43
43
  }
44
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"frameGraphUtils.js","sourceRoot":"","sources":["../../../../dev/core/src/FrameGraph/frameGraphUtils.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\n// eslint-disable-next-line import/no-internal-modules\r\nimport type { Camera, FrameGraph, Nullable } from \"core/index\";\r\nimport { FrameGraphObjectRendererTask } from \"core/FrameGraph/Tasks/Rendering/objectRendererTask\";\r\nimport { FrameGraphGeometryRendererTask } from \"core/FrameGraph/Tasks/Rendering/geometryRendererTask\";\r\nimport { FrameGraphUtilityLayerRendererTask } from \"core/FrameGraph/Tasks/Rendering/utilityLayerRendererTask\";\r\nimport { UtilityLayerRenderer } from \"core/Rendering/utilityLayerRenderer\";\r\n\r\n/**\r\n * Looks for the main camera used by the frame graph.\r\n * By default, this is the camera used by the main object renderer task.\r\n * If no such task, we try to find a camera in either a geometry renderer or a utility layer renderer tasks.\r\n * @param frameGraph The frame graph to search in\r\n * @returns The main camera used by the frame graph, or null if not found\r\n */\r\nexport function FindMainCamera(frameGraph: FrameGraph): Nullable<Camera> {\r\n const mainObjectRenderer = FrameGraphUtils.FindMainObjectRenderer(frameGraph);\r\n if (mainObjectRenderer) {\r\n return mainObjectRenderer.camera;\r\n }\r\n\r\n // Try to find a camera in either the geometry renderer or the utility layer renderer tasks\r\n const tasks = frameGraph.tasks;\r\n\r\n for (let i = tasks.length - 1; i >= 0; i--) {\r\n const task = tasks[i];\r\n if (task instanceof FrameGraphGeometryRendererTask || task instanceof FrameGraphUtilityLayerRendererTask) {\r\n return task.camera;\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Looks for the main object renderer task in the frame graph.\r\n * By default, this is the object renderer task with isMainObjectRenderer set to true.\r\n * If no such task, we return the last object renderer task that has an object list with meshes (or null if none found).\r\n * @param frameGraph The frame graph to search in\r\n * @returns The main object renderer of the frame graph, or null if not found\r\n */\r\nexport function FindMainObjectRenderer(frameGraph: FrameGraph): Nullable<FrameGraphObjectRendererTask> {\r\n const objectRenderers = frameGraph.getTasksByType<FrameGraphObjectRendererTask>(FrameGraphObjectRendererTask);\r\n\r\n let fallbackRenderer: Nullable<FrameGraphObjectRendererTask> = null;\r\n for (let i = objectRenderers.length - 1; i >= 0; --i) {\r\n if (objectRenderers[i].isMainObjectRenderer) {\r\n return objectRenderers[i];\r\n }\r\n if (objectRenderers[i].objectList.meshes && !fallbackRenderer) {\r\n fallbackRenderer = objectRenderers[i];\r\n }\r\n }\r\n return fallbackRenderer;\r\n}\r\n\r\n/**\r\n * Creates a utility layer renderer compatible with the given frame graph.\r\n * @param frameFraph The frame graph to create the utility layer renderer for\r\n * @param handleEvents True if the utility layer renderer should handle events, false otherwise (default is true)\r\n * @returns The created utility layer renderer\r\n */\r\nexport function CreateUtilityLayerRenderer(frameFraph: FrameGraph, handleEvents = true): UtilityLayerRenderer {\r\n const scene = frameFraph.scene;\r\n const layer = new UtilityLayerRenderer(scene, handleEvents, true);\r\n\r\n layer.utilityLayerScene.activeCamera = scene.activeCamera;\r\n\r\n let camera = FrameGraphUtils.FindMainCamera(scene.frameGraph!);\r\n\r\n if (!camera && scene.cameras.length > 0) {\r\n camera = scene.cameras[0];\r\n }\r\n\r\n if (camera) {\r\n layer.setRenderCamera(camera);\r\n layer.utilityLayerScene.activeCamera = camera;\r\n }\r\n\r\n const gizmoLayerRenderObserver = scene.onAfterRenderObservable.add(() => {\r\n layer.render();\r\n });\r\n\r\n layer.utilityLayerScene.onDisposeObservable.addOnce(() => {\r\n scene.onAfterRenderObservable.remove(gizmoLayerRenderObserver);\r\n });\r\n\r\n return layer;\r\n}\r\n\r\n/**\r\n * Class used to host frame graph specific utilities\r\n */\r\nexport const FrameGraphUtils = {\r\n /**\r\n * Looks for the main camera used by the frame graph.\r\n * We assume that the camera used by the the last rendering task in the graph is the main camera.\r\n * @param frameGraph The frame graph to search in\r\n * @returns The main camera used by the frame graph, or null if not found\r\n */\r\n FindMainCamera,\r\n\r\n /**\r\n * Looks for the main object renderer task in the frame graph.\r\n * We assume that the last object renderer task that has an object list with meshes is the main object renderer.\r\n * @param frameGraph The frame graph to search in\r\n * @returns The main object renderer of the frame graph, or null if not found\r\n */\r\n FindMainObjectRenderer,\r\n\r\n /**\r\n * Creates a utility layer renderer compatible with the given frame graph.\r\n * @param frameFraph The frame graph to create the utility layer renderer for\r\n * @param handleEvents True if the utility layer renderer should handle events, false otherwise\r\n * @returns The created utility layer renderer\r\n */\r\n CreateUtilityLayerRenderer,\r\n};\r\n"]}
1
+ {"version":3,"file":"frameGraphUtils.js","sourceRoot":"","sources":["../../../../dev/core/src/FrameGraph/frameGraphUtils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,4BAA4B,EAAE,gDAA2D;AAClG,OAAO,EAAE,kCAAkC,EAAE,sDAAiE;AAC9G,OAAO,EAAE,oBAAoB,EAAE,6CAA4C;AAE3E;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,UAAsB;IACjD,MAAM,kBAAkB,GAAG,eAAe,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAC9E,IAAI,kBAAkB,EAAE,CAAC;QACrB,OAAO,kBAAkB,CAAC,MAAM,CAAC;IACrC,CAAC;IAED,2DAA2D;IAC3D,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;IAE/B,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,IAAI,YAAY,kCAAkC,EAAE,CAAC;YACrD,OAAO,IAAI,CAAC,MAAM,CAAC;QACvB,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,UAAsB;IACzD,MAAM,eAAe,GAAG,UAAU,CAAC,cAAc,CAA+B,4BAA4B,CAAC,CAAC;IAE9G,IAAI,gBAAgB,GAA2C,IAAI,CAAC;IACpE,KAAK,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;QACpD,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC;YAC1C,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtD,gBAAgB,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC;IACL,CAAC;IACD,OAAO,gBAAgB,CAAC;AAC5B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,UAAsB,EAAE,YAAY,GAAG,IAAI;IAClF,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,oBAAoB,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;IAElE,KAAK,CAAC,iBAAiB,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;IAE1D,IAAI,MAAM,GAAG,eAAe,CAAC,cAAc,CAAC,KAAK,CAAC,UAAW,CAAC,CAAC;IAE/D,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACT,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC9B,KAAK,CAAC,iBAAiB,CAAC,YAAY,GAAG,MAAM,CAAC;IAClD,CAAC;IAED,MAAM,wBAAwB,GAAG,KAAK,CAAC,uBAAuB,CAAC,GAAG,CAAC,GAAG,EAAE;QACpE,KAAK,CAAC,MAAM,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE;QACrD,KAAK,CAAC,uBAAuB,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC3B;;;;;OAKG;IACH,cAAc;IAEd;;;;;OAKG;IACH,sBAAsB;IAEtB;;;;;OAKG;IACH,0BAA0B;CAC7B,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\n// eslint-disable-next-line import/no-internal-modules\r\nimport type { Camera, FrameGraph, Nullable } from \"core/index\";\r\nimport { FrameGraphObjectRendererTask } from \"core/FrameGraph/Tasks/Rendering/objectRendererTask\";\r\nimport { FrameGraphUtilityLayerRendererTask } from \"core/FrameGraph/Tasks/Rendering/utilityLayerRendererTask\";\r\nimport { UtilityLayerRenderer } from \"core/Rendering/utilityLayerRenderer\";\r\n\r\n/**\r\n * Looks for the main camera used by the frame graph.\r\n * By default, this is the camera used by the main object renderer task.\r\n * If no such task, we try to find a camera in either a geometry renderer or a utility layer renderer tasks.\r\n * @param frameGraph The frame graph to search in\r\n * @returns The main camera used by the frame graph, or null if not found\r\n */\r\nexport function FindMainCamera(frameGraph: FrameGraph): Nullable<Camera> {\r\n const mainObjectRenderer = FrameGraphUtils.FindMainObjectRenderer(frameGraph);\r\n if (mainObjectRenderer) {\r\n return mainObjectRenderer.camera;\r\n }\r\n\r\n // Try to find a camera in the utility layer renderer tasks\r\n const tasks = frameGraph.tasks;\r\n\r\n for (let i = tasks.length - 1; i >= 0; i--) {\r\n const task = tasks[i];\r\n if (task instanceof FrameGraphUtilityLayerRendererTask) {\r\n return task.camera;\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Looks for the main object renderer task in the frame graph.\r\n * By default, this is the object/geometry renderer task with isMainObjectRenderer set to true.\r\n * If no such task, we return the last object/geometry renderer task that has an object list with meshes (or null if none found).\r\n * @param frameGraph The frame graph to search in\r\n * @returns The main object renderer of the frame graph, or null if not found\r\n */\r\nexport function FindMainObjectRenderer(frameGraph: FrameGraph): Nullable<FrameGraphObjectRendererTask> {\r\n const objectRenderers = frameGraph.getTasksByType<FrameGraphObjectRendererTask>(FrameGraphObjectRendererTask);\r\n\r\n let fallbackRenderer: Nullable<FrameGraphObjectRendererTask> = null;\r\n for (let i = objectRenderers.length - 1; i >= 0; --i) {\r\n const meshes = objectRenderers[i].objectList.meshes;\r\n if (objectRenderers[i].isMainObjectRenderer) {\r\n return objectRenderers[i];\r\n }\r\n if ((!meshes || meshes.length > 0) && !fallbackRenderer) {\r\n fallbackRenderer = objectRenderers[i];\r\n }\r\n }\r\n return fallbackRenderer;\r\n}\r\n\r\n/**\r\n * Creates a utility layer renderer compatible with the given frame graph.\r\n * @param frameFraph The frame graph to create the utility layer renderer for\r\n * @param handleEvents True if the utility layer renderer should handle events, false otherwise (default is true)\r\n * @returns The created utility layer renderer\r\n */\r\nexport function CreateUtilityLayerRenderer(frameFraph: FrameGraph, handleEvents = true): UtilityLayerRenderer {\r\n const scene = frameFraph.scene;\r\n const layer = new UtilityLayerRenderer(scene, handleEvents, true);\r\n\r\n layer.utilityLayerScene.activeCamera = scene.activeCamera;\r\n\r\n let camera = FrameGraphUtils.FindMainCamera(scene.frameGraph!);\r\n\r\n if (!camera && scene.cameras.length > 0) {\r\n camera = scene.cameras[0];\r\n }\r\n\r\n if (camera) {\r\n layer.setRenderCamera(camera);\r\n layer.utilityLayerScene.activeCamera = camera;\r\n }\r\n\r\n const gizmoLayerRenderObserver = scene.onAfterRenderObservable.add(() => {\r\n layer.render();\r\n });\r\n\r\n layer.utilityLayerScene.onDisposeObservable.addOnce(() => {\r\n scene.onAfterRenderObservable.remove(gizmoLayerRenderObserver);\r\n });\r\n\r\n return layer;\r\n}\r\n\r\n/**\r\n * Class used to host frame graph specific utilities\r\n */\r\nexport const FrameGraphUtils = {\r\n /**\r\n * Looks for the main camera used by the frame graph.\r\n * We assume that the camera used by the the last rendering task in the graph is the main camera.\r\n * @param frameGraph The frame graph to search in\r\n * @returns The main camera used by the frame graph, or null if not found\r\n */\r\n FindMainCamera,\r\n\r\n /**\r\n * Looks for the main object renderer task in the frame graph.\r\n * We assume that the last object renderer task that has an object list with meshes is the main object renderer.\r\n * @param frameGraph The frame graph to search in\r\n * @returns The main object renderer of the frame graph, or null if not found\r\n */\r\n FindMainObjectRenderer,\r\n\r\n /**\r\n * Creates a utility layer renderer compatible with the given frame graph.\r\n * @param frameFraph The frame graph to create the utility layer renderer for\r\n * @param handleEvents True if the utility layer renderer should handle events, false otherwise\r\n * @returns The created utility layer renderer\r\n */\r\n CreateUtilityLayerRenderer,\r\n};\r\n"]}
@@ -28,6 +28,7 @@ export declare class InputManager {
28
28
  private _onPointerMove;
29
29
  private _onPointerDown;
30
30
  private _onPointerUp;
31
+ private _onPointerLockChange;
31
32
  private _initClickEvent;
32
33
  private _initActionManager;
33
34
  private _delayedSimpleClick;
@@ -152,7 +153,6 @@ export declare class InputManager {
152
153
  * @returns true if the pointer was captured
153
154
  */
154
155
  isPointerCaptured(pointerId?: number): boolean;
155
- private _onPointerLockChange;
156
156
  /**
157
157
  * Attach events to the canvas (To handle actionManagers triggers and raise onPointerMove, onPointerDown and onPointerUp
158
158
  * @param attachUp - defines if you want to attach events to pointerup
@@ -153,6 +153,8 @@ export class InputManager {
153
153
  if (this._cacheClientX !== null && this._cacheClientY !== null) {
154
154
  clientX = this._cacheClientX + evt.movementX;
155
155
  clientY = this._cacheClientY + evt.movementY;
156
+ this._cacheClientX = clientX;
157
+ this._cacheClientY = clientY;
156
158
  }
157
159
  }
158
160
  this._pointerX = clientX - canvasRect.left;
@@ -451,16 +453,6 @@ export class InputManager {
451
453
  isPointerCaptured(pointerId = 0) {
452
454
  return this._pointerCaptures[pointerId];
453
455
  }
454
- _onPointerLockChange(_) {
455
- if (this._isPointerLocked && this._originMouseEvent) {
456
- this._cacheClientX = this._originMouseEvent.clientX;
457
- this._cacheClientY = this._originMouseEvent.clientY;
458
- }
459
- else {
460
- this._cacheClientX = null;
461
- this._cacheClientY = null;
462
- }
463
- }
464
456
  /**
465
457
  * Attach events to the canvas (To handle actionManagers triggers and raise onPointerMove, onPointerDown and onPointerUp
466
458
  * @param attachUp - defines if you want to attach events to pointerup
@@ -481,6 +473,16 @@ export class InputManager {
481
473
  this._alreadyAttachedTo = elementToAttachTo;
482
474
  }
483
475
  this._deviceSourceManager = new DeviceSourceManager(engine);
476
+ this._onPointerLockChange = (_) => {
477
+ if (this._isPointerLocked && this._originMouseEvent) {
478
+ this._cacheClientX = this._originMouseEvent.clientX;
479
+ this._cacheClientY = this._originMouseEvent.clientY;
480
+ }
481
+ else {
482
+ this._cacheClientX = null;
483
+ this._cacheClientY = null;
484
+ }
485
+ };
484
486
  // Because this is only called from _initClickEvent, which is called in _onPointerUp, we'll use the pointerUpPredicate for the pick call
485
487
  this._initActionManager = (act) => {
486
488
  if (!this._meshPickProceed) {