@onerjs/core 8.30.7 → 8.30.9
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/AudioV2/abstractAudio/audioEngineV2.d.ts +0 -4
- package/AudioV2/abstractAudio/audioEngineV2.js +0 -4
- package/AudioV2/abstractAudio/audioEngineV2.js.map +1 -1
- package/AudioV2/abstractAudio/subNodes/volumeAudioSubNode.js +1 -1
- package/AudioV2/abstractAudio/subNodes/volumeAudioSubNode.js.map +1 -1
- package/AudioV2/audioParameter.d.ts +5 -1
- package/AudioV2/audioParameter.js +4 -0
- package/AudioV2/audioParameter.js.map +1 -1
- package/AudioV2/webAudio/components/webAudioParameterComponent.d.ts +0 -18
- package/AudioV2/webAudio/components/webAudioParameterComponent.js +7 -67
- package/AudioV2/webAudio/components/webAudioParameterComponent.js.map +1 -1
- package/Cameras/camera.js +1 -0
- package/Cameras/camera.js.map +1 -1
- package/Cameras/targetCamera.js +0 -4
- package/Cameras/targetCamera.js.map +1 -1
- package/Culling/ray.core.js +1 -1
- package/Culling/ray.core.js.map +1 -1
- package/Decorators/nodeDecorator.d.ts +9 -7
- package/Decorators/nodeDecorator.js +9 -7
- package/Decorators/nodeDecorator.js.map +1 -1
- package/Engines/WebGPU/webgpuTextureManager.js +2 -2
- package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
- package/Engines/abstractEngine.js +2 -2
- package/Engines/abstractEngine.js.map +1 -1
- package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.js +1 -1
- package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.js +1 -1
- package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.js +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.js +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.js +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.js +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.js +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/ssao2PostProcessBlock.js +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/ssao2PostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.js +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.d.ts +6 -0
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +26 -0
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.d.ts +6 -0
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js +48 -22
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Textures/clearBlock.js +3 -3
- package/FrameGraph/Node/Blocks/Textures/clearBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.js +1 -1
- package/FrameGraph/Node/Blocks/Textures/generateMipmapsBlock.js +1 -1
- package/FrameGraph/Node/Blocks/Textures/generateMipmapsBlock.js.map +1 -1
- package/FrameGraph/Node/nodeRenderGraph.js +2 -1
- package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
- package/FrameGraph/Passes/{cullPass.d.ts → objectListPass.d.ts} +8 -8
- package/FrameGraph/Passes/{cullPass.js → objectListPass.js} +9 -9
- package/FrameGraph/Passes/objectListPass.js.map +1 -0
- package/FrameGraph/Passes/renderPass.d.ts +6 -2
- package/FrameGraph/Passes/renderPass.js +14 -2
- package/FrameGraph/Passes/renderPass.js.map +1 -1
- package/FrameGraph/Tasks/Misc/cullObjectsTask.js +2 -2
- package/FrameGraph/Tasks/Misc/cullObjectsTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.d.ts +8 -0
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +10 -0
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/objectRendererTask.d.ts +8 -0
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js +13 -0
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Texture/clearTextureTask.d.ts +1 -1
- package/FrameGraph/Tasks/Texture/clearTextureTask.js +7 -5
- package/FrameGraph/Tasks/Texture/clearTextureTask.js.map +1 -1
- package/FrameGraph/frameGraph.d.ts +10 -4
- package/FrameGraph/frameGraph.js +22 -9
- package/FrameGraph/frameGraph.js.map +1 -1
- package/FrameGraph/frameGraphTask.js +3 -3
- package/FrameGraph/frameGraphTask.js.map +1 -1
- package/FrameGraph/index.d.ts +1 -1
- package/FrameGraph/index.js +1 -1
- package/FrameGraph/index.js.map +1 -1
- package/Materials/floatingOriginMatrixOverrides.js +19 -0
- package/Materials/floatingOriginMatrixOverrides.js.map +1 -1
- package/Materials/shaderMaterial.d.ts +9 -0
- package/Materials/shaderMaterial.js +35 -0
- package/Materials/shaderMaterial.js.map +1 -1
- package/Particles/EmitterTypes/coneParticleEmitter.d.ts +6 -4
- package/Particles/EmitterTypes/coneParticleEmitter.js +18 -12
- package/Particles/EmitterTypes/coneParticleEmitter.js.map +1 -1
- package/Particles/EmitterTypes/customParticleEmitter.d.ts +5 -3
- package/Particles/EmitterTypes/customParticleEmitter.js +8 -6
- package/Particles/EmitterTypes/customParticleEmitter.js.map +1 -1
- package/Particles/EmitterTypes/sphereParticleEmitter.d.ts +3 -1
- package/Particles/EmitterTypes/sphereParticleEmitter.js +7 -1
- package/Particles/EmitterTypes/sphereParticleEmitter.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/boxShapeBlock.d.ts +1 -1
- package/Particles/Node/Blocks/Emitters/boxShapeBlock.js +2 -1
- package/Particles/Node/Blocks/Emitters/boxShapeBlock.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/coneShapeBlock.d.ts +15 -4
- package/Particles/Node/Blocks/Emitters/coneShapeBlock.js +66 -36
- package/Particles/Node/Blocks/Emitters/coneShapeBlock.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/customShapeBlock.d.ts +13 -9
- package/Particles/Node/Blocks/Emitters/customShapeBlock.js +36 -23
- package/Particles/Node/Blocks/Emitters/customShapeBlock.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/cylinderShapeBlock.d.ts +10 -1
- package/Particles/Node/Blocks/Emitters/cylinderShapeBlock.js +50 -17
- package/Particles/Node/Blocks/Emitters/cylinderShapeBlock.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/emitters.functions.d.ts +6 -0
- package/Particles/Node/Blocks/Emitters/emitters.functions.js +13 -0
- package/Particles/Node/Blocks/Emitters/emitters.functions.js.map +1 -0
- package/Particles/Node/Blocks/Emitters/meshShapeBlock.d.ts +2 -2
- package/Particles/Node/Blocks/Emitters/meshShapeBlock.js +5 -1
- package/Particles/Node/Blocks/Emitters/meshShapeBlock.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/pointShapeBlock.d.ts +1 -1
- package/Particles/Node/Blocks/Emitters/pointShapeBlock.js +3 -1
- package/Particles/Node/Blocks/Emitters/pointShapeBlock.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/sphereShapeBlock.d.ts +16 -1
- package/Particles/Node/Blocks/Emitters/sphereShapeBlock.js +67 -14
- package/Particles/Node/Blocks/Emitters/sphereShapeBlock.js.map +1 -1
- package/Particles/Node/Blocks/particleInputBlock.js +1 -0
- package/Particles/Node/Blocks/particleInputBlock.js.map +1 -1
- package/Particles/Node/Blocks/systemBlock.d.ts +4 -4
- package/Particles/Node/Blocks/systemBlock.js +8 -12
- package/Particles/Node/Blocks/systemBlock.js.map +1 -1
- package/Particles/Node/Enums/nodeParticleContextualSources.d.ts +3 -1
- package/Particles/Node/Enums/nodeParticleContextualSources.js +2 -0
- package/Particles/Node/Enums/nodeParticleContextualSources.js.map +1 -1
- package/Particles/Node/nodeParticleBuildState.js +5 -0
- package/Particles/Node/nodeParticleBuildState.js.map +1 -1
- package/Particles/Node/nodeParticleSystemSet.helper.js +188 -27
- package/Particles/Node/nodeParticleSystemSet.helper.js.map +1 -1
- package/Particles/thinParticleSystem.function.d.ts +2 -2
- package/Particles/thinParticleSystem.function.js +2 -2
- package/Particles/thinParticleSystem.function.js.map +1 -1
- package/Particles/thinParticleSystem.js +1 -1
- package/Particles/thinParticleSystem.js.map +1 -1
- package/Rendering/prePassRenderer.js +4 -1
- package/Rendering/prePassRenderer.js.map +1 -1
- package/package.json +1 -1
- package/scene.d.ts +1 -3
- package/scene.js +8 -7
- package/scene.js.map +1 -1
- package/FrameGraph/Passes/cullPass.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssrPostProcessBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\r\n Scene,\r\n FrameGraph,\r\n NodeRenderGraphConnectionPoint,\r\n NodeRenderGraphBuildState,\r\n FrameGraphTextureHandle,\r\n Camera,\r\n NodeRenderGraphGeometryRendererBlock,\r\n} from \"core/index\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport { NodeRenderGraphBlockConnectionPointTypes } from \"../../Types/nodeRenderGraphTypes\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\nimport { FrameGraphSSRRenderingPipelineTask } from \"../../../Tasks/PostProcesses/ssrRenderingPipelineTask\";\r\nimport { NodeRenderGraphBasePostProcessBlock } from \"./basePostProcessBlock\";\r\n\r\n/**\r\n * Block that implements the SSR post process\r\n */\r\nexport class NodeRenderGraphSSRPostProcessBlock extends NodeRenderGraphBasePostProcessBlock {\r\n protected override _frameGraphTask: FrameGraphSSRRenderingPipelineTask;\r\n\r\n public override _additionalConstructionParameters: [number];\r\n\r\n /**\r\n * Gets the frame graph task associated with this block\r\n */\r\n public override get task() {\r\n return this._frameGraphTask;\r\n }\r\n\r\n /**\r\n * Create a new NodeRenderGraphSSRPostProcessBlock\r\n * @param name defines the block name\r\n * @param frameGraph defines the hosting frame graph\r\n * @param scene defines the hosting scene\r\n * @param textureType The texture type used by the different post processes created by SSR (default: Constants.TEXTURETYPE_UNSIGNED_BYTE)\r\n */\r\n public constructor(name: string, frameGraph: FrameGraph, scene: Scene, textureType = Constants.TEXTURETYPE_UNSIGNED_BYTE) {\r\n super(name, frameGraph, scene);\r\n\r\n this._additionalConstructionParameters = [textureType];\r\n\r\n this.registerInput(\"camera\", NodeRenderGraphBlockConnectionPointTypes.Camera);\r\n this.registerInput(\"geomDepth\", NodeRenderGraphBlockConnectionPointTypes.AutoDetect);\r\n this.registerInput(\"geomNormal\", NodeRenderGraphBlockConnectionPointTypes.AutoDetect);\r\n this.registerInput(\"geomReflectivity\", NodeRenderGraphBlockConnectionPointTypes.TextureReflectivity);\r\n this.registerInput(\"geomBackDepth\", NodeRenderGraphBlockConnectionPointTypes.AutoDetect, true);\r\n\r\n this.geomNormal.addExcludedConnectionPointFromAllowedTypes(\r\n NodeRenderGraphBlockConnectionPointTypes.TextureWorldNormal | NodeRenderGraphBlockConnectionPointTypes.TextureViewNormal\r\n );\r\n this.geomDepth.addExcludedConnectionPointFromAllowedTypes(\r\n NodeRenderGraphBlockConnectionPointTypes.TextureScreenDepth | NodeRenderGraphBlockConnectionPointTypes.TextureViewDepth\r\n );\r\n this.geomBackDepth.addExcludedConnectionPointFromAllowedTypes(\r\n NodeRenderGraphBlockConnectionPointTypes.TextureScreenDepth | NodeRenderGraphBlockConnectionPointTypes.TextureViewDepth\r\n );\r\n\r\n this._finalizeInputOutputRegistering();\r\n\r\n this._frameGraphTask = new FrameGraphSSRRenderingPipelineTask(this.name, frameGraph, textureType);\r\n }\r\n\r\n private _createTask(textureType: number) {\r\n const sourceSamplingMode = this.sourceSamplingMode;\r\n const maxDistance = this.maxDistance;\r\n const step = this.step;\r\n const thickness = this.thickness;\r\n const strength = this.strength;\r\n const reflectionSpecularFalloffExponent = this.reflectionSpecularFalloffExponent;\r\n const maxSteps = this.maxSteps;\r\n const roughnessFactor = this.roughnessFactor;\r\n const selfCollisionNumSkip = this.selfCollisionNumSkip;\r\n const reflectivityThreshold = this.reflectivityThreshold;\r\n const ssrDownsample = this.ssrDownsample;\r\n const blurDispersionStrength = this.blurDispersionStrength;\r\n const blurDownsample = this.blurDownsample;\r\n const enableSmoothReflections = this.enableSmoothReflections;\r\n const attenuateScreenBorders = this.attenuateScreenBorders;\r\n const attenuateIntersectionDistance = this.attenuateIntersectionDistance;\r\n const attenuateIntersectionIterations = this.attenuateIntersectionIterations;\r\n const attenuateFacingCamera = this.attenuateFacingCamera;\r\n const attenuateBackfaceReflection = this.attenuateBackfaceReflection;\r\n const clipToFrustum = this.clipToFrustum;\r\n const enableAutomaticThicknessComputation = this.enableAutomaticThicknessComputation;\r\n const useFresnel = this.useFresnel;\r\n const inputTextureColorIsInGammaSpace = this.inputTextureColorIsInGammaSpace;\r\n const generateOutputInGammaSpace = this.generateOutputInGammaSpace;\r\n const debug = this.debug;\r\n\r\n this._frameGraphTask.dispose();\r\n this._frameGraphTask = new FrameGraphSSRRenderingPipelineTask(this.name, this._frameGraph, textureType);\r\n\r\n this.sourceSamplingMode = sourceSamplingMode;\r\n this.maxDistance = maxDistance;\r\n this.step = step;\r\n this.thickness = thickness;\r\n this.strength = strength;\r\n this.reflectionSpecularFalloffExponent = reflectionSpecularFalloffExponent;\r\n this.maxSteps = maxSteps;\r\n this.roughnessFactor = roughnessFactor;\r\n this.selfCollisionNumSkip = selfCollisionNumSkip;\r\n this.reflectivityThreshold = reflectivityThreshold;\r\n this.ssrDownsample = ssrDownsample;\r\n this.blurDispersionStrength = blurDispersionStrength;\r\n this.blurDownsample = blurDownsample;\r\n this.enableSmoothReflections = enableSmoothReflections;\r\n this.attenuateScreenBorders = attenuateScreenBorders;\r\n this.attenuateIntersectionDistance = attenuateIntersectionDistance;\r\n this.attenuateIntersectionIterations = attenuateIntersectionIterations;\r\n this.attenuateFacingCamera = attenuateFacingCamera;\r\n this.attenuateBackfaceReflection = attenuateBackfaceReflection;\r\n this.clipToFrustum = clipToFrustum;\r\n this.useFresnel = useFresnel;\r\n this.enableAutomaticThicknessComputation = enableAutomaticThicknessComputation;\r\n this.inputTextureColorIsInGammaSpace = inputTextureColorIsInGammaSpace;\r\n this.generateOutputInGammaSpace = generateOutputInGammaSpace;\r\n this.debug = debug;\r\n\r\n this._additionalConstructionParameters = [textureType];\r\n }\r\n\r\n /** The texture type used by the different post processes created by SSR */\r\n @editableInPropertyPage(\"Texture type\", PropertyTypeForEdition.TextureType, \"SSR\")\r\n public get textureType() {\r\n return this._frameGraphTask.textureType;\r\n }\r\n\r\n public set textureType(value: number) {\r\n this._createTask(value);\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the effect should be rendered in debug mode */\r\n @editableInPropertyPage(\"Debug\", PropertyTypeForEdition.Boolean, \"SSR\")\r\n public get debug() {\r\n return this._frameGraphTask.ssr.debug;\r\n }\r\n\r\n public set debug(value: boolean) {\r\n this._frameGraphTask.ssr.debug = value;\r\n }\r\n\r\n /** Gets or sets the current reflection strength. 1.0 is an ideal value but can be increased/decreased for particular results */\r\n @editableInPropertyPage(\"Strength\", PropertyTypeForEdition.Float, \"SSR\", { min: 0, max: 5 })\r\n public get strength() {\r\n return this._frameGraphTask.ssr.strength;\r\n }\r\n\r\n public set strength(value: number) {\r\n this._frameGraphTask.ssr.strength = value;\r\n }\r\n\r\n /** Gets or sets the falloff exponent used to compute the reflection strength. Higher values lead to fainter reflections */\r\n @editableInPropertyPage(\"Reflection exponent\", PropertyTypeForEdition.Float, \"SSR\", { min: 0, max: 5 })\r\n public get reflectionSpecularFalloffExponent() {\r\n return this._frameGraphTask.ssr.reflectionSpecularFalloffExponent;\r\n }\r\n\r\n public set reflectionSpecularFalloffExponent(value: number) {\r\n this._frameGraphTask.ssr.reflectionSpecularFalloffExponent = value;\r\n }\r\n\r\n /** Gets or sets the minimum value for one of the reflectivity component of the material to consider it for SSR */\r\n @editableInPropertyPage(\"Reflectivity threshold\", PropertyTypeForEdition.Float, \"SSR\", { min: 0, max: 1 })\r\n public get reflectivityThreshold() {\r\n return this._frameGraphTask.ssr.reflectivityThreshold;\r\n }\r\n\r\n public set reflectivityThreshold(value: number) {\r\n this._frameGraphTask.ssr.reflectivityThreshold = value;\r\n }\r\n\r\n /** Gets or sets the thickness value used as tolerance when computing the intersection between the reflected ray and the scene */\r\n @editableInPropertyPage(\"Thickness\", PropertyTypeForEdition.Float, \"SSR\", { min: 0, max: 10 })\r\n public get thickness() {\r\n return this._frameGraphTask.ssr.thickness;\r\n }\r\n\r\n public set thickness(value: number) {\r\n this._frameGraphTask.ssr.thickness = value;\r\n }\r\n\r\n /** Gets or sets the step size used to iterate until the effect finds the color of the reflection's pixel */\r\n @editableInPropertyPage(\"Step\", PropertyTypeForEdition.Int, \"SSR\", { min: 1, max: 50 })\r\n public get step() {\r\n return this._frameGraphTask.ssr.step;\r\n }\r\n\r\n public set step(value: number) {\r\n this._frameGraphTask.ssr.step = value;\r\n }\r\n\r\n /** Gets or sets whether or not smoothing reflections is enabled */\r\n @editableInPropertyPage(\"Smooth reflections\", PropertyTypeForEdition.Boolean, \"SSR\")\r\n public get enableSmoothReflections() {\r\n return this._frameGraphTask.ssr.enableSmoothReflections;\r\n }\r\n\r\n public set enableSmoothReflections(value: boolean) {\r\n this._frameGraphTask.ssr.enableSmoothReflections = value;\r\n }\r\n\r\n /** Maximum number of steps during the ray marching process after which we consider an intersection could not be found */\r\n @editableInPropertyPage(\"Max steps\", PropertyTypeForEdition.Int, \"SSR\", { min: 1, max: 3000 })\r\n public get maxSteps() {\r\n return this._frameGraphTask.ssr.maxSteps;\r\n }\r\n\r\n public set maxSteps(value: number) {\r\n this._frameGraphTask.ssr.maxSteps = value;\r\n }\r\n\r\n /** Gets or sets the max distance used to define how far we look for reflection during the ray-marching on the reflected ray */\r\n @editableInPropertyPage(\"Max distance\", PropertyTypeForEdition.Float, \"SSR\", { min: 1, max: 3000 })\r\n public get maxDistance() {\r\n return this._frameGraphTask.ssr.maxDistance;\r\n }\r\n\r\n public set maxDistance(value: number) {\r\n this._frameGraphTask.ssr.maxDistance = value;\r\n }\r\n\r\n /** Gets or sets the factor applied when computing roughness */\r\n @editableInPropertyPage(\"Roughness factor\", PropertyTypeForEdition.Float, \"SSR\", { min: 0, max: 1 })\r\n public get roughnessFactor() {\r\n return this._frameGraphTask.ssr.roughnessFactor;\r\n }\r\n\r\n public set roughnessFactor(value: number) {\r\n this._frameGraphTask.ssr.roughnessFactor = value;\r\n }\r\n\r\n /** Number of steps to skip at start when marching the ray to avoid self collisions */\r\n @editableInPropertyPage(\"Self collision skips\", PropertyTypeForEdition.Int, \"SSR\", { min: 1, max: 10 })\r\n public get selfCollisionNumSkip() {\r\n return this._frameGraphTask.ssr.selfCollisionNumSkip;\r\n }\r\n\r\n public set selfCollisionNumSkip(value: number) {\r\n this._frameGraphTask.ssr.selfCollisionNumSkip = value;\r\n }\r\n\r\n /** Gets or sets the downsample factor used to reduce the size of the texture used to compute the SSR contribution */\r\n @editableInPropertyPage(\"SSR downsample\", PropertyTypeForEdition.Int, \"SSR\", { min: 0, max: 5 })\r\n public get ssrDownsample() {\r\n return this._frameGraphTask.ssr.ssrDownsample;\r\n }\r\n\r\n public set ssrDownsample(value: number) {\r\n this._frameGraphTask.ssr.ssrDownsample = value;\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the ray should be clipped to the frustum */\r\n @editableInPropertyPage(\"Clip to frustum\", PropertyTypeForEdition.Boolean, \"SSR\")\r\n public get clipToFrustum() {\r\n return this._frameGraphTask.ssr.clipToFrustum;\r\n }\r\n\r\n public set clipToFrustum(value: boolean) {\r\n this._frameGraphTask.ssr.clipToFrustum = value;\r\n }\r\n\r\n /** Gets or sets a boolean defining if geometry thickness should be computed automatically */\r\n @editableInPropertyPage(\"Automatic thickness computation\", PropertyTypeForEdition.Boolean, \"SSR\")\r\n public get enableAutomaticThicknessComputation() {\r\n return this._frameGraphTask.ssr.enableAutomaticThicknessComputation;\r\n }\r\n\r\n public set enableAutomaticThicknessComputation(value: boolean) {\r\n this._frameGraphTask.ssr.enableAutomaticThicknessComputation = value;\r\n }\r\n\r\n /** Gets or sets a boolean indicating whether the blending between the current color pixel and the reflection color should be done with a Fresnel coefficient */\r\n @editableInPropertyPage(\"Use Fresnel\", PropertyTypeForEdition.Boolean, \"SSR\")\r\n public get useFresnel() {\r\n return this._frameGraphTask.ssr.useFresnel;\r\n }\r\n\r\n public set useFresnel(value: boolean) {\r\n this._frameGraphTask.ssr.useFresnel = value;\r\n }\r\n\r\n /** Gets or sets the blur dispersion strength. Set this value to 0 to disable blurring */\r\n @editableInPropertyPage(\"Strength\", PropertyTypeForEdition.Float, \"Blur\", { min: 0, max: 0.15 })\r\n public get blurDispersionStrength() {\r\n return this._frameGraphTask.ssr.blurDispersionStrength;\r\n }\r\n\r\n public set blurDispersionStrength(value: number) {\r\n this._frameGraphTask.ssr.blurDispersionStrength = value;\r\n }\r\n\r\n /** Gets or sets the downsample factor used to reduce the size of the textures used to blur the reflection effect */\r\n @editableInPropertyPage(\"Blur downsample\", PropertyTypeForEdition.Int, \"Blur\", { min: 0, max: 5 })\r\n public get blurDownsample() {\r\n return this._frameGraphTask.ssr.blurDownsample;\r\n }\r\n\r\n public set blurDownsample(value: number) {\r\n this._frameGraphTask.ssr.blurDownsample = value;\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the reflections should be attenuated at the screen borders */\r\n @editableInPropertyPage(\"Screen borders\", PropertyTypeForEdition.Boolean, \"Attenuations\")\r\n public get attenuateScreenBorders() {\r\n return this._frameGraphTask.ssr.attenuateScreenBorders;\r\n }\r\n\r\n public set attenuateScreenBorders(value: boolean) {\r\n this._frameGraphTask.ssr.attenuateScreenBorders = value;\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the reflections should be attenuated according to the distance of the intersection */\r\n @editableInPropertyPage(\"Distance\", PropertyTypeForEdition.Boolean, \"Attenuations\")\r\n public get attenuateIntersectionDistance() {\r\n return this._frameGraphTask.ssr.attenuateIntersectionDistance;\r\n }\r\n\r\n public set attenuateIntersectionDistance(value: boolean) {\r\n this._frameGraphTask.ssr.attenuateIntersectionDistance = value;\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the reflections should be attenuated according to the number of iterations performed to find the intersection */\r\n @editableInPropertyPage(\"Step iterations\", PropertyTypeForEdition.Boolean, \"Attenuations\")\r\n public get attenuateIntersectionIterations() {\r\n return this._frameGraphTask.ssr.attenuateIntersectionIterations;\r\n }\r\n\r\n public set attenuateIntersectionIterations(value: boolean) {\r\n this._frameGraphTask.ssr.attenuateIntersectionIterations = value;\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the reflections should be attenuated when the reflection ray is facing the camera (the view direction) */\r\n @editableInPropertyPage(\"Facing camera\", PropertyTypeForEdition.Boolean, \"Attenuations\")\r\n public get attenuateFacingCamera() {\r\n return this._frameGraphTask.ssr.attenuateFacingCamera;\r\n }\r\n\r\n public set attenuateFacingCamera(value: boolean) {\r\n this._frameGraphTask.ssr.attenuateFacingCamera = value;\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the backface reflections should be attenuated */\r\n @editableInPropertyPage(\"Backface reflections\", PropertyTypeForEdition.Boolean, \"Attenuations\")\r\n public get attenuateBackfaceReflection() {\r\n return this._frameGraphTask.ssr.attenuateBackfaceReflection;\r\n }\r\n\r\n public set attenuateBackfaceReflection(value: boolean) {\r\n this._frameGraphTask.ssr.attenuateBackfaceReflection = value;\r\n }\r\n\r\n /** Gets or sets a boolean defining if the input color texture is in gamma space */\r\n @editableInPropertyPage(\"Input is in gamma space\", PropertyTypeForEdition.Boolean, \"Color space\")\r\n public get inputTextureColorIsInGammaSpace() {\r\n return this._frameGraphTask.ssr.inputTextureColorIsInGammaSpace;\r\n }\r\n\r\n public set inputTextureColorIsInGammaSpace(value: boolean) {\r\n this._frameGraphTask.ssr.inputTextureColorIsInGammaSpace = value;\r\n }\r\n\r\n /** Gets or sets a boolean defining if the output color texture generated by the SSR pipeline should be in gamma space */\r\n @editableInPropertyPage(\"Output to gamma space\", PropertyTypeForEdition.Boolean, \"Color space\")\r\n public get generateOutputInGammaSpace() {\r\n return this._frameGraphTask.ssr.generateOutputInGammaSpace;\r\n }\r\n\r\n public set generateOutputInGammaSpace(value: boolean) {\r\n this._frameGraphTask.ssr.generateOutputInGammaSpace = value;\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"NodeRenderGraphSSRPostProcessBlock\";\r\n }\r\n\r\n /**\r\n * Gets the camera input component\r\n */\r\n public get camera(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the geometry depth input component\r\n */\r\n public get geomDepth(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the geometry normal input component\r\n */\r\n public get geomNormal(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the geometry reflectivity input component\r\n */\r\n public get geomReflectivity(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[5];\r\n }\r\n\r\n /**\r\n * Gets the geometry back depth input component\r\n */\r\n public get geomBackDepth(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[6];\r\n }\r\n\r\n protected override _buildBlock(state: NodeRenderGraphBuildState) {\r\n super._buildBlock(state);\r\n\r\n this._frameGraphTask.normalTexture = this.geomNormal.connectedPoint?.value as FrameGraphTextureHandle;\r\n this._frameGraphTask.depthTexture = this.geomDepth.connectedPoint?.value as FrameGraphTextureHandle;\r\n this._frameGraphTask.reflectivityTexture = this.geomReflectivity.connectedPoint?.value as FrameGraphTextureHandle;\r\n this._frameGraphTask.backDepthTexture = this.geomBackDepth.connectedPoint?.value as FrameGraphTextureHandle;\r\n this._frameGraphTask.camera = this.camera.connectedPoint?.value as Camera;\r\n\r\n if (this.enableAutomaticThicknessComputation) {\r\n if (!this._frameGraphTask.backDepthTexture) {\r\n throw new Error(`SSR post process \"${this.name}\": Automatic thickness computation requires a back depth texture to be connected!`);\r\n }\r\n\r\n const geomBackDepthOwnerBlock = this.geomBackDepth.connectedPoint!.ownerBlock;\r\n if (geomBackDepthOwnerBlock.getClassName() === \"NodeRenderGraphGeometryRendererBlock\") {\r\n const geometryBackFaceRendererBlock = geomBackDepthOwnerBlock as NodeRenderGraphGeometryRendererBlock;\r\n if (!geometryBackFaceRendererBlock.reverseCulling) {\r\n throw new Error(\r\n `SSR post process \"${this.name}\": Automatic thickness computation requires the geometry renderer block for the back depth texture to have reverse culling enabled!`\r\n );\r\n }\r\n\r\n if (this._frameGraphTask.depthTexture) {\r\n const geomDepthOwnerBlock = this.geomDepth.connectedPoint!.ownerBlock;\r\n if (geomDepthOwnerBlock.getClassName() === \"NodeRenderGraphGeometryRendererBlock\") {\r\n const geomDepthConnectionPointType = this.geomDepth.connectedPoint!.type;\r\n const geomBackDepthConnectionPointType = this.geomBackDepth.connectedPoint!.type;\r\n\r\n if (geomDepthConnectionPointType !== geomBackDepthConnectionPointType) {\r\n throw new Error(\r\n `SSR post process \"${this.name}\": Automatic thickness computation requires that geomDepth and geomBackDepth have the same type (view or screen space depth)!`\r\n );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (this.geomNormal.connectedPoint) {\r\n if (this.geomNormal.connectedPoint.type === NodeRenderGraphBlockConnectionPointTypes.TextureWorldNormal) {\r\n this._frameGraphTask.ssr.normalsAreInWorldSpace = true;\r\n this._frameGraphTask.ssr.normalsAreUnsigned = true;\r\n }\r\n }\r\n if (this.geomDepth.connectedPoint) {\r\n if (this.geomDepth.connectedPoint.type === NodeRenderGraphBlockConnectionPointTypes.TextureScreenDepth) {\r\n this._frameGraphTask.ssr.useScreenspaceDepth = true;\r\n }\r\n }\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codes: string[] = [];\r\n codes.push(`${this._codeVariableName}.debug = ${this.debug};`);\r\n codes.push(`${this._codeVariableName}.strength = ${this.strength};`);\r\n codes.push(`${this._codeVariableName}.reflectionSpecularFalloffExponent = ${this.reflectionSpecularFalloffExponent};`);\r\n codes.push(`${this._codeVariableName}.reflectivityThreshold = ${this.reflectivityThreshold};`);\r\n codes.push(`${this._codeVariableName}.thickness = ${this.thickness};`);\r\n codes.push(`${this._codeVariableName}.step = ${this.step};`);\r\n codes.push(`${this._codeVariableName}.enableSmoothReflections = ${this.enableSmoothReflections};`);\r\n codes.push(`${this._codeVariableName}.maxSteps = ${this.maxSteps};`);\r\n codes.push(`${this._codeVariableName}.maxDistance = ${this.maxDistance};`);\r\n codes.push(`${this._codeVariableName}.roughnessFactor = ${this.roughnessFactor};`);\r\n codes.push(`${this._codeVariableName}.selfCollisionNumSkip = ${this.selfCollisionNumSkip};`);\r\n codes.push(`${this._codeVariableName}.ssrDownsample = ${this.ssrDownsample};`);\r\n codes.push(`${this._codeVariableName}.clipToFrustum = ${this.clipToFrustum};`);\r\n codes.push(`${this._codeVariableName}.useFresnel = ${this.useFresnel};`);\r\n codes.push(`${this._codeVariableName}.enableAutomaticThicknessComputation = ${this.enableAutomaticThicknessComputation};`);\r\n codes.push(`${this._codeVariableName}.blurDispersionStrength = ${this.blurDispersionStrength};`);\r\n codes.push(`${this._codeVariableName}.blurDownsample = ${this.blurDownsample};`);\r\n codes.push(`${this._codeVariableName}.attenuateScreenBorders = ${this.attenuateScreenBorders};`);\r\n codes.push(`${this._codeVariableName}.attenuateIntersectionDistance = ${this.attenuateIntersectionDistance};`);\r\n codes.push(`${this._codeVariableName}.attenuateIntersectionIterations = ${this.attenuateIntersectionIterations};`);\r\n codes.push(`${this._codeVariableName}.attenuateFacingCamera = ${this.attenuateFacingCamera};`);\r\n codes.push(`${this._codeVariableName}.attenuateBackfaceReflection = ${this.attenuateBackfaceReflection};`);\r\n codes.push(`${this._codeVariableName}.inputTextureColorIsInGammaSpace = ${this.inputTextureColorIsInGammaSpace};`);\r\n codes.push(`${this._codeVariableName}.generateOutputInGammaSpace = ${this.generateOutputInGammaSpace};`);\r\n return super._dumpPropertiesCode() + codes.join(\"\\n\");\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.debug = this.debug;\r\n serializationObject.strength = this.strength;\r\n serializationObject.reflectionSpecularFalloffExponent = this.reflectionSpecularFalloffExponent;\r\n serializationObject.reflectivityThreshold = this.reflectivityThreshold;\r\n serializationObject.thickness = this.thickness;\r\n serializationObject.step = this.step;\r\n serializationObject.enableSmoothReflections = this.enableSmoothReflections;\r\n serializationObject.maxSteps = this.maxSteps;\r\n serializationObject.maxDistance = this.maxDistance;\r\n serializationObject.roughnessFactor = this.roughnessFactor;\r\n serializationObject.selfCollisionNumSkip = this.selfCollisionNumSkip;\r\n serializationObject.ssrDownsample = this.ssrDownsample;\r\n serializationObject.clipToFrustum = this.clipToFrustum;\r\n serializationObject.useFresnel = this.useFresnel;\r\n serializationObject.enableAutomaticThicknessComputation = this.enableAutomaticThicknessComputation;\r\n serializationObject.blurDispersionStrength = this.blurDispersionStrength;\r\n serializationObject.blurDownsample = this.blurDownsample;\r\n serializationObject.attenuateScreenBorders = this.attenuateScreenBorders;\r\n serializationObject.attenuateIntersectionDistance = this.attenuateIntersectionDistance;\r\n serializationObject.attenuateIntersectionIterations = this.attenuateIntersectionIterations;\r\n serializationObject.attenuateFacingCamera = this.attenuateFacingCamera;\r\n serializationObject.attenuateBackfaceReflection = this.attenuateBackfaceReflection;\r\n serializationObject.inputTextureColorIsInGammaSpace = this.inputTextureColorIsInGammaSpace;\r\n serializationObject.generateOutputInGammaSpace = this.generateOutputInGammaSpace;\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n this.debug = serializationObject.debug;\r\n this.strength = serializationObject.strength;\r\n this.reflectionSpecularFalloffExponent = serializationObject.reflectionSpecularFalloffExponent;\r\n this.reflectivityThreshold = serializationObject.reflectivityThreshold;\r\n this.thickness = serializationObject.thickness;\r\n this.step = serializationObject.step;\r\n this.enableSmoothReflections = serializationObject.enableSmoothReflections;\r\n this.maxSteps = serializationObject.maxSteps;\r\n this.maxDistance = serializationObject.maxDistance;\r\n this.roughnessFactor = serializationObject.roughnessFactor;\r\n this.selfCollisionNumSkip = serializationObject.selfCollisionNumSkip;\r\n this.ssrDownsample = serializationObject.ssrDownsample;\r\n this.clipToFrustum = serializationObject.clipToFrustum;\r\n this.useFresnel = serializationObject.useFresnel;\r\n this.enableAutomaticThicknessComputation = serializationObject.enableAutomaticThicknessComputation;\r\n this.blurDispersionStrength = serializationObject.blurDispersionStrength;\r\n this.blurDownsample = serializationObject.blurDownsample;\r\n this.attenuateScreenBorders = serializationObject.attenuateScreenBorders;\r\n this.attenuateIntersectionDistance = serializationObject.attenuateIntersectionDistance;\r\n this.attenuateIntersectionIterations = serializationObject.attenuateIntersectionIterations;\r\n this.attenuateFacingCamera = serializationObject.attenuateFacingCamera;\r\n this.attenuateBackfaceReflection = serializationObject.attenuateBackfaceReflection;\r\n this.inputTextureColorIsInGammaSpace = serializationObject.inputTextureColorIsInGammaSpace;\r\n this.generateOutputInGammaSpace = serializationObject.generateOutputInGammaSpace;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.NodeRenderGraphSSRPostProcessBlock\", NodeRenderGraphSSRPostProcessBlock);\r\n"]}
|
|
1
|
+
{"version":3,"file":"ssrPostProcessBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\r\n Scene,\r\n FrameGraph,\r\n NodeRenderGraphConnectionPoint,\r\n NodeRenderGraphBuildState,\r\n FrameGraphTextureHandle,\r\n Camera,\r\n NodeRenderGraphGeometryRendererBlock,\r\n} from \"core/index\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport { NodeRenderGraphBlockConnectionPointTypes } from \"../../Types/nodeRenderGraphTypes\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\nimport { FrameGraphSSRRenderingPipelineTask } from \"../../../Tasks/PostProcesses/ssrRenderingPipelineTask\";\r\nimport { NodeRenderGraphBasePostProcessBlock } from \"./basePostProcessBlock\";\r\n\r\n/**\r\n * Block that implements the SSR post process\r\n */\r\nexport class NodeRenderGraphSSRPostProcessBlock extends NodeRenderGraphBasePostProcessBlock {\r\n protected override _frameGraphTask: FrameGraphSSRRenderingPipelineTask;\r\n\r\n public override _additionalConstructionParameters: [number];\r\n\r\n /**\r\n * Gets the frame graph task associated with this block\r\n */\r\n public override get task() {\r\n return this._frameGraphTask;\r\n }\r\n\r\n /**\r\n * Create a new NodeRenderGraphSSRPostProcessBlock\r\n * @param name defines the block name\r\n * @param frameGraph defines the hosting frame graph\r\n * @param scene defines the hosting scene\r\n * @param textureType The texture type used by the different post processes created by SSR (default: Constants.TEXTURETYPE_UNSIGNED_BYTE)\r\n */\r\n public constructor(name: string, frameGraph: FrameGraph, scene: Scene, textureType = Constants.TEXTURETYPE_UNSIGNED_BYTE) {\r\n super(name, frameGraph, scene);\r\n\r\n this._additionalConstructionParameters = [textureType];\r\n\r\n this.registerInput(\"camera\", NodeRenderGraphBlockConnectionPointTypes.Camera);\r\n this.registerInput(\"geomDepth\", NodeRenderGraphBlockConnectionPointTypes.AutoDetect);\r\n this.registerInput(\"geomNormal\", NodeRenderGraphBlockConnectionPointTypes.AutoDetect);\r\n this.registerInput(\"geomReflectivity\", NodeRenderGraphBlockConnectionPointTypes.TextureReflectivity);\r\n this.registerInput(\"geomBackDepth\", NodeRenderGraphBlockConnectionPointTypes.AutoDetect, true);\r\n\r\n this.geomNormal.addExcludedConnectionPointFromAllowedTypes(\r\n NodeRenderGraphBlockConnectionPointTypes.TextureWorldNormal | NodeRenderGraphBlockConnectionPointTypes.TextureViewNormal\r\n );\r\n this.geomDepth.addExcludedConnectionPointFromAllowedTypes(\r\n NodeRenderGraphBlockConnectionPointTypes.TextureScreenDepth | NodeRenderGraphBlockConnectionPointTypes.TextureViewDepth\r\n );\r\n this.geomBackDepth.addExcludedConnectionPointFromAllowedTypes(\r\n NodeRenderGraphBlockConnectionPointTypes.TextureScreenDepth | NodeRenderGraphBlockConnectionPointTypes.TextureViewDepth\r\n );\r\n\r\n this._finalizeInputOutputRegistering();\r\n\r\n this._frameGraphTask = new FrameGraphSSRRenderingPipelineTask(this.name, frameGraph, textureType);\r\n }\r\n\r\n private _createTask(textureType: number) {\r\n const sourceSamplingMode = this.sourceSamplingMode;\r\n const maxDistance = this.maxDistance;\r\n const step = this.step;\r\n const thickness = this.thickness;\r\n const strength = this.strength;\r\n const reflectionSpecularFalloffExponent = this.reflectionSpecularFalloffExponent;\r\n const maxSteps = this.maxSteps;\r\n const roughnessFactor = this.roughnessFactor;\r\n const selfCollisionNumSkip = this.selfCollisionNumSkip;\r\n const reflectivityThreshold = this.reflectivityThreshold;\r\n const ssrDownsample = this.ssrDownsample;\r\n const blurDispersionStrength = this.blurDispersionStrength;\r\n const blurDownsample = this.blurDownsample;\r\n const enableSmoothReflections = this.enableSmoothReflections;\r\n const attenuateScreenBorders = this.attenuateScreenBorders;\r\n const attenuateIntersectionDistance = this.attenuateIntersectionDistance;\r\n const attenuateIntersectionIterations = this.attenuateIntersectionIterations;\r\n const attenuateFacingCamera = this.attenuateFacingCamera;\r\n const attenuateBackfaceReflection = this.attenuateBackfaceReflection;\r\n const clipToFrustum = this.clipToFrustum;\r\n const enableAutomaticThicknessComputation = this.enableAutomaticThicknessComputation;\r\n const useFresnel = this.useFresnel;\r\n const inputTextureColorIsInGammaSpace = this.inputTextureColorIsInGammaSpace;\r\n const generateOutputInGammaSpace = this.generateOutputInGammaSpace;\r\n const debug = this.debug;\r\n\r\n this._frameGraphTask.dispose();\r\n this._frameGraphTask = new FrameGraphSSRRenderingPipelineTask(this.name, this._frameGraph, textureType);\r\n\r\n this.sourceSamplingMode = sourceSamplingMode;\r\n this.maxDistance = maxDistance;\r\n this.step = step;\r\n this.thickness = thickness;\r\n this.strength = strength;\r\n this.reflectionSpecularFalloffExponent = reflectionSpecularFalloffExponent;\r\n this.maxSteps = maxSteps;\r\n this.roughnessFactor = roughnessFactor;\r\n this.selfCollisionNumSkip = selfCollisionNumSkip;\r\n this.reflectivityThreshold = reflectivityThreshold;\r\n this.ssrDownsample = ssrDownsample;\r\n this.blurDispersionStrength = blurDispersionStrength;\r\n this.blurDownsample = blurDownsample;\r\n this.enableSmoothReflections = enableSmoothReflections;\r\n this.attenuateScreenBorders = attenuateScreenBorders;\r\n this.attenuateIntersectionDistance = attenuateIntersectionDistance;\r\n this.attenuateIntersectionIterations = attenuateIntersectionIterations;\r\n this.attenuateFacingCamera = attenuateFacingCamera;\r\n this.attenuateBackfaceReflection = attenuateBackfaceReflection;\r\n this.clipToFrustum = clipToFrustum;\r\n this.useFresnel = useFresnel;\r\n this.enableAutomaticThicknessComputation = enableAutomaticThicknessComputation;\r\n this.inputTextureColorIsInGammaSpace = inputTextureColorIsInGammaSpace;\r\n this.generateOutputInGammaSpace = generateOutputInGammaSpace;\r\n this.debug = debug;\r\n\r\n this._additionalConstructionParameters = [textureType];\r\n }\r\n\r\n /** The texture type used by the different post processes created by SSR */\r\n @editableInPropertyPage(\"Texture type\", PropertyTypeForEdition.TextureType, \"SSR\")\r\n public get textureType() {\r\n return this._frameGraphTask.textureType;\r\n }\r\n\r\n public set textureType(value: number) {\r\n this._createTask(value);\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the effect should be rendered in debug mode */\r\n @editableInPropertyPage(\"Debug\", PropertyTypeForEdition.Boolean, \"SSR\")\r\n public get debug() {\r\n return this._frameGraphTask.ssr.debug;\r\n }\r\n\r\n public set debug(value: boolean) {\r\n this._frameGraphTask.ssr.debug = value;\r\n }\r\n\r\n /** Gets or sets the current reflection strength. 1.0 is an ideal value but can be increased/decreased for particular results */\r\n @editableInPropertyPage(\"Strength\", PropertyTypeForEdition.Float, \"SSR\", { min: 0, max: 5 })\r\n public get strength() {\r\n return this._frameGraphTask.ssr.strength;\r\n }\r\n\r\n public set strength(value: number) {\r\n this._frameGraphTask.ssr.strength = value;\r\n }\r\n\r\n /** Gets or sets the falloff exponent used to compute the reflection strength. Higher values lead to fainter reflections */\r\n @editableInPropertyPage(\"Reflection exponent\", PropertyTypeForEdition.Float, \"SSR\", { min: 0, max: 5 })\r\n public get reflectionSpecularFalloffExponent() {\r\n return this._frameGraphTask.ssr.reflectionSpecularFalloffExponent;\r\n }\r\n\r\n public set reflectionSpecularFalloffExponent(value: number) {\r\n this._frameGraphTask.ssr.reflectionSpecularFalloffExponent = value;\r\n }\r\n\r\n /** Gets or sets the minimum value for one of the reflectivity component of the material to consider it for SSR */\r\n @editableInPropertyPage(\"Reflectivity threshold\", PropertyTypeForEdition.Float, \"SSR\", { min: 0, max: 1 })\r\n public get reflectivityThreshold() {\r\n return this._frameGraphTask.ssr.reflectivityThreshold;\r\n }\r\n\r\n public set reflectivityThreshold(value: number) {\r\n this._frameGraphTask.ssr.reflectivityThreshold = value;\r\n }\r\n\r\n /** Gets or sets the thickness value used as tolerance when computing the intersection between the reflected ray and the scene */\r\n @editableInPropertyPage(\"Thickness\", PropertyTypeForEdition.Float, \"SSR\", { min: 0, max: 10 })\r\n public get thickness() {\r\n return this._frameGraphTask.ssr.thickness;\r\n }\r\n\r\n public set thickness(value: number) {\r\n this._frameGraphTask.ssr.thickness = value;\r\n }\r\n\r\n /** Gets or sets the step size used to iterate until the effect finds the color of the reflection's pixel */\r\n @editableInPropertyPage(\"Step\", PropertyTypeForEdition.Int, \"SSR\", { min: 1, max: 50 })\r\n public get step() {\r\n return this._frameGraphTask.ssr.step;\r\n }\r\n\r\n public set step(value: number) {\r\n this._frameGraphTask.ssr.step = value;\r\n }\r\n\r\n /** Gets or sets whether or not smoothing reflections is enabled */\r\n @editableInPropertyPage(\"Smooth reflections\", PropertyTypeForEdition.Boolean, \"SSR\")\r\n public get enableSmoothReflections() {\r\n return this._frameGraphTask.ssr.enableSmoothReflections;\r\n }\r\n\r\n public set enableSmoothReflections(value: boolean) {\r\n this._frameGraphTask.ssr.enableSmoothReflections = value;\r\n }\r\n\r\n /** Maximum number of steps during the ray marching process after which we consider an intersection could not be found */\r\n @editableInPropertyPage(\"Max steps\", PropertyTypeForEdition.Int, \"SSR\", { min: 1, max: 3000 })\r\n public get maxSteps() {\r\n return this._frameGraphTask.ssr.maxSteps;\r\n }\r\n\r\n public set maxSteps(value: number) {\r\n this._frameGraphTask.ssr.maxSteps = value;\r\n }\r\n\r\n /** Gets or sets the max distance used to define how far we look for reflection during the ray-marching on the reflected ray */\r\n @editableInPropertyPage(\"Max distance\", PropertyTypeForEdition.Float, \"SSR\", { min: 1, max: 3000 })\r\n public get maxDistance() {\r\n return this._frameGraphTask.ssr.maxDistance;\r\n }\r\n\r\n public set maxDistance(value: number) {\r\n this._frameGraphTask.ssr.maxDistance = value;\r\n }\r\n\r\n /** Gets or sets the factor applied when computing roughness */\r\n @editableInPropertyPage(\"Roughness factor\", PropertyTypeForEdition.Float, \"SSR\", { min: 0, max: 1 })\r\n public get roughnessFactor() {\r\n return this._frameGraphTask.ssr.roughnessFactor;\r\n }\r\n\r\n public set roughnessFactor(value: number) {\r\n this._frameGraphTask.ssr.roughnessFactor = value;\r\n }\r\n\r\n /** Number of steps to skip at start when marching the ray to avoid self collisions */\r\n @editableInPropertyPage(\"Self collision skips\", PropertyTypeForEdition.Int, \"SSR\", { min: 1, max: 10 })\r\n public get selfCollisionNumSkip() {\r\n return this._frameGraphTask.ssr.selfCollisionNumSkip;\r\n }\r\n\r\n public set selfCollisionNumSkip(value: number) {\r\n this._frameGraphTask.ssr.selfCollisionNumSkip = value;\r\n }\r\n\r\n /** Gets or sets the downsample factor used to reduce the size of the texture used to compute the SSR contribution */\r\n @editableInPropertyPage(\"SSR downsample\", PropertyTypeForEdition.Int, \"SSR\", { min: 0, max: 5 })\r\n public get ssrDownsample() {\r\n return this._frameGraphTask.ssr.ssrDownsample;\r\n }\r\n\r\n public set ssrDownsample(value: number) {\r\n this._frameGraphTask.ssr.ssrDownsample = value;\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the ray should be clipped to the frustum */\r\n @editableInPropertyPage(\"Clip to frustum\", PropertyTypeForEdition.Boolean, \"SSR\")\r\n public get clipToFrustum() {\r\n return this._frameGraphTask.ssr.clipToFrustum;\r\n }\r\n\r\n public set clipToFrustum(value: boolean) {\r\n this._frameGraphTask.ssr.clipToFrustum = value;\r\n }\r\n\r\n /** Gets or sets a boolean defining if geometry thickness should be computed automatically */\r\n @editableInPropertyPage(\"Automatic thickness computation\", PropertyTypeForEdition.Boolean, \"SSR\")\r\n public get enableAutomaticThicknessComputation() {\r\n return this._frameGraphTask.ssr.enableAutomaticThicknessComputation;\r\n }\r\n\r\n public set enableAutomaticThicknessComputation(value: boolean) {\r\n this._frameGraphTask.ssr.enableAutomaticThicknessComputation = value;\r\n }\r\n\r\n /** Gets or sets a boolean indicating whether the blending between the current color pixel and the reflection color should be done with a Fresnel coefficient */\r\n @editableInPropertyPage(\"Use Fresnel\", PropertyTypeForEdition.Boolean, \"SSR\")\r\n public get useFresnel() {\r\n return this._frameGraphTask.ssr.useFresnel;\r\n }\r\n\r\n public set useFresnel(value: boolean) {\r\n this._frameGraphTask.ssr.useFresnel = value;\r\n }\r\n\r\n /** Gets or sets the blur dispersion strength. Set this value to 0 to disable blurring */\r\n @editableInPropertyPage(\"Strength\", PropertyTypeForEdition.Float, \"Blur\", { min: 0, max: 0.15 })\r\n public get blurDispersionStrength() {\r\n return this._frameGraphTask.ssr.blurDispersionStrength;\r\n }\r\n\r\n public set blurDispersionStrength(value: number) {\r\n this._frameGraphTask.ssr.blurDispersionStrength = value;\r\n }\r\n\r\n /** Gets or sets the downsample factor used to reduce the size of the textures used to blur the reflection effect */\r\n @editableInPropertyPage(\"Blur downsample\", PropertyTypeForEdition.Int, \"Blur\", { min: 0, max: 5 })\r\n public get blurDownsample() {\r\n return this._frameGraphTask.ssr.blurDownsample;\r\n }\r\n\r\n public set blurDownsample(value: number) {\r\n this._frameGraphTask.ssr.blurDownsample = value;\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the reflections should be attenuated at the screen borders */\r\n @editableInPropertyPage(\"Screen borders\", PropertyTypeForEdition.Boolean, \"Attenuations\")\r\n public get attenuateScreenBorders() {\r\n return this._frameGraphTask.ssr.attenuateScreenBorders;\r\n }\r\n\r\n public set attenuateScreenBorders(value: boolean) {\r\n this._frameGraphTask.ssr.attenuateScreenBorders = value;\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the reflections should be attenuated according to the distance of the intersection */\r\n @editableInPropertyPage(\"Distance\", PropertyTypeForEdition.Boolean, \"Attenuations\")\r\n public get attenuateIntersectionDistance() {\r\n return this._frameGraphTask.ssr.attenuateIntersectionDistance;\r\n }\r\n\r\n public set attenuateIntersectionDistance(value: boolean) {\r\n this._frameGraphTask.ssr.attenuateIntersectionDistance = value;\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the reflections should be attenuated according to the number of iterations performed to find the intersection */\r\n @editableInPropertyPage(\"Step iterations\", PropertyTypeForEdition.Boolean, \"Attenuations\")\r\n public get attenuateIntersectionIterations() {\r\n return this._frameGraphTask.ssr.attenuateIntersectionIterations;\r\n }\r\n\r\n public set attenuateIntersectionIterations(value: boolean) {\r\n this._frameGraphTask.ssr.attenuateIntersectionIterations = value;\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the reflections should be attenuated when the reflection ray is facing the camera (the view direction) */\r\n @editableInPropertyPage(\"Facing camera\", PropertyTypeForEdition.Boolean, \"Attenuations\")\r\n public get attenuateFacingCamera() {\r\n return this._frameGraphTask.ssr.attenuateFacingCamera;\r\n }\r\n\r\n public set attenuateFacingCamera(value: boolean) {\r\n this._frameGraphTask.ssr.attenuateFacingCamera = value;\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the backface reflections should be attenuated */\r\n @editableInPropertyPage(\"Backface reflections\", PropertyTypeForEdition.Boolean, \"Attenuations\")\r\n public get attenuateBackfaceReflection() {\r\n return this._frameGraphTask.ssr.attenuateBackfaceReflection;\r\n }\r\n\r\n public set attenuateBackfaceReflection(value: boolean) {\r\n this._frameGraphTask.ssr.attenuateBackfaceReflection = value;\r\n }\r\n\r\n /** Gets or sets a boolean defining if the input color texture is in gamma space */\r\n @editableInPropertyPage(\"Input is in gamma space\", PropertyTypeForEdition.Boolean, \"Color space\")\r\n public get inputTextureColorIsInGammaSpace() {\r\n return this._frameGraphTask.ssr.inputTextureColorIsInGammaSpace;\r\n }\r\n\r\n public set inputTextureColorIsInGammaSpace(value: boolean) {\r\n this._frameGraphTask.ssr.inputTextureColorIsInGammaSpace = value;\r\n }\r\n\r\n /** Gets or sets a boolean defining if the output color texture generated by the SSR pipeline should be in gamma space */\r\n @editableInPropertyPage(\"Output to gamma space\", PropertyTypeForEdition.Boolean, \"Color space\")\r\n public get generateOutputInGammaSpace() {\r\n return this._frameGraphTask.ssr.generateOutputInGammaSpace;\r\n }\r\n\r\n public set generateOutputInGammaSpace(value: boolean) {\r\n this._frameGraphTask.ssr.generateOutputInGammaSpace = value;\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"NodeRenderGraphSSRPostProcessBlock\";\r\n }\r\n\r\n /**\r\n * Gets the camera input component\r\n */\r\n public get camera(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the geometry depth input component\r\n */\r\n public get geomDepth(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the geometry normal input component\r\n */\r\n public get geomNormal(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the geometry reflectivity input component\r\n */\r\n public get geomReflectivity(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[5];\r\n }\r\n\r\n /**\r\n * Gets the geometry back depth input component\r\n */\r\n public get geomBackDepth(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[6];\r\n }\r\n\r\n protected override _buildBlock(state: NodeRenderGraphBuildState) {\r\n super._buildBlock(state);\r\n\r\n this._frameGraphTask.normalTexture = this.geomNormal.connectedPoint?.value as FrameGraphTextureHandle;\r\n this._frameGraphTask.depthTexture = this.geomDepth.connectedPoint?.value as FrameGraphTextureHandle;\r\n this._frameGraphTask.reflectivityTexture = this.geomReflectivity.connectedPoint?.value as FrameGraphTextureHandle;\r\n this._frameGraphTask.backDepthTexture = this.geomBackDepth.connectedPoint?.value as FrameGraphTextureHandle;\r\n this._frameGraphTask.camera = this.camera.connectedPoint?.value as Camera;\r\n\r\n if (this.enableAutomaticThicknessComputation) {\r\n if (!this._frameGraphTask.backDepthTexture) {\r\n throw new Error(`SSR post process \"${this.name}\": Automatic thickness computation requires a back depth texture to be connected!`);\r\n }\r\n\r\n const geomBackDepthOwnerBlock = this.geomBackDepth.connectedPoint!.ownerBlock;\r\n if (geomBackDepthOwnerBlock.getClassName() === \"NodeRenderGraphGeometryRendererBlock\") {\r\n const geometryBackFaceRendererBlock = geomBackDepthOwnerBlock as NodeRenderGraphGeometryRendererBlock;\r\n if (!geometryBackFaceRendererBlock.reverseCulling) {\r\n throw new Error(\r\n `SSR post process \"${this.name}\": Automatic thickness computation requires the geometry renderer block for the back depth texture to have reverse culling enabled!`\r\n );\r\n }\r\n\r\n if (this._frameGraphTask.depthTexture) {\r\n const geomDepthOwnerBlock = this.geomDepth.connectedPoint!.ownerBlock;\r\n if (geomDepthOwnerBlock.getClassName() === \"NodeRenderGraphGeometryRendererBlock\") {\r\n const geomDepthConnectionPointType = this.geomDepth.connectedPoint!.type;\r\n const geomBackDepthConnectionPointType = this.geomBackDepth.connectedPoint!.type;\r\n\r\n if (geomDepthConnectionPointType !== geomBackDepthConnectionPointType) {\r\n throw new Error(\r\n `SSR post process \"${this.name}\": Automatic thickness computation requires that geomDepth and geomBackDepth have the same type (view or screen space depth)!`\r\n );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (this.geomNormal.connectedPoint) {\r\n if (this.geomNormal.connectedPoint.type === NodeRenderGraphBlockConnectionPointTypes.TextureWorldNormal) {\r\n this._frameGraphTask.ssr.normalsAreInWorldSpace = true;\r\n this._frameGraphTask.ssr.normalsAreUnsigned = true;\r\n }\r\n }\r\n if (this.geomDepth.connectedPoint) {\r\n if (this.geomDepth.connectedPoint.type === NodeRenderGraphBlockConnectionPointTypes.TextureScreenDepth) {\r\n this._frameGraphTask.ssr.useScreenspaceDepth = true;\r\n }\r\n }\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codes: string[] = [];\r\n codes.push(`${this._codeVariableName}.debug = ${this.debug};`);\r\n codes.push(`${this._codeVariableName}.strength = ${this.strength};`);\r\n codes.push(`${this._codeVariableName}.reflectionSpecularFalloffExponent = ${this.reflectionSpecularFalloffExponent};`);\r\n codes.push(`${this._codeVariableName}.reflectivityThreshold = ${this.reflectivityThreshold};`);\r\n codes.push(`${this._codeVariableName}.thickness = ${this.thickness};`);\r\n codes.push(`${this._codeVariableName}.step = ${this.step};`);\r\n codes.push(`${this._codeVariableName}.enableSmoothReflections = ${this.enableSmoothReflections};`);\r\n codes.push(`${this._codeVariableName}.maxSteps = ${this.maxSteps};`);\r\n codes.push(`${this._codeVariableName}.maxDistance = ${this.maxDistance};`);\r\n codes.push(`${this._codeVariableName}.roughnessFactor = ${this.roughnessFactor};`);\r\n codes.push(`${this._codeVariableName}.selfCollisionNumSkip = ${this.selfCollisionNumSkip};`);\r\n codes.push(`${this._codeVariableName}.ssrDownsample = ${this.ssrDownsample};`);\r\n codes.push(`${this._codeVariableName}.clipToFrustum = ${this.clipToFrustum};`);\r\n codes.push(`${this._codeVariableName}.useFresnel = ${this.useFresnel};`);\r\n codes.push(`${this._codeVariableName}.enableAutomaticThicknessComputation = ${this.enableAutomaticThicknessComputation};`);\r\n codes.push(`${this._codeVariableName}.blurDispersionStrength = ${this.blurDispersionStrength};`);\r\n codes.push(`${this._codeVariableName}.blurDownsample = ${this.blurDownsample};`);\r\n codes.push(`${this._codeVariableName}.attenuateScreenBorders = ${this.attenuateScreenBorders};`);\r\n codes.push(`${this._codeVariableName}.attenuateIntersectionDistance = ${this.attenuateIntersectionDistance};`);\r\n codes.push(`${this._codeVariableName}.attenuateIntersectionIterations = ${this.attenuateIntersectionIterations};`);\r\n codes.push(`${this._codeVariableName}.attenuateFacingCamera = ${this.attenuateFacingCamera};`);\r\n codes.push(`${this._codeVariableName}.attenuateBackfaceReflection = ${this.attenuateBackfaceReflection};`);\r\n codes.push(`${this._codeVariableName}.inputTextureColorIsInGammaSpace = ${this.inputTextureColorIsInGammaSpace};`);\r\n codes.push(`${this._codeVariableName}.generateOutputInGammaSpace = ${this.generateOutputInGammaSpace};`);\r\n return super._dumpPropertiesCode() + codes.join(\"\\n\");\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.debug = this.debug;\r\n serializationObject.strength = this.strength;\r\n serializationObject.reflectionSpecularFalloffExponent = this.reflectionSpecularFalloffExponent;\r\n serializationObject.reflectivityThreshold = this.reflectivityThreshold;\r\n serializationObject.thickness = this.thickness;\r\n serializationObject.step = this.step;\r\n serializationObject.enableSmoothReflections = this.enableSmoothReflections;\r\n serializationObject.maxSteps = this.maxSteps;\r\n serializationObject.maxDistance = this.maxDistance;\r\n serializationObject.roughnessFactor = this.roughnessFactor;\r\n serializationObject.selfCollisionNumSkip = this.selfCollisionNumSkip;\r\n serializationObject.ssrDownsample = this.ssrDownsample;\r\n serializationObject.clipToFrustum = this.clipToFrustum;\r\n serializationObject.useFresnel = this.useFresnel;\r\n serializationObject.enableAutomaticThicknessComputation = this.enableAutomaticThicknessComputation;\r\n serializationObject.blurDispersionStrength = this.blurDispersionStrength;\r\n serializationObject.blurDownsample = this.blurDownsample;\r\n serializationObject.attenuateScreenBorders = this.attenuateScreenBorders;\r\n serializationObject.attenuateIntersectionDistance = this.attenuateIntersectionDistance;\r\n serializationObject.attenuateIntersectionIterations = this.attenuateIntersectionIterations;\r\n serializationObject.attenuateFacingCamera = this.attenuateFacingCamera;\r\n serializationObject.attenuateBackfaceReflection = this.attenuateBackfaceReflection;\r\n serializationObject.inputTextureColorIsInGammaSpace = this.inputTextureColorIsInGammaSpace;\r\n serializationObject.generateOutputInGammaSpace = this.generateOutputInGammaSpace;\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n this.debug = serializationObject.debug;\r\n this.strength = serializationObject.strength;\r\n this.reflectionSpecularFalloffExponent = serializationObject.reflectionSpecularFalloffExponent;\r\n this.reflectivityThreshold = serializationObject.reflectivityThreshold;\r\n this.thickness = serializationObject.thickness;\r\n this.step = serializationObject.step;\r\n this.enableSmoothReflections = serializationObject.enableSmoothReflections;\r\n this.maxSteps = serializationObject.maxSteps;\r\n this.maxDistance = serializationObject.maxDistance;\r\n this.roughnessFactor = serializationObject.roughnessFactor;\r\n this.selfCollisionNumSkip = serializationObject.selfCollisionNumSkip;\r\n this.ssrDownsample = serializationObject.ssrDownsample;\r\n this.clipToFrustum = serializationObject.clipToFrustum;\r\n this.useFresnel = serializationObject.useFresnel;\r\n this.enableAutomaticThicknessComputation = serializationObject.enableAutomaticThicknessComputation;\r\n this.blurDispersionStrength = serializationObject.blurDispersionStrength;\r\n this.blurDownsample = serializationObject.blurDownsample;\r\n this.attenuateScreenBorders = serializationObject.attenuateScreenBorders;\r\n this.attenuateIntersectionDistance = serializationObject.attenuateIntersectionDistance;\r\n this.attenuateIntersectionIterations = serializationObject.attenuateIntersectionIterations;\r\n this.attenuateFacingCamera = serializationObject.attenuateFacingCamera;\r\n this.attenuateBackfaceReflection = serializationObject.attenuateBackfaceReflection;\r\n this.inputTextureColorIsInGammaSpace = serializationObject.inputTextureColorIsInGammaSpace;\r\n this.generateOutputInGammaSpace = serializationObject.generateOutputInGammaSpace;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.NodeRenderGraphSSRPostProcessBlock\", NodeRenderGraphSSRPostProcessBlock);\r\n"]}
|
|
@@ -65,6 +65,12 @@ export declare class NodeRenderGraphBaseObjectRendererBlock extends NodeRenderGr
|
|
|
65
65
|
/** True (default) to enable clustered lights */
|
|
66
66
|
get enableClusteredLights(): boolean;
|
|
67
67
|
set enableClusteredLights(value: boolean);
|
|
68
|
+
/** If true, MSAA color textures will be resolved at the end of the render pass (default: true) */
|
|
69
|
+
get resolveMSAAColors(): boolean;
|
|
70
|
+
set resolveMSAAColors(value: boolean);
|
|
71
|
+
/** If true, MSAA depth texture will be resolved at the end of the render pass (default: false) */
|
|
72
|
+
get resolveMSAADepth(): boolean;
|
|
73
|
+
set resolveMSAADepth(value: boolean);
|
|
68
74
|
/**
|
|
69
75
|
* Gets the current class name
|
|
70
76
|
* @returns the class name
|
|
@@ -166,6 +166,20 @@ export class NodeRenderGraphBaseObjectRendererBlock extends NodeRenderGraphBlock
|
|
|
166
166
|
set enableClusteredLights(value) {
|
|
167
167
|
this._createFrameGraphObjectWithState(this.doNotChangeAspectRatio, value);
|
|
168
168
|
}
|
|
169
|
+
/** If true, MSAA color textures will be resolved at the end of the render pass (default: true) */
|
|
170
|
+
get resolveMSAAColors() {
|
|
171
|
+
return this._frameGraphTask.resolveMSAAColors;
|
|
172
|
+
}
|
|
173
|
+
set resolveMSAAColors(value) {
|
|
174
|
+
this._frameGraphTask.resolveMSAAColors = value;
|
|
175
|
+
}
|
|
176
|
+
/** If true, MSAA depth texture will be resolved at the end of the render pass (default: false) */
|
|
177
|
+
get resolveMSAADepth() {
|
|
178
|
+
return this._frameGraphTask.resolveMSAADepth;
|
|
179
|
+
}
|
|
180
|
+
set resolveMSAADepth(value) {
|
|
181
|
+
this._frameGraphTask.resolveMSAADepth = value;
|
|
182
|
+
}
|
|
169
183
|
/**
|
|
170
184
|
* Gets the current class name
|
|
171
185
|
* @returns the class name
|
|
@@ -264,6 +278,8 @@ export class NodeRenderGraphBaseObjectRendererBlock extends NodeRenderGraphBlock
|
|
|
264
278
|
codes.push(`${this._codeVariableName}.enableOutlineRendering = ${this.enableOutlineRendering};`);
|
|
265
279
|
codes.push(`${this._codeVariableName}.disableShadows = ${this.disableShadows};`);
|
|
266
280
|
codes.push(`${this._codeVariableName}.renderInLinearSpace = ${this.renderInLinearSpace};`);
|
|
281
|
+
codes.push(`${this._codeVariableName}.resolveMSAAColors = ${this.resolveMSAAColors};`);
|
|
282
|
+
codes.push(`${this._codeVariableName}.resolveMSAADepth = ${this.resolveMSAADepth};`);
|
|
267
283
|
return super._dumpPropertiesCode() + codes.join("\n");
|
|
268
284
|
}
|
|
269
285
|
serialize() {
|
|
@@ -278,6 +294,8 @@ export class NodeRenderGraphBaseObjectRendererBlock extends NodeRenderGraphBlock
|
|
|
278
294
|
serializationObject.enableOutlineRendering = this.enableOutlineRendering;
|
|
279
295
|
serializationObject.disableShadows = this.disableShadows;
|
|
280
296
|
serializationObject.renderInLinearSpace = this.renderInLinearSpace;
|
|
297
|
+
serializationObject.resolveMSAAColors = this.resolveMSAAColors;
|
|
298
|
+
serializationObject.resolveMSAADepth = this.resolveMSAADepth;
|
|
281
299
|
return serializationObject;
|
|
282
300
|
}
|
|
283
301
|
_deserialize(serializationObject) {
|
|
@@ -292,6 +310,8 @@ export class NodeRenderGraphBaseObjectRendererBlock extends NodeRenderGraphBlock
|
|
|
292
310
|
this.enableOutlineRendering = serializationObject.enableOutlineRendering ?? true;
|
|
293
311
|
this.disableShadows = serializationObject.disableShadows;
|
|
294
312
|
this.renderInLinearSpace = !!serializationObject.renderInLinearSpace;
|
|
313
|
+
this.resolveMSAAColors = serializationObject.resolveMSAAColors ?? true;
|
|
314
|
+
this.resolveMSAADepth = serializationObject.resolveMSAADepth ?? false;
|
|
295
315
|
}
|
|
296
316
|
}
|
|
297
317
|
__decorate([
|
|
@@ -330,4 +350,10 @@ __decorate([
|
|
|
330
350
|
__decorate([
|
|
331
351
|
editableInPropertyPage("Enable clustered lights", 0 /* PropertyTypeForEdition.Boolean */, "PROPERTIES")
|
|
332
352
|
], NodeRenderGraphBaseObjectRendererBlock.prototype, "enableClusteredLights", null);
|
|
353
|
+
__decorate([
|
|
354
|
+
editableInPropertyPage("Resolve MSAA colors", 0 /* PropertyTypeForEdition.Boolean */, "PROPERTIES")
|
|
355
|
+
], NodeRenderGraphBaseObjectRendererBlock.prototype, "resolveMSAAColors", null);
|
|
356
|
+
__decorate([
|
|
357
|
+
editableInPropertyPage("Resolve MSAA depth", 0 /* PropertyTypeForEdition.Boolean */, "PROPERTIES")
|
|
358
|
+
], NodeRenderGraphBaseObjectRendererBlock.prototype, "resolveMSAADepth", null);
|
|
333
359
|
//# sourceMappingURL=baseObjectRendererBlock.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseObjectRendererBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\r\n Scene,\r\n NodeRenderGraphBuildState,\r\n FrameGraph,\r\n FrameGraphTextureHandle,\r\n FrameGraphObjectList,\r\n Camera,\r\n NodeRenderGraphResourceContainerBlock,\r\n FrameGraphShadowGeneratorTask,\r\n} from \"core/index\";\r\nimport { NodeRenderGraphBlock } from \"../../nodeRenderGraphBlock\";\r\nimport { NodeRenderGraphBlockConnectionPointTypes, NodeRenderGraphConnectionPointDirection } from \"../../Types/nodeRenderGraphTypes\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\nimport { NodeRenderGraphConnectionPoint } from \"../../nodeRenderGraphBlockConnectionPoint\";\r\nimport { NodeRenderGraphConnectionPointCustomObject } from \"../../nodeRenderGraphConnectionPointCustomObject\";\r\nimport { FrameGraphObjectRendererTask } from \"core/FrameGraph/Tasks/Rendering/objectRendererTask\";\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class NodeRenderGraphBaseObjectRendererBlock extends NodeRenderGraphBlock {\r\n protected override _frameGraphTask: FrameGraphObjectRendererTask;\r\n\r\n public override _additionalConstructionParameters: [boolean, boolean];\r\n\r\n /**\r\n * Gets the frame graph task associated with this block\r\n */\r\n public override get task() {\r\n return this._frameGraphTask;\r\n }\r\n\r\n /**\r\n * Create a new NodeRenderGraphBaseObjectRendererBlock\r\n * @param name defines the block name\r\n * @param frameGraph defines the hosting frame graph\r\n * @param scene defines the hosting scene\r\n * @param doNotChangeAspectRatio True (default) to not change the aspect ratio of the scene in the RTT\r\n * @param enableClusteredLights True (default) to enable clustered lights\r\n */\r\n public constructor(name: string, frameGraph: FrameGraph, scene: Scene, doNotChangeAspectRatio = true, enableClusteredLights = true) {\r\n super(name, frameGraph, scene);\r\n\r\n this._additionalConstructionParameters = [doNotChangeAspectRatio, enableClusteredLights];\r\n\r\n this.registerInput(\"target\", NodeRenderGraphBlockConnectionPointTypes.AutoDetect);\r\n this.registerInput(\"depth\", NodeRenderGraphBlockConnectionPointTypes.AutoDetect, true);\r\n this.registerInput(\"camera\", NodeRenderGraphBlockConnectionPointTypes.Camera);\r\n this.registerInput(\"objects\", NodeRenderGraphBlockConnectionPointTypes.ObjectList);\r\n this._addDependenciesInput();\r\n this.registerInput(\"shadowGenerators\", NodeRenderGraphBlockConnectionPointTypes.AutoDetect, true);\r\n\r\n this.registerOutput(\"output\", NodeRenderGraphBlockConnectionPointTypes.BasedOnInput);\r\n this.registerOutput(\"outputDepth\", NodeRenderGraphBlockConnectionPointTypes.BasedOnInput);\r\n this.registerOutput(\r\n \"objectRenderer\",\r\n NodeRenderGraphBlockConnectionPointTypes.Object,\r\n new NodeRenderGraphConnectionPointCustomObject(\r\n \"objectRenderer\",\r\n this,\r\n NodeRenderGraphConnectionPointDirection.Output,\r\n NodeRenderGraphBaseObjectRendererBlock,\r\n \"NodeRenderGraphBaseObjectRendererBlock\"\r\n )\r\n );\r\n\r\n this.target.addExcludedConnectionPointFromAllowedTypes(NodeRenderGraphBlockConnectionPointTypes.TextureAllButBackBufferDepthStencil);\r\n this.depth.addExcludedConnectionPointFromAllowedTypes(\r\n NodeRenderGraphBlockConnectionPointTypes.TextureDepthStencilAttachment | NodeRenderGraphBlockConnectionPointTypes.TextureBackBufferDepthStencilAttachment\r\n );\r\n this.shadowGenerators.addExcludedConnectionPointFromAllowedTypes(\r\n NodeRenderGraphBlockConnectionPointTypes.ShadowGenerator | NodeRenderGraphBlockConnectionPointTypes.ResourceContainer\r\n );\r\n\r\n this.output._typeConnectionSource = this.target;\r\n this.outputDepth._typeConnectionSource = this.depth;\r\n\r\n this._createFrameGraphObject();\r\n }\r\n\r\n protected _createFrameGraphObject(): void {\r\n this._frameGraphTask?.dispose();\r\n this._frameGraphTask = new FrameGraphObjectRendererTask(this.name, this._frameGraph, this._scene, {\r\n doNotChangeAspectRatio: this._additionalConstructionParameters![0] as boolean,\r\n enableClusteredLights: this._additionalConstructionParameters![1] as boolean,\r\n });\r\n }\r\n\r\n protected _saveState(state: { [key: string]: any }) {\r\n state.disabled = this._frameGraphTask.disabled;\r\n state.isMainObjectRenderer = this.isMainObjectRenderer;\r\n state.depthTest = this.depthTest;\r\n state.depthWrite = this.depthWrite;\r\n state.disableShadows = this.disableShadows;\r\n state.renderInLinearSpace = this.renderInLinearSpace;\r\n state.renderParticles = this.renderParticles;\r\n state.renderSprites = this.renderSprites;\r\n state.forceLayerMaskCheck = this.forceLayerMaskCheck;\r\n state.enableBoundingBoxRendering = this.enableBoundingBoxRendering;\r\n state.enableOutlineRendering = this.enableOutlineRendering;\r\n }\r\n\r\n protected _restoreState(state: { [key: string]: any }) {\r\n this._frameGraphTask.disabled = state.disabled;\r\n this.isMainObjectRenderer = state.isMainObjectRenderer;\r\n this.depthTest = state.depthTest;\r\n this.depthWrite = state.depthWrite;\r\n this.disableShadows = state.disableShadows;\r\n this.renderInLinearSpace = state.renderInLinearSpace;\r\n this.renderParticles = state.renderParticles;\r\n this.renderSprites = state.renderSprites;\r\n this.forceLayerMaskCheck = state.forceLayerMaskCheck;\r\n this.enableBoundingBoxRendering = state.enableBoundingBoxRendering;\r\n this.enableOutlineRendering = state.enableOutlineRendering;\r\n }\r\n\r\n protected _createFrameGraphObjectWithState(doNotChangeAspectRatio: boolean, enableClusteredLights: boolean): void {\r\n const state: { [key: string]: any } = {};\r\n\r\n this._saveState(state);\r\n\r\n this._additionalConstructionParameters = [doNotChangeAspectRatio, enableClusteredLights];\r\n\r\n this._createFrameGraphObject();\r\n\r\n this._restoreState(state);\r\n }\r\n\r\n /** Indicates that this object renderer is the main object renderer of the frame graph. */\r\n @editableInPropertyPage(\"Is main object renderer\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get isMainObjectRenderer() {\r\n return this._frameGraphTask.isMainObjectRenderer;\r\n }\r\n\r\n public set isMainObjectRenderer(value: boolean) {\r\n this._frameGraphTask.isMainObjectRenderer = value;\r\n }\r\n\r\n /** Indicates if depth testing must be enabled or disabled */\r\n @editableInPropertyPage(\"Depth test\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get depthTest() {\r\n return this._frameGraphTask.depthTest;\r\n }\r\n\r\n public set depthTest(value: boolean) {\r\n this._frameGraphTask.depthTest = value;\r\n }\r\n\r\n /** Indicates if depth writing must be enabled or disabled */\r\n @editableInPropertyPage(\"Depth write\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get depthWrite() {\r\n return this._frameGraphTask.depthWrite;\r\n }\r\n\r\n public set depthWrite(value: boolean) {\r\n this._frameGraphTask.depthWrite = value;\r\n }\r\n\r\n /** Indicates if particles should be rendered */\r\n @editableInPropertyPage(\"Render particles\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get renderParticles() {\r\n return this._frameGraphTask.renderParticles;\r\n }\r\n\r\n public set renderParticles(value: boolean) {\r\n this._frameGraphTask.renderParticles = value;\r\n }\r\n\r\n /** Indicates if sprites should be rendered */\r\n @editableInPropertyPage(\"Render sprites\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get renderSprites() {\r\n return this._frameGraphTask.renderSprites;\r\n }\r\n\r\n public set renderSprites(value: boolean) {\r\n this._frameGraphTask.renderSprites = value;\r\n }\r\n\r\n /** Indicates if layer mask check must be forced */\r\n @editableInPropertyPage(\"Force layer mask check\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get forceLayerMaskCheck() {\r\n return this._frameGraphTask.forceLayerMaskCheck;\r\n }\r\n\r\n public set forceLayerMaskCheck(value: boolean) {\r\n this._frameGraphTask.forceLayerMaskCheck = value;\r\n }\r\n\r\n /** Indicates if bounding boxes should be rendered */\r\n @editableInPropertyPage(\"Enable bounding box rendering\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get enableBoundingBoxRendering() {\r\n return this._frameGraphTask.enableBoundingBoxRendering;\r\n }\r\n\r\n public set enableBoundingBoxRendering(value: boolean) {\r\n this._frameGraphTask.enableBoundingBoxRendering = value;\r\n }\r\n\r\n /** Indicates if outlines/overlays should be rendered */\r\n @editableInPropertyPage(\"Enable outline/overlay rendering\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get enableOutlineRendering() {\r\n return this._frameGraphTask.enableOutlineRendering;\r\n }\r\n\r\n public set enableOutlineRendering(value: boolean) {\r\n this._frameGraphTask.enableOutlineRendering = value;\r\n }\r\n\r\n /** Indicates if shadows must be enabled or disabled */\r\n @editableInPropertyPage(\"Disable shadows\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get disableShadows() {\r\n return this._frameGraphTask.disableShadows;\r\n }\r\n\r\n public set disableShadows(value: boolean) {\r\n this._frameGraphTask.disableShadows = value;\r\n }\r\n\r\n /** If image processing should be disabled */\r\n @editableInPropertyPage(\"Disable image processing\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get renderInLinearSpace() {\r\n return this._frameGraphTask.disableImageProcessing;\r\n }\r\n\r\n public set renderInLinearSpace(value: boolean) {\r\n this._frameGraphTask.disableImageProcessing = value;\r\n }\r\n\r\n /** True (default) to not change the aspect ratio of the scene in the RTT */\r\n @editableInPropertyPage(\"Do not change aspect ratio\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get doNotChangeAspectRatio() {\r\n return this._frameGraphTask.objectRenderer.options.doNotChangeAspectRatio;\r\n }\r\n\r\n public set doNotChangeAspectRatio(value: boolean) {\r\n this._createFrameGraphObjectWithState(value, this.enableClusteredLights);\r\n }\r\n\r\n /** True (default) to enable clustered lights */\r\n @editableInPropertyPage(\"Enable clustered lights\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get enableClusteredLights() {\r\n return this._frameGraphTask.objectRenderer.options.enableClusteredLights;\r\n }\r\n\r\n public set enableClusteredLights(value: boolean) {\r\n this._createFrameGraphObjectWithState(this.doNotChangeAspectRatio, value);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"NodeRenderGraphBaseObjectRendererBlock\";\r\n }\r\n\r\n /**\r\n * Gets the target texture input component\r\n */\r\n public get target(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the depth texture input component\r\n */\r\n public get depth(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the camera input component\r\n */\r\n public get camera(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the objects input component\r\n */\r\n public get objects(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the dependencies input component\r\n */\r\n public get dependencies(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the shadowGenerators input component\r\n */\r\n public get shadowGenerators(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[5];\r\n }\r\n\r\n /**\r\n * Gets the output component\r\n */\r\n public get output(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Gets the output depth component\r\n */\r\n public get outputDepth(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the objectRenderer component\r\n */\r\n public get objectRenderer(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[2];\r\n }\r\n\r\n protected override _buildBlock(state: NodeRenderGraphBuildState) {\r\n super._buildBlock(state);\r\n\r\n this.output.value = this._frameGraphTask.outputTexture; // the value of the output connection point is the \"output\" texture of the task\r\n this.outputDepth.value = this._frameGraphTask.outputDepthTexture; // the value of the outputDepth connection point is the \"outputDepth\" texture of the task\r\n this.objectRenderer.value = this._frameGraphTask; // the value of the objectRenderer connection point is the task itself\r\n\r\n this._frameGraphTask.targetTexture = this.target.connectedPoint?.value as FrameGraphTextureHandle;\r\n this._frameGraphTask.depthTexture = this.depth.connectedPoint?.value as FrameGraphTextureHandle;\r\n this._frameGraphTask.camera = this.camera.connectedPoint?.value as Camera;\r\n this._frameGraphTask.objectList = this.objects.connectedPoint?.value as FrameGraphObjectList;\r\n\r\n this._frameGraphTask.shadowGenerators = [];\r\n\r\n const shadowGeneratorsConnectedPoint = this.shadowGenerators.connectedPoint;\r\n if (shadowGeneratorsConnectedPoint) {\r\n if (shadowGeneratorsConnectedPoint.type === NodeRenderGraphBlockConnectionPointTypes.ResourceContainer) {\r\n const container = shadowGeneratorsConnectedPoint.ownerBlock as NodeRenderGraphResourceContainerBlock;\r\n for (const input of container.inputs) {\r\n if (input.connectedPoint && input.connectedPoint.value !== undefined && NodeRenderGraphConnectionPoint.IsShadowGenerator(input.connectedPoint.value)) {\r\n this._frameGraphTask.shadowGenerators.push(input.connectedPoint.value as FrameGraphShadowGeneratorTask);\r\n }\r\n }\r\n } else if (NodeRenderGraphConnectionPoint.IsShadowGenerator(shadowGeneratorsConnectedPoint.value)) {\r\n this._frameGraphTask.shadowGenerators[0] = shadowGeneratorsConnectedPoint.value as FrameGraphShadowGeneratorTask;\r\n }\r\n }\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codes: string[] = [];\r\n codes.push(`${this._codeVariableName}.isMainObjectRenderer = ${this.isMainObjectRenderer};`);\r\n codes.push(`${this._codeVariableName}.depthTest = ${this.depthTest};`);\r\n codes.push(`${this._codeVariableName}.depthWrite = ${this.depthWrite};`);\r\n codes.push(`${this._codeVariableName}.renderParticles = ${this.renderParticles};`);\r\n codes.push(`${this._codeVariableName}.renderSprites = ${this.renderSprites};`);\r\n codes.push(`${this._codeVariableName}.forceLayerMaskCheck = ${this.forceLayerMaskCheck};`);\r\n codes.push(`${this._codeVariableName}.enableBoundingBoxRendering = ${this.enableBoundingBoxRendering};`);\r\n codes.push(`${this._codeVariableName}.enableOutlineRendering = ${this.enableOutlineRendering};`);\r\n codes.push(`${this._codeVariableName}.disableShadows = ${this.disableShadows};`);\r\n codes.push(`${this._codeVariableName}.renderInLinearSpace = ${this.renderInLinearSpace};`);\r\n return super._dumpPropertiesCode() + codes.join(\"\\n\");\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.isMainObjectRenderer = this.isMainObjectRenderer;\r\n serializationObject.depthTest = this.depthTest;\r\n serializationObject.depthWrite = this.depthWrite;\r\n serializationObject.renderParticles = this.renderParticles;\r\n serializationObject.renderSprites = this.renderSprites;\r\n serializationObject.forceLayerMaskCheck = this.forceLayerMaskCheck;\r\n serializationObject.enableBoundingBoxRendering = this.enableBoundingBoxRendering;\r\n serializationObject.enableOutlineRendering = this.enableOutlineRendering;\r\n serializationObject.disableShadows = this.disableShadows;\r\n serializationObject.renderInLinearSpace = this.renderInLinearSpace;\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n this.isMainObjectRenderer = !!serializationObject.isMainObjectRenderer;\r\n this.depthTest = serializationObject.depthTest;\r\n this.depthWrite = serializationObject.depthWrite;\r\n this.renderParticles = serializationObject.renderParticles ?? true;\r\n this.renderSprites = serializationObject.renderSprites ?? true;\r\n this.forceLayerMaskCheck = serializationObject.forceLayerMaskCheck ?? true;\r\n this.enableBoundingBoxRendering = serializationObject.enableBoundingBoxRendering ?? true;\r\n this.enableOutlineRendering = serializationObject.enableOutlineRendering ?? true;\r\n this.disableShadows = serializationObject.disableShadows;\r\n this.renderInLinearSpace = !!serializationObject.renderInLinearSpace;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"baseObjectRendererBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\r\n Scene,\r\n NodeRenderGraphBuildState,\r\n FrameGraph,\r\n FrameGraphTextureHandle,\r\n FrameGraphObjectList,\r\n Camera,\r\n NodeRenderGraphResourceContainerBlock,\r\n FrameGraphShadowGeneratorTask,\r\n} from \"core/index\";\r\nimport { NodeRenderGraphBlock } from \"../../nodeRenderGraphBlock\";\r\nimport { NodeRenderGraphBlockConnectionPointTypes, NodeRenderGraphConnectionPointDirection } from \"../../Types/nodeRenderGraphTypes\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\nimport { NodeRenderGraphConnectionPoint } from \"../../nodeRenderGraphBlockConnectionPoint\";\r\nimport { NodeRenderGraphConnectionPointCustomObject } from \"../../nodeRenderGraphConnectionPointCustomObject\";\r\nimport { FrameGraphObjectRendererTask } from \"core/FrameGraph/Tasks/Rendering/objectRendererTask\";\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class NodeRenderGraphBaseObjectRendererBlock extends NodeRenderGraphBlock {\r\n protected override _frameGraphTask: FrameGraphObjectRendererTask;\r\n\r\n public override _additionalConstructionParameters: [boolean, boolean];\r\n\r\n /**\r\n * Gets the frame graph task associated with this block\r\n */\r\n public override get task() {\r\n return this._frameGraphTask;\r\n }\r\n\r\n /**\r\n * Create a new NodeRenderGraphBaseObjectRendererBlock\r\n * @param name defines the block name\r\n * @param frameGraph defines the hosting frame graph\r\n * @param scene defines the hosting scene\r\n * @param doNotChangeAspectRatio True (default) to not change the aspect ratio of the scene in the RTT\r\n * @param enableClusteredLights True (default) to enable clustered lights\r\n */\r\n public constructor(name: string, frameGraph: FrameGraph, scene: Scene, doNotChangeAspectRatio = true, enableClusteredLights = true) {\r\n super(name, frameGraph, scene);\r\n\r\n this._additionalConstructionParameters = [doNotChangeAspectRatio, enableClusteredLights];\r\n\r\n this.registerInput(\"target\", NodeRenderGraphBlockConnectionPointTypes.AutoDetect);\r\n this.registerInput(\"depth\", NodeRenderGraphBlockConnectionPointTypes.AutoDetect, true);\r\n this.registerInput(\"camera\", NodeRenderGraphBlockConnectionPointTypes.Camera);\r\n this.registerInput(\"objects\", NodeRenderGraphBlockConnectionPointTypes.ObjectList);\r\n this._addDependenciesInput();\r\n this.registerInput(\"shadowGenerators\", NodeRenderGraphBlockConnectionPointTypes.AutoDetect, true);\r\n\r\n this.registerOutput(\"output\", NodeRenderGraphBlockConnectionPointTypes.BasedOnInput);\r\n this.registerOutput(\"outputDepth\", NodeRenderGraphBlockConnectionPointTypes.BasedOnInput);\r\n this.registerOutput(\r\n \"objectRenderer\",\r\n NodeRenderGraphBlockConnectionPointTypes.Object,\r\n new NodeRenderGraphConnectionPointCustomObject(\r\n \"objectRenderer\",\r\n this,\r\n NodeRenderGraphConnectionPointDirection.Output,\r\n NodeRenderGraphBaseObjectRendererBlock,\r\n \"NodeRenderGraphBaseObjectRendererBlock\"\r\n )\r\n );\r\n\r\n this.target.addExcludedConnectionPointFromAllowedTypes(NodeRenderGraphBlockConnectionPointTypes.TextureAllButBackBufferDepthStencil);\r\n this.depth.addExcludedConnectionPointFromAllowedTypes(\r\n NodeRenderGraphBlockConnectionPointTypes.TextureDepthStencilAttachment | NodeRenderGraphBlockConnectionPointTypes.TextureBackBufferDepthStencilAttachment\r\n );\r\n this.shadowGenerators.addExcludedConnectionPointFromAllowedTypes(\r\n NodeRenderGraphBlockConnectionPointTypes.ShadowGenerator | NodeRenderGraphBlockConnectionPointTypes.ResourceContainer\r\n );\r\n\r\n this.output._typeConnectionSource = this.target;\r\n this.outputDepth._typeConnectionSource = this.depth;\r\n\r\n this._createFrameGraphObject();\r\n }\r\n\r\n protected _createFrameGraphObject(): void {\r\n this._frameGraphTask?.dispose();\r\n this._frameGraphTask = new FrameGraphObjectRendererTask(this.name, this._frameGraph, this._scene, {\r\n doNotChangeAspectRatio: this._additionalConstructionParameters![0] as boolean,\r\n enableClusteredLights: this._additionalConstructionParameters![1] as boolean,\r\n });\r\n }\r\n\r\n protected _saveState(state: { [key: string]: any }) {\r\n state.disabled = this._frameGraphTask.disabled;\r\n state.isMainObjectRenderer = this.isMainObjectRenderer;\r\n state.depthTest = this.depthTest;\r\n state.depthWrite = this.depthWrite;\r\n state.disableShadows = this.disableShadows;\r\n state.renderInLinearSpace = this.renderInLinearSpace;\r\n state.renderParticles = this.renderParticles;\r\n state.renderSprites = this.renderSprites;\r\n state.forceLayerMaskCheck = this.forceLayerMaskCheck;\r\n state.enableBoundingBoxRendering = this.enableBoundingBoxRendering;\r\n state.enableOutlineRendering = this.enableOutlineRendering;\r\n }\r\n\r\n protected _restoreState(state: { [key: string]: any }) {\r\n this._frameGraphTask.disabled = state.disabled;\r\n this.isMainObjectRenderer = state.isMainObjectRenderer;\r\n this.depthTest = state.depthTest;\r\n this.depthWrite = state.depthWrite;\r\n this.disableShadows = state.disableShadows;\r\n this.renderInLinearSpace = state.renderInLinearSpace;\r\n this.renderParticles = state.renderParticles;\r\n this.renderSprites = state.renderSprites;\r\n this.forceLayerMaskCheck = state.forceLayerMaskCheck;\r\n this.enableBoundingBoxRendering = state.enableBoundingBoxRendering;\r\n this.enableOutlineRendering = state.enableOutlineRendering;\r\n }\r\n\r\n protected _createFrameGraphObjectWithState(doNotChangeAspectRatio: boolean, enableClusteredLights: boolean): void {\r\n const state: { [key: string]: any } = {};\r\n\r\n this._saveState(state);\r\n\r\n this._additionalConstructionParameters = [doNotChangeAspectRatio, enableClusteredLights];\r\n\r\n this._createFrameGraphObject();\r\n\r\n this._restoreState(state);\r\n }\r\n\r\n /** Indicates that this object renderer is the main object renderer of the frame graph. */\r\n @editableInPropertyPage(\"Is main object renderer\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get isMainObjectRenderer() {\r\n return this._frameGraphTask.isMainObjectRenderer;\r\n }\r\n\r\n public set isMainObjectRenderer(value: boolean) {\r\n this._frameGraphTask.isMainObjectRenderer = value;\r\n }\r\n\r\n /** Indicates if depth testing must be enabled or disabled */\r\n @editableInPropertyPage(\"Depth test\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get depthTest() {\r\n return this._frameGraphTask.depthTest;\r\n }\r\n\r\n public set depthTest(value: boolean) {\r\n this._frameGraphTask.depthTest = value;\r\n }\r\n\r\n /** Indicates if depth writing must be enabled or disabled */\r\n @editableInPropertyPage(\"Depth write\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get depthWrite() {\r\n return this._frameGraphTask.depthWrite;\r\n }\r\n\r\n public set depthWrite(value: boolean) {\r\n this._frameGraphTask.depthWrite = value;\r\n }\r\n\r\n /** Indicates if particles should be rendered */\r\n @editableInPropertyPage(\"Render particles\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get renderParticles() {\r\n return this._frameGraphTask.renderParticles;\r\n }\r\n\r\n public set renderParticles(value: boolean) {\r\n this._frameGraphTask.renderParticles = value;\r\n }\r\n\r\n /** Indicates if sprites should be rendered */\r\n @editableInPropertyPage(\"Render sprites\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get renderSprites() {\r\n return this._frameGraphTask.renderSprites;\r\n }\r\n\r\n public set renderSprites(value: boolean) {\r\n this._frameGraphTask.renderSprites = value;\r\n }\r\n\r\n /** Indicates if layer mask check must be forced */\r\n @editableInPropertyPage(\"Force layer mask check\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get forceLayerMaskCheck() {\r\n return this._frameGraphTask.forceLayerMaskCheck;\r\n }\r\n\r\n public set forceLayerMaskCheck(value: boolean) {\r\n this._frameGraphTask.forceLayerMaskCheck = value;\r\n }\r\n\r\n /** Indicates if bounding boxes should be rendered */\r\n @editableInPropertyPage(\"Enable bounding box rendering\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get enableBoundingBoxRendering() {\r\n return this._frameGraphTask.enableBoundingBoxRendering;\r\n }\r\n\r\n public set enableBoundingBoxRendering(value: boolean) {\r\n this._frameGraphTask.enableBoundingBoxRendering = value;\r\n }\r\n\r\n /** Indicates if outlines/overlays should be rendered */\r\n @editableInPropertyPage(\"Enable outline/overlay rendering\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get enableOutlineRendering() {\r\n return this._frameGraphTask.enableOutlineRendering;\r\n }\r\n\r\n public set enableOutlineRendering(value: boolean) {\r\n this._frameGraphTask.enableOutlineRendering = value;\r\n }\r\n\r\n /** Indicates if shadows must be enabled or disabled */\r\n @editableInPropertyPage(\"Disable shadows\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get disableShadows() {\r\n return this._frameGraphTask.disableShadows;\r\n }\r\n\r\n public set disableShadows(value: boolean) {\r\n this._frameGraphTask.disableShadows = value;\r\n }\r\n\r\n /** If image processing should be disabled */\r\n @editableInPropertyPage(\"Disable image processing\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get renderInLinearSpace() {\r\n return this._frameGraphTask.disableImageProcessing;\r\n }\r\n\r\n public set renderInLinearSpace(value: boolean) {\r\n this._frameGraphTask.disableImageProcessing = value;\r\n }\r\n\r\n /** True (default) to not change the aspect ratio of the scene in the RTT */\r\n @editableInPropertyPage(\"Do not change aspect ratio\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get doNotChangeAspectRatio() {\r\n return this._frameGraphTask.objectRenderer.options.doNotChangeAspectRatio;\r\n }\r\n\r\n public set doNotChangeAspectRatio(value: boolean) {\r\n this._createFrameGraphObjectWithState(value, this.enableClusteredLights);\r\n }\r\n\r\n /** True (default) to enable clustered lights */\r\n @editableInPropertyPage(\"Enable clustered lights\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get enableClusteredLights() {\r\n return this._frameGraphTask.objectRenderer.options.enableClusteredLights;\r\n }\r\n\r\n public set enableClusteredLights(value: boolean) {\r\n this._createFrameGraphObjectWithState(this.doNotChangeAspectRatio, value);\r\n }\r\n\r\n /** If true, MSAA color textures will be resolved at the end of the render pass (default: true) */\r\n @editableInPropertyPage(\"Resolve MSAA colors\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get resolveMSAAColors() {\r\n return this._frameGraphTask.resolveMSAAColors;\r\n }\r\n\r\n public set resolveMSAAColors(value: boolean) {\r\n this._frameGraphTask.resolveMSAAColors = value;\r\n }\r\n\r\n /** If true, MSAA depth texture will be resolved at the end of the render pass (default: false) */\r\n @editableInPropertyPage(\"Resolve MSAA depth\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get resolveMSAADepth() {\r\n return this._frameGraphTask.resolveMSAADepth;\r\n }\r\n\r\n public set resolveMSAADepth(value: boolean) {\r\n this._frameGraphTask.resolveMSAADepth = value;\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"NodeRenderGraphBaseObjectRendererBlock\";\r\n }\r\n\r\n /**\r\n * Gets the target texture input component\r\n */\r\n public get target(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the depth texture input component\r\n */\r\n public get depth(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the camera input component\r\n */\r\n public get camera(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the objects input component\r\n */\r\n public get objects(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the dependencies input component\r\n */\r\n public get dependencies(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the shadowGenerators input component\r\n */\r\n public get shadowGenerators(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[5];\r\n }\r\n\r\n /**\r\n * Gets the output component\r\n */\r\n public get output(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Gets the output depth component\r\n */\r\n public get outputDepth(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the objectRenderer component\r\n */\r\n public get objectRenderer(): NodeRenderGraphConnectionPoint {\r\n return this._outputs[2];\r\n }\r\n\r\n protected override _buildBlock(state: NodeRenderGraphBuildState) {\r\n super._buildBlock(state);\r\n\r\n this.output.value = this._frameGraphTask.outputTexture; // the value of the output connection point is the \"output\" texture of the task\r\n this.outputDepth.value = this._frameGraphTask.outputDepthTexture; // the value of the outputDepth connection point is the \"outputDepth\" texture of the task\r\n this.objectRenderer.value = this._frameGraphTask; // the value of the objectRenderer connection point is the task itself\r\n\r\n this._frameGraphTask.targetTexture = this.target.connectedPoint?.value as FrameGraphTextureHandle;\r\n this._frameGraphTask.depthTexture = this.depth.connectedPoint?.value as FrameGraphTextureHandle;\r\n this._frameGraphTask.camera = this.camera.connectedPoint?.value as Camera;\r\n this._frameGraphTask.objectList = this.objects.connectedPoint?.value as FrameGraphObjectList;\r\n\r\n this._frameGraphTask.shadowGenerators = [];\r\n\r\n const shadowGeneratorsConnectedPoint = this.shadowGenerators.connectedPoint;\r\n if (shadowGeneratorsConnectedPoint) {\r\n if (shadowGeneratorsConnectedPoint.type === NodeRenderGraphBlockConnectionPointTypes.ResourceContainer) {\r\n const container = shadowGeneratorsConnectedPoint.ownerBlock as NodeRenderGraphResourceContainerBlock;\r\n for (const input of container.inputs) {\r\n if (input.connectedPoint && input.connectedPoint.value !== undefined && NodeRenderGraphConnectionPoint.IsShadowGenerator(input.connectedPoint.value)) {\r\n this._frameGraphTask.shadowGenerators.push(input.connectedPoint.value as FrameGraphShadowGeneratorTask);\r\n }\r\n }\r\n } else if (NodeRenderGraphConnectionPoint.IsShadowGenerator(shadowGeneratorsConnectedPoint.value)) {\r\n this._frameGraphTask.shadowGenerators[0] = shadowGeneratorsConnectedPoint.value as FrameGraphShadowGeneratorTask;\r\n }\r\n }\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codes: string[] = [];\r\n codes.push(`${this._codeVariableName}.isMainObjectRenderer = ${this.isMainObjectRenderer};`);\r\n codes.push(`${this._codeVariableName}.depthTest = ${this.depthTest};`);\r\n codes.push(`${this._codeVariableName}.depthWrite = ${this.depthWrite};`);\r\n codes.push(`${this._codeVariableName}.renderParticles = ${this.renderParticles};`);\r\n codes.push(`${this._codeVariableName}.renderSprites = ${this.renderSprites};`);\r\n codes.push(`${this._codeVariableName}.forceLayerMaskCheck = ${this.forceLayerMaskCheck};`);\r\n codes.push(`${this._codeVariableName}.enableBoundingBoxRendering = ${this.enableBoundingBoxRendering};`);\r\n codes.push(`${this._codeVariableName}.enableOutlineRendering = ${this.enableOutlineRendering};`);\r\n codes.push(`${this._codeVariableName}.disableShadows = ${this.disableShadows};`);\r\n codes.push(`${this._codeVariableName}.renderInLinearSpace = ${this.renderInLinearSpace};`);\r\n codes.push(`${this._codeVariableName}.resolveMSAAColors = ${this.resolveMSAAColors};`);\r\n codes.push(`${this._codeVariableName}.resolveMSAADepth = ${this.resolveMSAADepth};`);\r\n return super._dumpPropertiesCode() + codes.join(\"\\n\");\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.isMainObjectRenderer = this.isMainObjectRenderer;\r\n serializationObject.depthTest = this.depthTest;\r\n serializationObject.depthWrite = this.depthWrite;\r\n serializationObject.renderParticles = this.renderParticles;\r\n serializationObject.renderSprites = this.renderSprites;\r\n serializationObject.forceLayerMaskCheck = this.forceLayerMaskCheck;\r\n serializationObject.enableBoundingBoxRendering = this.enableBoundingBoxRendering;\r\n serializationObject.enableOutlineRendering = this.enableOutlineRendering;\r\n serializationObject.disableShadows = this.disableShadows;\r\n serializationObject.renderInLinearSpace = this.renderInLinearSpace;\r\n serializationObject.resolveMSAAColors = this.resolveMSAAColors;\r\n serializationObject.resolveMSAADepth = this.resolveMSAADepth;\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n this.isMainObjectRenderer = !!serializationObject.isMainObjectRenderer;\r\n this.depthTest = serializationObject.depthTest;\r\n this.depthWrite = serializationObject.depthWrite;\r\n this.renderParticles = serializationObject.renderParticles ?? true;\r\n this.renderSprites = serializationObject.renderSprites ?? true;\r\n this.forceLayerMaskCheck = serializationObject.forceLayerMaskCheck ?? true;\r\n this.enableBoundingBoxRendering = serializationObject.enableBoundingBoxRendering ?? true;\r\n this.enableOutlineRendering = serializationObject.enableOutlineRendering ?? true;\r\n this.disableShadows = serializationObject.disableShadows;\r\n this.renderInLinearSpace = !!serializationObject.renderInLinearSpace;\r\n this.resolveMSAAColors = serializationObject.resolveMSAAColors ?? true;\r\n this.resolveMSAADepth = serializationObject.resolveMSAADepth ?? false;\r\n }\r\n}\r\n"]}
|
|
@@ -54,6 +54,12 @@ export declare class NodeRenderGraphGeometryRendererBlock extends NodeRenderGrap
|
|
|
54
54
|
/** Indicates if a mesh shouldn't be rendered when its material has depth write disabled */
|
|
55
55
|
get dontRenderWhenMaterialDepthWriteIsDisabled(): boolean;
|
|
56
56
|
set dontRenderWhenMaterialDepthWriteIsDisabled(value: boolean);
|
|
57
|
+
/** If true, MSAA color textures will be resolved at the end of the render pass (default: true) */
|
|
58
|
+
get resolveMSAAColors(): boolean;
|
|
59
|
+
set resolveMSAAColors(value: boolean);
|
|
60
|
+
/** If true, MSAA depth texture will be resolved at the end of the render pass (default: false) */
|
|
61
|
+
get resolveMSAADepth(): boolean;
|
|
62
|
+
set resolveMSAADepth(value: boolean);
|
|
57
63
|
viewDepthFormat: number;
|
|
58
64
|
viewDepthType: number;
|
|
59
65
|
normalizedViewDepthFormat: number;
|
|
@@ -184,6 +184,20 @@ export class NodeRenderGraphGeometryRendererBlock extends NodeRenderGraphBlock {
|
|
|
184
184
|
set dontRenderWhenMaterialDepthWriteIsDisabled(value) {
|
|
185
185
|
this._frameGraphTask.dontRenderWhenMaterialDepthWriteIsDisabled = value;
|
|
186
186
|
}
|
|
187
|
+
/** If true, MSAA color textures will be resolved at the end of the render pass (default: true) */
|
|
188
|
+
get resolveMSAAColors() {
|
|
189
|
+
return this._frameGraphTask.resolveMSAAColors;
|
|
190
|
+
}
|
|
191
|
+
set resolveMSAAColors(value) {
|
|
192
|
+
this._frameGraphTask.resolveMSAAColors = value;
|
|
193
|
+
}
|
|
194
|
+
/** If true, MSAA depth texture will be resolved at the end of the render pass (default: false) */
|
|
195
|
+
get resolveMSAADepth() {
|
|
196
|
+
return this._frameGraphTask.resolveMSAADepth;
|
|
197
|
+
}
|
|
198
|
+
set resolveMSAADepth(value) {
|
|
199
|
+
this._frameGraphTask.resolveMSAADepth = value;
|
|
200
|
+
}
|
|
187
201
|
/**
|
|
188
202
|
* Gets the current class name
|
|
189
203
|
* @returns the class name
|
|
@@ -391,6 +405,8 @@ export class NodeRenderGraphGeometryRendererBlock extends NodeRenderGraphBlock {
|
|
|
391
405
|
codes.push(`${this._codeVariableName}.velocityType = ${this.velocityType};`);
|
|
392
406
|
codes.push(`${this._codeVariableName}.linearVelocityFormat = ${this.linearVelocityFormat};`);
|
|
393
407
|
codes.push(`${this._codeVariableName}.linearVelocityType = ${this.linearVelocityType};`);
|
|
408
|
+
codes.push(`${this._codeVariableName}.resolveMSAAColors = ${this.resolveMSAAColors};`);
|
|
409
|
+
codes.push(`${this._codeVariableName}.resolveMSAADepth = ${this.resolveMSAADepth};`);
|
|
394
410
|
return super._dumpPropertiesCode() + codes.join("\n");
|
|
395
411
|
}
|
|
396
412
|
serialize() {
|
|
@@ -423,6 +439,8 @@ export class NodeRenderGraphGeometryRendererBlock extends NodeRenderGraphBlock {
|
|
|
423
439
|
serializationObject.velocityType = this.velocityType;
|
|
424
440
|
serializationObject.linearVelocityFormat = this.linearVelocityFormat;
|
|
425
441
|
serializationObject.linearVelocityType = this.linearVelocityType;
|
|
442
|
+
serializationObject.resolveMSAAColors = this.resolveMSAAColors;
|
|
443
|
+
serializationObject.resolveMSAADepth = this.resolveMSAADepth;
|
|
426
444
|
return serializationObject;
|
|
427
445
|
}
|
|
428
446
|
_deserialize(serializationObject) {
|
|
@@ -455,6 +473,8 @@ export class NodeRenderGraphGeometryRendererBlock extends NodeRenderGraphBlock {
|
|
|
455
473
|
this.velocityType = serializationObject.velocityType;
|
|
456
474
|
this.linearVelocityFormat = serializationObject.linearVelocityFormat;
|
|
457
475
|
this.linearVelocityType = serializationObject.linearVelocityType;
|
|
476
|
+
this.resolveMSAAColors = serializationObject.resolveMSAAColors ?? true;
|
|
477
|
+
this.resolveMSAADepth = serializationObject.resolveMSAADepth ?? false;
|
|
458
478
|
}
|
|
459
479
|
}
|
|
460
480
|
__decorate([
|
|
@@ -491,70 +511,76 @@ __decorate([
|
|
|
491
511
|
editableInPropertyPage("Don't render if material depth write is disabled", 0 /* PropertyTypeForEdition.Boolean */, "PROPERTIES")
|
|
492
512
|
], NodeRenderGraphGeometryRendererBlock.prototype, "dontRenderWhenMaterialDepthWriteIsDisabled", null);
|
|
493
513
|
__decorate([
|
|
494
|
-
editableInPropertyPage("
|
|
514
|
+
editableInPropertyPage("Resolve MSAA colors", 0 /* PropertyTypeForEdition.Boolean */, "PROPERTIES")
|
|
515
|
+
], NodeRenderGraphGeometryRendererBlock.prototype, "resolveMSAAColors", null);
|
|
516
|
+
__decorate([
|
|
517
|
+
editableInPropertyPage("Resolve MSAA depth", 0 /* PropertyTypeForEdition.Boolean */, "PROPERTIES")
|
|
518
|
+
], NodeRenderGraphGeometryRendererBlock.prototype, "resolveMSAADepth", null);
|
|
519
|
+
__decorate([
|
|
520
|
+
editableInPropertyPage("View depth format", 9 /* PropertyTypeForEdition.TextureFormat */, "GEOMETRY BUFFERS")
|
|
495
521
|
], NodeRenderGraphGeometryRendererBlock.prototype, "viewDepthFormat", void 0);
|
|
496
522
|
__decorate([
|
|
497
|
-
editableInPropertyPage("View depth type",
|
|
523
|
+
editableInPropertyPage("View depth type", 10 /* PropertyTypeForEdition.TextureType */, "GEOMETRY BUFFERS")
|
|
498
524
|
], NodeRenderGraphGeometryRendererBlock.prototype, "viewDepthType", void 0);
|
|
499
525
|
__decorate([
|
|
500
|
-
editableInPropertyPage("Normalized view depth format",
|
|
526
|
+
editableInPropertyPage("Normalized view depth format", 9 /* PropertyTypeForEdition.TextureFormat */, "GEOMETRY BUFFERS")
|
|
501
527
|
], NodeRenderGraphGeometryRendererBlock.prototype, "normalizedViewDepthFormat", void 0);
|
|
502
528
|
__decorate([
|
|
503
|
-
editableInPropertyPage("Normalized view depth type",
|
|
529
|
+
editableInPropertyPage("Normalized view depth type", 10 /* PropertyTypeForEdition.TextureType */, "GEOMETRY BUFFERS")
|
|
504
530
|
], NodeRenderGraphGeometryRendererBlock.prototype, "normalizedViewDepthType", void 0);
|
|
505
531
|
__decorate([
|
|
506
|
-
editableInPropertyPage("Screen depth format",
|
|
532
|
+
editableInPropertyPage("Screen depth format", 9 /* PropertyTypeForEdition.TextureFormat */, "GEOMETRY BUFFERS")
|
|
507
533
|
], NodeRenderGraphGeometryRendererBlock.prototype, "screenDepthFormat", void 0);
|
|
508
534
|
__decorate([
|
|
509
|
-
editableInPropertyPage("Screen depth type",
|
|
535
|
+
editableInPropertyPage("Screen depth type", 10 /* PropertyTypeForEdition.TextureType */, "GEOMETRY BUFFERS")
|
|
510
536
|
], NodeRenderGraphGeometryRendererBlock.prototype, "screenDepthType", void 0);
|
|
511
537
|
__decorate([
|
|
512
|
-
editableInPropertyPage("View normal format",
|
|
538
|
+
editableInPropertyPage("View normal format", 9 /* PropertyTypeForEdition.TextureFormat */, "GEOMETRY BUFFERS")
|
|
513
539
|
], NodeRenderGraphGeometryRendererBlock.prototype, "viewNormalFormat", void 0);
|
|
514
540
|
__decorate([
|
|
515
|
-
editableInPropertyPage("View normal type",
|
|
541
|
+
editableInPropertyPage("View normal type", 10 /* PropertyTypeForEdition.TextureType */, "GEOMETRY BUFFERS")
|
|
516
542
|
], NodeRenderGraphGeometryRendererBlock.prototype, "viewNormalType", void 0);
|
|
517
543
|
__decorate([
|
|
518
|
-
editableInPropertyPage("World normal format",
|
|
544
|
+
editableInPropertyPage("World normal format", 9 /* PropertyTypeForEdition.TextureFormat */, "GEOMETRY BUFFERS")
|
|
519
545
|
], NodeRenderGraphGeometryRendererBlock.prototype, "worldNormalFormat", void 0);
|
|
520
546
|
__decorate([
|
|
521
|
-
editableInPropertyPage("World normal type",
|
|
547
|
+
editableInPropertyPage("World normal type", 10 /* PropertyTypeForEdition.TextureType */, "GEOMETRY BUFFERS")
|
|
522
548
|
], NodeRenderGraphGeometryRendererBlock.prototype, "worldNormalType", void 0);
|
|
523
549
|
__decorate([
|
|
524
|
-
editableInPropertyPage("Local position format",
|
|
550
|
+
editableInPropertyPage("Local position format", 9 /* PropertyTypeForEdition.TextureFormat */, "GEOMETRY BUFFERS")
|
|
525
551
|
], NodeRenderGraphGeometryRendererBlock.prototype, "localPositionFormat", void 0);
|
|
526
552
|
__decorate([
|
|
527
|
-
editableInPropertyPage("Local position type",
|
|
553
|
+
editableInPropertyPage("Local position type", 10 /* PropertyTypeForEdition.TextureType */, "GEOMETRY BUFFERS")
|
|
528
554
|
], NodeRenderGraphGeometryRendererBlock.prototype, "localPositionType", void 0);
|
|
529
555
|
__decorate([
|
|
530
|
-
editableInPropertyPage("World position format",
|
|
556
|
+
editableInPropertyPage("World position format", 9 /* PropertyTypeForEdition.TextureFormat */, "GEOMETRY BUFFERS")
|
|
531
557
|
], NodeRenderGraphGeometryRendererBlock.prototype, "worldPositionFormat", void 0);
|
|
532
558
|
__decorate([
|
|
533
|
-
editableInPropertyPage("World position type",
|
|
559
|
+
editableInPropertyPage("World position type", 10 /* PropertyTypeForEdition.TextureType */, "GEOMETRY BUFFERS")
|
|
534
560
|
], NodeRenderGraphGeometryRendererBlock.prototype, "worldPositionType", void 0);
|
|
535
561
|
__decorate([
|
|
536
|
-
editableInPropertyPage("Albedo format",
|
|
562
|
+
editableInPropertyPage("Albedo format", 9 /* PropertyTypeForEdition.TextureFormat */, "GEOMETRY BUFFERS")
|
|
537
563
|
], NodeRenderGraphGeometryRendererBlock.prototype, "albedoFormat", void 0);
|
|
538
564
|
__decorate([
|
|
539
|
-
editableInPropertyPage("Albedo type",
|
|
565
|
+
editableInPropertyPage("Albedo type", 10 /* PropertyTypeForEdition.TextureType */, "GEOMETRY BUFFERS")
|
|
540
566
|
], NodeRenderGraphGeometryRendererBlock.prototype, "albedoType", void 0);
|
|
541
567
|
__decorate([
|
|
542
|
-
editableInPropertyPage("Reflectivity format",
|
|
568
|
+
editableInPropertyPage("Reflectivity format", 9 /* PropertyTypeForEdition.TextureFormat */, "GEOMETRY BUFFERS")
|
|
543
569
|
], NodeRenderGraphGeometryRendererBlock.prototype, "reflectivityFormat", void 0);
|
|
544
570
|
__decorate([
|
|
545
|
-
editableInPropertyPage("Reflectivity type",
|
|
571
|
+
editableInPropertyPage("Reflectivity type", 10 /* PropertyTypeForEdition.TextureType */, "GEOMETRY BUFFERS")
|
|
546
572
|
], NodeRenderGraphGeometryRendererBlock.prototype, "reflectivityType", void 0);
|
|
547
573
|
__decorate([
|
|
548
|
-
editableInPropertyPage("Velocity format",
|
|
574
|
+
editableInPropertyPage("Velocity format", 9 /* PropertyTypeForEdition.TextureFormat */, "GEOMETRY BUFFERS")
|
|
549
575
|
], NodeRenderGraphGeometryRendererBlock.prototype, "velocityFormat", void 0);
|
|
550
576
|
__decorate([
|
|
551
|
-
editableInPropertyPage("Velocity type",
|
|
577
|
+
editableInPropertyPage("Velocity type", 10 /* PropertyTypeForEdition.TextureType */, "GEOMETRY BUFFERS")
|
|
552
578
|
], NodeRenderGraphGeometryRendererBlock.prototype, "velocityType", void 0);
|
|
553
579
|
__decorate([
|
|
554
|
-
editableInPropertyPage("Linear velocity format",
|
|
580
|
+
editableInPropertyPage("Linear velocity format", 9 /* PropertyTypeForEdition.TextureFormat */, "GEOMETRY BUFFERS")
|
|
555
581
|
], NodeRenderGraphGeometryRendererBlock.prototype, "linearVelocityFormat", void 0);
|
|
556
582
|
__decorate([
|
|
557
|
-
editableInPropertyPage("Linear velocity type",
|
|
583
|
+
editableInPropertyPage("Linear velocity type", 10 /* PropertyTypeForEdition.TextureType */, "GEOMETRY BUFFERS")
|
|
558
584
|
], NodeRenderGraphGeometryRendererBlock.prototype, "linearVelocityType", void 0);
|
|
559
585
|
RegisterClass("BABYLON.NodeRenderGraphGeometryRendererBlock", NodeRenderGraphGeometryRendererBlock);
|
|
560
586
|
//# sourceMappingURL=geometryRendererBlock.js.map
|