angular-three-soba 4.0.0-next.9 → 4.0.0-next.91
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/abstractions/README.md +1 -1
- package/abstractions/lib/catmull-rom-line.d.ts +16 -15
- package/abstractions/lib/edges.d.ts +17 -15
- package/abstractions/lib/text-3d.d.ts +1 -1
- package/abstractions/lib/text.d.ts +5 -1
- package/cameras/lib/camera-content.d.ts +1 -2
- package/cameras/lib/cube-camera.d.ts +2 -2
- package/cameras/lib/orthographic-camera.d.ts +6 -5
- package/cameras/lib/perspective-camera.d.ts +2 -5
- package/controls/README.md +28 -28
- package/controls/index.d.ts +1 -0
- package/controls/lib/camera-controls.d.ts +1 -1
- package/controls/lib/orbit-controls.d.ts +11 -6
- package/controls/lib/trackball-controls.d.ts +27 -0
- package/fesm2022/angular-three-soba-abstractions.mjs +87 -47
- package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
- package/fesm2022/angular-three-soba-cameras.mjs +61 -37
- package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2022/angular-three-soba-controls.mjs +128 -36
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-gizmos.mjs +124 -86
- package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -1
- package/fesm2022/angular-three-soba-loaders.mjs +3 -3
- package/fesm2022/angular-three-soba-materials.mjs +82 -86
- package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
- package/fesm2022/angular-three-soba-misc.mjs +55 -48
- package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2022/angular-three-soba-performances.mjs +152 -35
- package/fesm2022/angular-three-soba-performances.mjs.map +1 -1
- package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-staging.mjs +183 -144
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/fesm2022/angular-three-soba-stats.mjs +3 -3
- package/gizmos/lib/gizmo-helper/gizmo-helper.d.ts +4 -3
- package/loaders/README.md +39 -39
- package/materials/lib/mesh-transmission-material.d.ts +4 -4
- package/misc/README.md +16 -16
- package/misc/lib/deprecated.d.ts +0 -6
- package/misc/lib/depth-buffer.d.ts +1 -1
- package/misc/lib/fbo.d.ts +1 -3
- package/misc/lib/html/html-content.d.ts +2 -2
- package/misc/lib/html/html.d.ts +4 -4
- package/package.json +6 -6
- package/performances/index.d.ts +1 -0
- package/performances/lib/adaptive-dpr.d.ts +1 -1
- package/performances/lib/bvh.d.ts +49 -0
- package/shaders/lib/mesh-refraction-material.d.ts +2 -2
- package/staging/lib/caustics.d.ts +3 -3
- package/staging/lib/environment/inject-environment.d.ts +1 -2
- package/staging/lib/render-texture.d.ts +5 -4
- package/staging/lib/stage.d.ts +12 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular-three-soba-materials.mjs","sources":["../../../../libs/soba/materials/src/lib/custom-shader-material.ts","../../../../libs/soba/materials/src/lib/mesh-distort-material.ts","../../../../libs/soba/materials/src/lib/mesh-portal-material.ts","../../../../libs/soba/materials/src/lib/mesh-reflector-material.ts","../../../../libs/soba/materials/src/lib/mesh-refraction-material.ts","../../../../libs/soba/materials/src/lib/mesh-transmission-material.ts","../../../../libs/soba/materials/src/lib/mesh-wobble-material.ts","../../../../libs/soba/materials/src/lib/point-material.ts","../../../../libs/soba/materials/src/angular-three-soba-materials.ts"],"sourcesContent":["import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n} from '@angular/core';\nimport { is, NgtAnyRecord, NgtArgs, NgtAttachable, omit, pick } from 'angular-three';\nimport * as THREE from 'three';\nimport CustomShaderMaterial from 'three-custom-shader-material/vanilla';\n\n@Component({\n\tselector: 'ngts-custom-shader-material',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[material()]\" [attach]=\"attach()\" [parameters]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsCustomShaderMaterial {\n\tbaseMaterial = input.required<THREE.Material | typeof THREE.Material | ElementRef<THREE.Material>>();\n\tattach = input<NgtAttachable>('material');\n\toptions = input({} as Omit<ConstructorParameters<typeof CustomShaderMaterial>[0], 'baseMaterial'>);\n\tparameters = omit(this.options, ['fragmentShader', 'vertexShader', 'uniforms', 'cacheKey']);\n\n\tprivate base = computed(() => {\n\t\tconst baseMaterial = this.baseMaterial();\n\t\treturn is.ref(baseMaterial) ? baseMaterial.nativeElement : baseMaterial;\n\t});\n\n\tprivate fragmentShader = pick(this.options, 'fragmentShader');\n\tprivate vertexShader = pick(this.options, 'vertexShader');\n\tprivate uniforms = pick(this.options, 'uniforms');\n\tprivate cacheKey = pick(this.options, 'cacheKey');\n\n\tmaterial = computed(() => {\n\t\tconst [base, fragmentShader, vertexShader, uniforms, cacheKey] = [\n\t\t\tthis.base(),\n\t\t\tthis.fragmentShader(),\n\t\t\tthis.vertexShader(),\n\t\t\tthis.uniforms(),\n\t\t\tthis.cacheKey(),\n\t\t];\n\n\t\t// NOTE: this is specific to angular-three\n\t\tif (is.instance(base)) {\n\t\t\tdelete (base as NgtAnyRecord)['__ngt__'];\n\t\t\tdelete (base as NgtAnyRecord)['__ngt_renderer__'];\n\t\t}\n\n\t\treturn new CustomShaderMaterial({\n\t\t\tbaseMaterial: base,\n\t\t\tfragmentShader,\n\t\t\tvertexShader,\n\t\t\tuniforms,\n\t\t\tcacheKey,\n\t\t});\n\t});\n\n\tconstructor() {\n\t\teffect((onCleanup) => {\n\t\t\tconst material = this.material();\n\t\t\tonCleanup(() => material.dispose());\n\t\t});\n\t}\n}\n","import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, inject, input } from '@angular/core';\nimport { injectBeforeRender, NgtArgs, NgtAttachable, NgtThreeElements, omit, pick } from 'angular-three';\nimport { MeshDistortMaterial, MeshDistortMaterialParameters } from 'angular-three-soba/vanilla-exports';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\n\nexport interface NgtsMeshDistortMaterialOptions\n\textends Partial<MeshDistortMaterialParameters>,\n\t\tPartial<NgtThreeElements['ngt-mesh-physical-material']> {\n\tspeed: number;\n\tfactor?: number;\n}\n\nconst defaultOptions: NgtsMeshDistortMaterialOptions = {\n\tspeed: 1,\n};\n\n@Component({\n\tselector: 'ngts-mesh-distort-material',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[material]\" [attach]=\"attach()\" [parameters]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsMeshDistortMaterial {\n\tattach = input<NgtAttachable>('material');\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['speed']);\n\n\tmaterial = new MeshDistortMaterial();\n\n\tprivate speed = pick(this.options, 'speed');\n\n\tconstructor() {\n\t\tinject(DestroyRef).onDestroy(() => this.material.dispose());\n\n\t\tinjectBeforeRender(({ clock }) => {\n\t\t\tthis.material.time = clock.getElapsedTime() * this.speed();\n\t\t});\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tcontentChild,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tInjector,\n\tinput,\n\tsignal,\n\tTemplateRef,\n\tviewChild,\n} from '@angular/core';\nimport {\n\textend,\n\tgetInstanceState,\n\tinjectBeforeRender,\n\tinjectStore,\n\tis,\n\tNgtAttachable,\n\tNgtComputeFunction,\n\tNgtThreeElements,\n\tomit,\n\tpick,\n} from 'angular-three';\nimport { getVersion, injectFBO, injectIntersect } from 'angular-three-soba/misc';\nimport { NgtsRenderTexture, NgtsRenderTextureContent } from 'angular-three-soba/staging';\nimport {\n\tMeshPortalMaterial,\n\tmeshPortalMaterialApplySDF,\n\tNgtMeshPortalMaterial,\n} from 'angular-three-soba/vanilla-exports';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { FullScreenQuad } from 'three-stdlib';\n\n/**\n * This directive is used inside of the render texture, hence has access to the render texture store (a portal store)\n */\n@Directive({ selector: 'ngts-manage-portal-scene' })\nexport class ManagePortalScene {\n\tevents = input<boolean>();\n\trootScene = input.required<THREE.Scene>();\n\tmaterial = input.required<NgtMeshPortalMaterial>();\n\tpriority = input.required<number>();\n\tworldUnits = input.required<boolean>();\n\n\tconstructor() {\n\t\tconst injector = inject(Injector);\n\t\tconst renderTextureStore = injectStore();\n\n\t\tconst buffer1 = injectFBO();\n\t\tconst buffer2 = injectFBO();\n\n\t\tconst fullScreenQuad = computed(() => {\n\t\t\t// This fullscreen-quad is used to blend the two textures\n\t\t\tconst blend = { value: 0 };\n\t\t\tconst quad = new FullScreenQuad(\n\t\t\t\tnew THREE.ShaderMaterial({\n\t\t\t\t\tuniforms: {\n\t\t\t\t\t\ta: { value: buffer1().texture },\n\t\t\t\t\t\tb: { value: buffer2().texture },\n\t\t\t\t\t\tblend,\n\t\t\t\t\t},\n\t\t\t\t\tvertexShader: /*glsl*/ `\n\t\t varying vec2 vUv;\n\t\t void main() {\n\t\t vUv = uv;\n\t\t gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t }`,\n\t\t\t\t\tfragmentShader: /*glsl*/ `\n\t\t uniform sampler2D a;\n\t\t uniform sampler2D b;\n\t\t uniform float blend;\n\t\t varying vec2 vUv;\n\t\t #include <packing>\n\t\t void main() {\n\t\t vec4 ta = texture2D(a, vUv);\n\t\t vec4 tb = texture2D(b, vUv);\n\t\t gl_FragColor = mix(tb, ta, blend);\n\t\t #include <tonemapping_fragment>\n\t\t #include <${getVersion() >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>\n\t\t }`,\n\t\t\t\t}),\n\t\t\t);\n\t\t\treturn [quad, blend] as const;\n\t\t});\n\n\t\teffect(() => {\n\t\t\trenderTextureStore.scene().matrixAutoUpdate = false;\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst [events, setEvents] = [this.events(), renderTextureStore.setEvents()];\n\t\t\tif (!events) return;\n\t\t\tsetEvents({ enabled: events });\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst priority = this.priority();\n\n\t\t\t// we start the before render in effect because we need the priority input to be resolved\n\t\t\tconst sub = injectBeforeRender(\n\t\t\t\t({ gl, camera }) => {\n\t\t\t\t\tconst material = this.material();\n\n\t\t\t\t\tconst instanceState = getInstanceState(material);\n\t\t\t\t\tif (!instanceState) return;\n\n\t\t\t\t\tconst parent = instanceState.parent();\n\t\t\t\t\tif (!parent) return;\n\n\t\t\t\t\tconst materialBlend = 'blend' in material && typeof material.blend === 'number' ? material.blend : 0;\n\t\t\t\t\tconst [worldUnits, rootScene, scene, [quad, blend]] = [\n\t\t\t\t\t\tthis.worldUnits(),\n\t\t\t\t\t\tthis.rootScene(),\n\t\t\t\t\t\trenderTextureStore.snapshot.scene,\n\t\t\t\t\t\tfullScreenQuad(),\n\t\t\t\t\t];\n\t\t\t\t\t// Move portal contents along with the parent if worldUnits is true\n\t\t\t\t\tif (!worldUnits) {\n\t\t\t\t\t\t// If the portal renders exclusively the original scene needs to be updated\n\t\t\t\t\t\tif (priority && materialBlend === 1) parent['updateWorldMatrix'](true, false);\n\t\t\t\t\t\tscene.matrixWorld.copy(parent['matrixWorld']);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tscene.matrixWorld.identity();\n\t\t\t\t\t}\n\n\t\t\t\t\t// This bit is only necessary if the portal is blended, now it has a render-priority\n\t\t\t\t\t// and will take over the render loop\n\t\t\t\t\tif (priority) {\n\t\t\t\t\t\tif (materialBlend > 0 && materialBlend < 1) {\n\t\t\t\t\t\t\t// If blend is ongoing (> 0 and < 1) then we need to render both the root scene\n\t\t\t\t\t\t\t// and the portal scene, both will then be mixed in the quad from above\n\t\t\t\t\t\t\tblend.value = materialBlend;\n\t\t\t\t\t\t\tgl.setRenderTarget(buffer1());\n\t\t\t\t\t\t\tgl.render(scene, camera);\n\t\t\t\t\t\t\tgl.setRenderTarget(buffer2());\n\t\t\t\t\t\t\tgl.render(rootScene, camera);\n\t\t\t\t\t\t\tgl.setRenderTarget(null);\n\t\t\t\t\t\t\tquad.render(gl);\n\t\t\t\t\t\t} else if (materialBlend === 1) {\n\t\t\t\t\t\t\t// However if blend is 1 we only need to render the portal scene\n\t\t\t\t\t\t\tgl.render(scene, camera);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{ injector, priority },\n\t\t\t);\n\t\t\tonCleanup(() => sub());\n\t\t});\n\t}\n}\n\nexport interface NgtsMeshPortalMaterialOptions extends Partial<NgtThreeElements['ngt-shader-material']> {\n\t/** Mix the portals own scene with the world scene, 0 = world scene render,\n\t * 0.5 = both scenes render, 1 = portal scene renders, defaults to 0. */\n\tblend: number;\n\t/** Edge fade blur, 0 = no blur (default) */\n\tblur: number;\n\t/** SDF resolution, the smaller the faster is the start-up time (default: 512) */\n\tresolution: number;\n\t/** By default portals use relative coordinates, contents are affects by the local matrix transform */\n\tworldUnits: boolean;\n\t/** Optional event priority, defaults to 0 */\n\teventPriority: number;\n\t/** Optional render priority, defaults to 0 */\n\trenderPriority: number;\n\t/** Optionally diable events inside the portal, defaults to false */\n\tevents: boolean;\n}\n\nconst defaultOptions: NgtsMeshPortalMaterialOptions = {\n\tblend: 0,\n\tblur: 0,\n\tresolution: 512,\n\tworldUnits: false,\n\teventPriority: 0,\n\trenderPriority: 0,\n\tevents: false,\n};\n\n@Component({\n\tselector: 'ngts-mesh-portal-material',\n\ttemplate: `\n\t\t<ngt-mesh-portal-material\n\t\t\t#material\n\t\t\t[attach]=\"attach()\"\n\t\t\t[blur]=\"blur()\"\n\t\t\t[blend]=\"0\"\n\t\t\t[resolution]=\"materialResolution()\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t>\n\t\t\t<ngts-render-texture\n\t\t\t\t[options]=\"{\n\t\t\t\t\tframes: renderTextureFrames(),\n\t\t\t\t\teventPriority: eventPriority(),\n\t\t\t\t\trenderPriority: renderPriority(),\n\t\t\t\t\tcompute: renderTextureCompute,\n\t\t\t\t}\"\n\t\t\t>\n\t\t\t\t<ng-template renderTextureContent let-injector=\"injector\">\n\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"content()\" [ngTemplateOutletInjector]=\"injector\" />\n\t\t\t\t\t<ngts-manage-portal-scene\n\t\t\t\t\t\t[events]=\"events()\"\n\t\t\t\t\t\t[rootScene]=\"rootScene()\"\n\t\t\t\t\t\t[priority]=\"priority()\"\n\t\t\t\t\t\t[material]=\"material\"\n\t\t\t\t\t\t[worldUnits]=\"worldUnits()\"\n\t\t\t\t\t/>\n\t\t\t\t</ng-template>\n\t\t\t</ngts-render-texture>\n\t\t</ngt-mesh-portal-material>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsRenderTexture, NgtsRenderTextureContent, ManagePortalScene, NgTemplateOutlet],\n})\nexport class NgtsMeshPortalMaterial {\n\tattach = input<NgtAttachable>('material');\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'blur',\n\t\t'resolution',\n\t\t'worldUnits',\n\t\t'eventPriority',\n\t\t'renderPriority',\n\t\t'events',\n\t]);\n\n\tprotected blur = pick(this.options, 'blur');\n\tprotected eventPriority = pick(this.options, 'eventPriority');\n\tprotected renderPriority = pick(this.options, 'renderPriority');\n\tprotected events = pick(this.options, 'events');\n\tprotected worldUnits = pick(this.options, 'worldUnits');\n\n\tmaterialRef = viewChild.required<ElementRef<InstanceType<typeof MeshPortalMaterial>>>('material');\n\tprotected content = contentChild.required(TemplateRef);\n\n\tprivate store = injectStore();\n\tprotected rootScene = this.store.scene;\n\n\tprotected materialResolution = computed(() => [\n\t\tthis.store.size.width() * this.store.viewport.dpr(),\n\t\tthis.store.size.height() * this.store.viewport.dpr(),\n\t]);\n\tprivate resolution = pick(this.options, 'resolution');\n\n\tprivate parent = signal<THREE.Mesh | null>(null);\n\tprivate visible = injectIntersect(this.parent, { source: signal(true) });\n\n\tprotected renderTextureFrames = computed(() => (this.visible() ? Infinity : 0));\n\n\tprotected renderTextureCompute = (...args: Parameters<NgtComputeFunction>) => {\n\t\tconst [parent, material] = [this.parent(), this.materialRef().nativeElement];\n\t\tif (!parent) return false;\n\n\t\tconst [event, state] = args;\n\n\t\tstate.snapshot.pointer.set(\n\t\t\t(event.offsetX / state.snapshot.size.width) * 2 - 1,\n\t\t\t-(event.offsetY / state.snapshot.size.height) * 2 + 1,\n\t\t);\n\t\tstate.snapshot.raycaster.setFromCamera(state.snapshot.pointer, state.snapshot.camera);\n\n\t\tif ('blend' in material && material.blend === 0) {\n\t\t\t// We run a quick check against the parent, if it isn't hit there's no need to raycast at all\n\t\t\tconst [intersection] = state.snapshot.raycaster.intersectObject(parent);\n\t\t\tif (!intersection) {\n\t\t\t\t// Cancel out the raycast camera if the parent mesh isn't hit\n\t\t\t\tObject.assign(state.snapshot.raycaster, { camera: undefined });\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn;\n\t};\n\n\tprotected priority = signal(0);\n\n\tconstructor() {\n\t\textend({ MeshPortalMaterial });\n\n\t\teffect(() => {\n\t\t\tconst material = this.materialRef().nativeElement;\n\n\t\t\tconst instanceState = getInstanceState(material);\n\t\t\tif (!instanceState) return;\n\n\t\t\tconst materialParent = instanceState.parent();\n\t\t\tif (!materialParent || !is.three<THREE.Mesh>(materialParent, 'isMesh')) return;\n\n\t\t\t// Since the ref above is not tied to a mesh directly (we're inside a material),\n\t\t\t// it has to be tied to the parent mesh here\n\t\t\tthis.parent.set(materialParent);\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst events = this.events();\n\t\t\tif (!events) return;\n\n\t\t\tconst setEvents = this.store.setEvents();\n\t\t\tsetEvents({ enabled: !events });\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst [material, parent] = [this.materialRef().nativeElement, this.parent()];\n\t\t\tif (!parent) return;\n\n\t\t\tconst [resolution, blur, gl] = [this.resolution(), this.blur(), this.store.gl()];\n\n\t\t\t// apply the SDF mask once\n\t\t\tif (blur && material.sdf == null) {\n\t\t\t\tmeshPortalMaterialApplySDF(parent, resolution, gl);\n\t\t\t}\n\t\t});\n\n\t\tinjectBeforeRender(() => {\n\t\t\tconst material = this.materialRef().nativeElement;\n\t\t\tconst priority =\n\t\t\t\t'blend' in material && typeof material.blend === 'number' && material.blend > 0\n\t\t\t\t\t? Math.max(1, this.renderPriority())\n\t\t\t\t\t: 0;\n\n\t\t\t// If blend is > 0 then the portal is being entered, the render-priority must change\n\t\t\tif (this.priority() !== priority) {\n\t\t\t\tthis.priority.set(priority);\n\t\t\t}\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tDestroyRef,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport {\n\tapplyProps,\n\tgetInstanceState,\n\tinjectBeforeRender,\n\tinjectStore,\n\tNgtAnyRecord,\n\tNgtArgs,\n\tNgtAttachable,\n\tNgtThreeElements,\n\tomit,\n\tpick,\n} from 'angular-three';\nimport { BlurPass, MeshReflectorMaterial } from 'angular-three-soba/vanilla-exports';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\n\nexport interface NgtsMeshReflectorMaterialOptions extends Partial<NgtThreeElements['ngt-mesh-standard-material']> {\n\tresolution: number;\n\tmixBlur: number;\n\tmixStrength: number;\n\tblur: [number, number] | number;\n\tmirror: number;\n\tminDepthThreshold: number;\n\tmaxDepthThreshold: number;\n\tdepthScale: number;\n\tdepthToBlurRatioBias: number;\n\tdistortion: number;\n\tmixContrast: number;\n\treflectorOffset: number;\n\tdistortionMap?: THREE.Texture;\n}\n\nconst defaultOptions: NgtsMeshReflectorMaterialOptions = {\n\tmixBlur: 0,\n\tmixStrength: 1,\n\tresolution: 256,\n\tblur: [0, 0],\n\tminDepthThreshold: 0.9,\n\tmaxDepthThreshold: 1,\n\tdepthScale: 0,\n\tdepthToBlurRatioBias: 0.25,\n\tmirror: 0,\n\tdistortion: 1,\n\tmixContrast: 1,\n\treflectorOffset: 0,\n};\n\n@Component({\n\tselector: 'ngts-mesh-reflector-material',\n\ttemplate: `\n\t\t<ngt-primitive #material *args=\"[material()]\" [attach]=\"attach()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsMeshReflectorMaterial {\n\tattach = input<NgtAttachable>('material');\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprivate parameters = omit(this.options, [\n\t\t'distortionMap',\n\t\t'resolution',\n\t\t'mixBlur',\n\t\t'mixStrength',\n\t\t'blur',\n\t\t'minDepthThreshold',\n\t\t'maxDepthThreshold',\n\t\t'depthScale',\n\t\t'depthToBlurRatioBias',\n\t\t'mirror',\n\t\t'distortion',\n\t\t'mixContrast',\n\t\t'reflectorOffset',\n\t]);\n\n\tprivate store = injectStore();\n\n\tmaterialRef = viewChild<ElementRef<MeshReflectorMaterial>>('material');\n\n\tprivate reflectOptions = pick(this.options, [\n\t\t'distortionMap',\n\t\t'resolution',\n\t\t'mixBlur',\n\t\t'mixStrength',\n\t\t'blur',\n\t\t'minDepthThreshold',\n\t\t'maxDepthThreshold',\n\t\t'depthScale',\n\t\t'depthToBlurRatioBias',\n\t\t'mirror',\n\t\t'distortion',\n\t\t'mixContrast',\n\t\t'reflectorOffset',\n\t]);\n\n\tprivate blur = pick(this.reflectOptions, 'blur');\n\n\tprivate normalizedBlur = computed(() => {\n\t\tconst blur = this.blur();\n\t\treturn Array.isArray(blur) ? blur : [blur, blur];\n\t});\n\tprivate hasBlur = computed(() => this.normalizedBlur()[0] + this.normalizedBlur()[1] > 0);\n\n\tprivate reflectorPlane = new THREE.Plane();\n\tprivate normal = new THREE.Vector3();\n\tprivate reflectorWorldPosition = new THREE.Vector3();\n\tprivate cameraWorldPosition = new THREE.Vector3();\n\tprivate rotationMatrix = new THREE.Matrix4();\n\tprivate lookAtPosition = new THREE.Vector3(0, 0, -1);\n\tprivate clipPlane = new THREE.Vector4();\n\tprivate view = new THREE.Vector3();\n\tprivate target = new THREE.Vector3();\n\tprivate q = new THREE.Vector4();\n\tprivate textureMatrix = new THREE.Matrix4();\n\tprivate virtualCamera = new THREE.PerspectiveCamera();\n\n\tprivate reflectState = computed(() => {\n\t\tconst [\n\t\t\tgl,\n\t\t\t{\n\t\t\t\tresolution,\n\t\t\t\tminDepthThreshold,\n\t\t\t\tmaxDepthThreshold,\n\t\t\t\tdepthScale,\n\t\t\t\tdepthToBlurRatioBias,\n\t\t\t\tmirror,\n\t\t\t\tmixBlur,\n\t\t\t\tmixStrength,\n\t\t\t\tdistortion,\n\t\t\t\tdistortionMap,\n\t\t\t\tmixContrast,\n\t\t\t},\n\t\t\tblur,\n\t\t\thasBlur,\n\t\t] = [this.store.gl(), this.reflectOptions(), this.normalizedBlur(), this.hasBlur()];\n\n\t\tconst renderTargetParameters = {\n\t\t\tminFilter: THREE.LinearFilter,\n\t\t\tmagFilter: THREE.LinearFilter,\n\t\t\ttype: THREE.HalfFloatType,\n\t\t};\n\n\t\tconst fbo1 = new THREE.WebGLRenderTarget(resolution, resolution, renderTargetParameters);\n\t\tfbo1.depthBuffer = true;\n\t\tfbo1.depthTexture = new THREE.DepthTexture(resolution, resolution);\n\t\tfbo1.depthTexture.format = THREE.DepthFormat;\n\t\tfbo1.depthTexture.type = THREE.UnsignedShortType;\n\t\tconst fbo2 = new THREE.WebGLRenderTarget(resolution, resolution, renderTargetParameters);\n\n\t\tconst blurPass = new BlurPass({\n\t\t\tgl,\n\t\t\tresolution,\n\t\t\twidth: blur[0],\n\t\t\theight: blur[1],\n\t\t\tminDepthThreshold,\n\t\t\tmaxDepthThreshold,\n\t\t\tdepthScale,\n\t\t\tdepthToBlurRatioBias,\n\t\t});\n\n\t\tconst defines: NgtAnyRecord = {};\n\n\t\tif (hasBlur) {\n\t\t\tdefines['USE_BLUR'] = '';\n\t\t}\n\n\t\tif (depthScale > 0) {\n\t\t\tdefines['USE_DEPTH'] = '';\n\t\t}\n\n\t\tif (distortionMap) {\n\t\t\tdefines['USE_DISTORTION'] = '';\n\t\t}\n\n\t\tconst reflectorParameters = {\n\t\t\tmirror,\n\t\t\ttextureMatrix: this.textureMatrix,\n\t\t\tmixBlur,\n\t\t\ttDiffuse: fbo1.texture,\n\t\t\ttDepth: fbo1.depthTexture,\n\t\t\ttDiffuseBlur: fbo2.texture,\n\t\t\thasBlur,\n\t\t\tmixStrength,\n\t\t\tminDepthThreshold,\n\t\t\tmaxDepthThreshold,\n\t\t\tdepthScale,\n\t\t\tdepthToBlurRatioBias,\n\t\t\tdistortion,\n\t\t\tdistortionMap,\n\t\t\tmixContrast,\n\t\t\tdefines,\n\t\t};\n\n\t\treturn { fbo1, fbo2, blurPass, reflectorParameters };\n\t});\n\n\tprivate definesKey = computed(() => {\n\t\tconst defines = this.reflectState().reflectorParameters.defines;\n\t\treturn Object.entries(defines).reduce((acc, [key, value]) => (value != null ? `${acc} ${key}` : acc), '');\n\t});\n\n\tmaterial = computed(() => {\n\t\tconst prevMaterial = untracked(this.materialRef)?.nativeElement;\n\n\t\tif (prevMaterial) {\n\t\t\tprevMaterial.dispose();\n\t\t\tdelete (prevMaterial as NgtAnyRecord)['__ngt__'];\n\t\t\tdelete (prevMaterial as NgtAnyRecord)['__ngt_renderer__'];\n\t\t}\n\n\t\t// tracking defines key so that the material is recreated when the defines change\n\t\tthis.definesKey();\n\t\treturn new MeshReflectorMaterial();\n\t});\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst material = this.materialRef()?.nativeElement;\n\t\t\tif (!material) return;\n\t\t\tconst { reflectorParameters } = this.reflectState();\n\t\t\tapplyProps(material, { ...reflectorParameters, ...this.parameters() });\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tconst material = this.materialRef()?.nativeElement;\n\t\t\tif (material) {\n\t\t\t\tmaterial.dispose();\n\t\t\t\tdelete (material as NgtAnyRecord)['__ngt__'];\n\t\t\t\tdelete (material as NgtAnyRecord)['__ngt_renderer__'];\n\t\t\t}\n\t\t});\n\n\t\tinjectBeforeRender(({ gl, scene }) => {\n\t\t\tconst material = this.materialRef()?.nativeElement;\n\t\t\tif (!material) return;\n\n\t\t\tconst instanceState = getInstanceState(material);\n\t\t\tif (!instanceState) return;\n\n\t\t\tconst parent = Reflect.get(material, 'parent') ?? untracked(instanceState.parent);\n\t\t\tif (!parent) return;\n\n\t\t\tconst { fbo1, fbo2, blurPass } = this.reflectState();\n\t\t\tconst hasBlur = this.hasBlur();\n\n\t\t\tparent.visible = false;\n\t\t\tconst currentXrEnabled = gl.xr.enabled;\n\t\t\tconst currentShadowAutoUpdate = gl.shadowMap.autoUpdate;\n\t\t\tthis.beforeRender();\n\t\t\tgl.xr.enabled = false;\n\t\t\tgl.shadowMap.autoUpdate = false;\n\t\t\tgl.setRenderTarget(fbo1);\n\t\t\tgl.state.buffers.depth.setMask(true);\n\t\t\tif (!gl.autoClear) gl.clear();\n\t\t\tgl.render(scene, this.virtualCamera);\n\t\t\tif (hasBlur) blurPass.render(gl, fbo1, fbo2);\n\t\t\tgl.xr.enabled = currentXrEnabled;\n\t\t\tgl.shadowMap.autoUpdate = currentShadowAutoUpdate;\n\t\t\tparent.visible = true;\n\t\t\tgl.setRenderTarget(null);\n\t\t});\n\t}\n\n\tprivate beforeRender() {\n\t\tconst material = this.materialRef()?.nativeElement;\n\t\tif (!material) return;\n\n\t\tconst instanceState = getInstanceState(material);\n\t\tif (!instanceState) return;\n\n\t\tconst parent = Reflect.get(material, 'parent') ?? untracked(instanceState.parent);\n\t\tif (!parent) return;\n\n\t\tconst { camera } = this.store.snapshot;\n\t\tconst { reflectorOffset } = untracked(this.reflectOptions);\n\n\t\tthis.reflectorWorldPosition.setFromMatrixPosition(parent.matrixWorld);\n\t\tthis.cameraWorldPosition.setFromMatrixPosition(camera.matrixWorld);\n\t\tthis.rotationMatrix.extractRotation(parent.matrixWorld);\n\t\tthis.normal.set(0, 0, 1);\n\t\tthis.normal.applyMatrix4(this.rotationMatrix);\n\t\tthis.reflectorWorldPosition.addScaledVector(this.normal, reflectorOffset);\n\t\tthis.view.subVectors(this.reflectorWorldPosition, this.cameraWorldPosition);\n\t\t// Avoid rendering when reflector is facing away\n\t\tif (this.view.dot(this.normal) > 0) return;\n\t\tthis.view.reflect(this.normal).negate();\n\t\tthis.view.add(this.reflectorWorldPosition);\n\t\tthis.rotationMatrix.extractRotation(camera.matrixWorld);\n\t\tthis.lookAtPosition.set(0, 0, -1);\n\t\tthis.lookAtPosition.applyMatrix4(this.rotationMatrix);\n\t\tthis.lookAtPosition.add(this.cameraWorldPosition);\n\t\tthis.target.subVectors(this.reflectorWorldPosition, this.lookAtPosition);\n\t\tthis.target.reflect(this.normal).negate();\n\t\tthis.target.add(this.reflectorWorldPosition);\n\t\tthis.virtualCamera.position.copy(this.view);\n\t\tthis.virtualCamera.up.set(0, 1, 0);\n\t\tthis.virtualCamera.up.applyMatrix4(this.rotationMatrix);\n\t\tthis.virtualCamera.up.reflect(this.normal);\n\t\tthis.virtualCamera.lookAt(this.target);\n\t\tthis.virtualCamera.far = camera.far; // Used in WebGLBackground\n\t\tthis.virtualCamera.updateMatrixWorld();\n\t\tthis.virtualCamera.projectionMatrix.copy(camera.projectionMatrix);\n\t\t// Update the texture matrix\n\t\tthis.textureMatrix.set(0.5, 0.0, 0.0, 0.5, 0.0, 0.5, 0.0, 0.5, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0, 1.0);\n\t\tthis.textureMatrix.multiply(this.virtualCamera.projectionMatrix);\n\t\tthis.textureMatrix.multiply(this.virtualCamera.matrixWorldInverse);\n\t\tthis.textureMatrix.multiply(parent.matrixWorld);\n\t\t// Now update projection matrix with new clip plane, implementing code from: http://www.terathon.com/code/oblique.html\n\t\t// Paper explaining this technique: http://www.terathon.com/lengyel/Lengyel-Oblique.pdf\n\t\tthis.reflectorPlane.setFromNormalAndCoplanarPoint(this.normal, this.reflectorWorldPosition);\n\t\tthis.reflectorPlane.applyMatrix4(this.virtualCamera.matrixWorldInverse);\n\t\tthis.clipPlane.set(\n\t\t\tthis.reflectorPlane.normal.x,\n\t\t\tthis.reflectorPlane.normal.y,\n\t\t\tthis.reflectorPlane.normal.z,\n\t\t\tthis.reflectorPlane.constant,\n\t\t);\n\t\tconst projectionMatrix = this.virtualCamera.projectionMatrix;\n\t\tthis.q.x = (Math.sign(this.clipPlane.x) + projectionMatrix.elements[8]) / projectionMatrix.elements[0];\n\t\tthis.q.y = (Math.sign(this.clipPlane.y) + projectionMatrix.elements[9]) / projectionMatrix.elements[5];\n\t\tthis.q.z = -1.0;\n\t\tthis.q.w = (1.0 + projectionMatrix.elements[10]) / projectionMatrix.elements[14];\n\t\t// Calculate the scaled plane vector\n\t\tthis.clipPlane.multiplyScalar(2.0 / this.clipPlane.dot(this.q));\n\t\t// Replacing the third row of the projection matrix\n\t\tprojectionMatrix.elements[2] = this.clipPlane.x;\n\t\tprojectionMatrix.elements[6] = this.clipPlane.y;\n\t\tprojectionMatrix.elements[10] = this.clipPlane.z + 1.0;\n\t\tprojectionMatrix.elements[14] = this.clipPlane.w;\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tDestroyRef,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport {\n\tgetInstanceState,\n\tinjectBeforeRender,\n\tinjectStore,\n\tis,\n\tNgtAnyRecord,\n\tNgtArgs,\n\tNgtAttachable,\n\tNgtThreeElements,\n\tomit,\n\tpick,\n} from 'angular-three';\nimport { MeshRefractionMaterial } from 'angular-three-soba/shaders';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { MeshBVH, MeshBVHUniformStruct, SAH } from 'three-mesh-bvh';\n\nexport interface NgtsMeshRefractionMaterialOptions extends Partial<NgtThreeElements['ngt-shader-material']> {\n\t/** Number of ray-cast bounces, it can be expensive to have too many, 2 */\n\tbounces: number;\n\t/** Refraction index, 2.4 */\n\tior: number;\n\t/** Fresnel (strip light), 0 */\n\tfresnel: number;\n\t/** RGB shift intensity, can be expensive, 0 */\n\taberrationStrength: number;\n\t/** Color, white */\n\tcolor: THREE.ColorRepresentation;\n\t/** If this is on it uses fewer ray casts for the RGB shift sacrificing physical accuracy, true */\n\tfastChroma: boolean;\n}\n\nconst defaultOptions: NgtsMeshRefractionMaterialOptions = {\n\tbounces: 2,\n\tior: 2.4,\n\tfresnel: 0,\n\taberrationStrength: 0,\n\tcolor: 'white',\n\tfastChroma: true,\n};\n\n@Component({\n\tselector: 'ngts-mesh-refraction-material',\n\ttemplate: `\n\t\t<ngt-primitive\n\t\t\t*args=\"[material()]\"\n\t\t\t#material\n\t\t\t[attach]=\"attach()\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t\t[envMap]=\"envMap()\"\n\t\t\t[aberrationStrength]=\"aberrationStrength()\"\n\t\t\t[resolution]=\"resolution()\"\n\t\t\t[defines]=\"defines()\"\n\t\t>\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsMeshRefractionMaterial {\n\tenvMap = input.required<THREE.CubeTexture | THREE.Texture>();\n\tattach = input<NgtAttachable>('material');\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['fastChroma', 'aberrationStrength']);\n\n\tprivate fastChroma = pick(this.options, 'fastChroma');\n\tprotected aberrationStrength = pick(this.options, 'aberrationStrength');\n\n\tmaterialRef = viewChild<ElementRef<InstanceType<typeof MeshRefractionMaterial>>>('material');\n\n\tprivate store = injectStore();\n\n\tprotected resolution = computed(() => [this.store.size.width(), this.store.size.height()]);\n\tprotected defines = computed(() => {\n\t\tconst _defines = {} as { [key: string]: string };\n\t\tconst [envMap, aberrationStrength, fastChroma] = [\n\t\t\tuntracked(this.envMap),\n\t\t\tthis.aberrationStrength(),\n\t\t\tthis.fastChroma(),\n\t\t];\n\t\tconst isCubeMap = is.three<THREE.CubeTexture>(envMap, 'isCubeTexture');\n\n\t\tconst w = (isCubeMap ? envMap.image[0]?.width : envMap.image.width) ?? 1024;\n\t\tconst cubeSize = w / 4;\n\t\tconst _lodMax = Math.floor(Math.log2(cubeSize));\n\t\tconst _cubeSize = Math.pow(2, _lodMax);\n\t\tconst width = 3 * Math.max(_cubeSize, 16 * 7);\n\t\tconst height = 4 * _cubeSize;\n\n\t\tif (isCubeMap) _defines['ENVMAP_TYPE_CUBEM'] = '';\n\t\t_defines['CUBEUV_TEXEL_WIDTH'] = `${1.0 / width}`;\n\t\t_defines['CUBEUV_TEXEL_HEIGHT'] = `${1.0 / height}`;\n\t\t_defines['CUBEUV_MAX_MIP'] = `${_lodMax}.0`;\n\n\t\t// Add defines from chromatic aberration\n\t\tif (aberrationStrength > 0) _defines['CHROMATIC_ABERRATIONS'] = '';\n\t\tif (fastChroma) _defines['FAST_CHROMA'] = '';\n\n\t\treturn _defines;\n\t});\n\n\tprivate defineKeys = computed(() => {\n\t\treturn Object.keys(this.defines()).join(' ');\n\t});\n\n\tprotected material = computed(() => {\n\t\tconst prevMaterial = untracked(this.materialRef)?.nativeElement;\n\n\t\tif (prevMaterial) {\n\t\t\tprevMaterial.dispose();\n\t\t\tdelete (prevMaterial as NgtAnyRecord)['__ngt__'];\n\t\t\tdelete (prevMaterial as NgtAnyRecord)['__ngt_renderer__'];\n\t\t}\n\n\t\t// track by this.defineKeys\n\t\tthis.defineKeys();\n\t\treturn new MeshRefractionMaterial();\n\t});\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst material = this.materialRef()?.nativeElement;\n\t\t\tif (!material) return;\n\n\t\t\tconst instanceState = getInstanceState(material);\n\t\t\tif (!instanceState) return;\n\n\t\t\tconst parent = untracked(instanceState.parent);\n\t\t\tconst geometry = (parent as unknown as THREE.Mesh).geometry;\n\t\t\tif (geometry) {\n\t\t\t\tconst bvh = new MeshBVHUniformStruct();\n\t\t\t\tbvh.updateFrom(new MeshBVH(geometry.clone().toNonIndexed(), { strategy: SAH }));\n\t\t\t\tObject.assign(material, { bvh });\n\t\t\t}\n\t\t});\n\n\t\tinjectBeforeRender(({ camera }) => {\n\t\t\tconst material = this.materialRef()?.nativeElement;\n\t\t\tif (material) {\n\t\t\t\tObject.assign(material, {\n\t\t\t\t\tviewMatrixInverse: camera.matrixWorld,\n\t\t\t\t\tprojectionMatrixInverse: camera.projectionMatrixInverse,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tconst material = this.materialRef()?.nativeElement;\n\t\t\tif (material) {\n\t\t\t\tmaterial.dispose();\n\t\t\t\tdelete (material as NgtAnyRecord)['__ngt__'];\n\t\t\t\tdelete (material as NgtAnyRecord)['__ngt_renderer__'];\n\t\t\t}\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tDestroyRef,\n\tElementRef,\n\tinject,\n\tinput,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport {\n\tgetInstanceState,\n\tinjectBeforeRender,\n\tNgtAnyRecord,\n\tNgtArgs,\n\tNgtAttachable,\n\tNgtThreeElements,\n\tomit,\n\tpick,\n} from 'angular-three';\nimport { injectFBO } from 'angular-three-soba/misc';\nimport { MeshDiscardMaterial, MeshTransmissionMaterial } from 'angular-three-soba/vanilla-exports';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\n\nexport type MeshTransmissionMaterialOptions = ConstructorParameters<typeof MeshTransmissionMaterial>[0];\n\nexport type NgtsMeshTransmissionMaterialOptions = Partial<NgtThreeElements['ngt-mesh-physical-material']> &\n\tOmit<MeshTransmissionMaterialOptions, 'buffer' | 'anisotropicBlur' | 'samples' | 'transmissionSampler'> & {\n\t\tanisotropicBlur?: number;\n\t\tbuffer?: THREE.Texture;\n\t\t/** transmissionSampler, you can use the threejs transmission sampler texture that is\n\t\t * generated once for all transmissive materials. The upside is that it can be faster if you\n\t\t * use multiple MeshPhysical and Transmission materials, the downside is that transmissive materials\n\t\t * using this can't see other transparent or transmissive objects, default: false */\n\t\ttransmissionSampler: boolean;\n\t\t/** Render the backside of the material (more cost, better results), default: false */\n\t\tbackside: boolean;\n\t\t/** Backside thickness (when backside is true), default: 0 */\n\t\tbacksideThickness: number;\n\t\tbacksideEnvMapIntensity: number;\n\t\t/** Resolution of the local buffer, default: undefined (fullscreen) */\n\t\tresolution?: number;\n\t\t/** Resolution of the local buffer for backfaces, default: undefined (fullscreen) */\n\t\tbacksideResolution?: number;\n\t\t/** Refraction samples, default: 6 */\n\t\tsamples: number;\n\t\t/** Buffer scene background (can be a texture, a cubetexture or a color), default: null */\n\t\tbackground?: THREE.Texture | THREE.Color;\n\t};\n\nconst defaultOptions: NgtsMeshTransmissionMaterialOptions = {\n\ttransmissionSampler: false,\n\tbackside: false,\n\tside: THREE.FrontSide,\n\ttransmission: 1,\n\tthickness: 0,\n\tbacksideThickness: 0,\n\tbacksideEnvMapIntensity: 1,\n\tsamples: 10,\n};\n\n@Component({\n\tselector: 'ngts-mesh-transmission-material',\n\ttemplate: `\n\t\t<ngt-primitive\n\t\t\t*args=\"[material()]\"\n\t\t\t#material\n\t\t\t[attach]=\"attach()\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t\t[_transmission]=\"transmission()\"\n\t\t\t[transmission]=\"transmissionSampler() ? transmission() : 0\"\n\t\t\t[buffer]=\"bufferTexture()\"\n\t\t\t[anisotropicBlur]=\"anisotropicBlurOption()\"\n\t\t\t[side]=\"side()\"\n\t\t\t[thickness]=\"thickness()\"\n\t\t>\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsMeshTransmissionMaterial {\n\tattach = input<NgtAttachable>('material');\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'buffer',\n\t\t'transmissionSampler',\n\t\t'backside',\n\t\t'side',\n\t\t'transmission',\n\t\t'thickness',\n\t\t'backsideThickness',\n\t\t'backsideEnvMapIntensity',\n\t\t'samples',\n\t\t'resolution',\n\t\t'backsideResolution',\n\t\t'background',\n\t\t'anisotropy',\n\t\t'anisotropicBlur',\n\t]);\n\n\tprivate resolution = pick(this.options, 'resolution');\n\tprivate backsideResolution = pick(this.options, 'backsideResolution');\n\tprivate samples = pick(this.options, 'samples');\n\tprivate buffer = pick(this.options, 'buffer');\n\tprivate anisotropy = pick(this.options, 'anisotropy');\n\tprivate anisotropicBlur = pick(this.options, 'anisotropicBlur');\n\tprivate background = pick(this.options, 'background');\n\tprivate backside = pick(this.options, 'backside');\n\tprivate backsideThickness = pick(this.options, 'backsideThickness');\n\tprivate backsideEnvMapIntensity = pick(this.options, 'backsideEnvMapIntensity');\n\n\tprotected transmissionSampler = pick(this.options, 'transmissionSampler');\n\tprotected transmission = pick(this.options, 'transmission');\n\tprotected thickness = pick(this.options, 'thickness');\n\tprotected side = pick(this.options, 'side');\n\n\tmaterialRef = viewChild<ElementRef<MeshTransmissionMaterial & MeshTransmissionMaterialOptions>>('material');\n\n\tprivate backResolution = computed(() => this.backsideResolution() || this.resolution());\n\n\tprivate fboBack = injectFBO(() => ({ width: this.backResolution() }));\n\tprivate fboMain = injectFBO(() => ({ width: this.resolution() }));\n\n\tprotected bufferTexture = computed(() => this.buffer() || this.fboMain().texture);\n\tprotected anisotropicBlurOption = computed(() => this.anisotropicBlur() || this.anisotropy());\n\n\tprivate discardMaterial = new MeshDiscardMaterial();\n\n\tprotected material = computed(() => {\n\t\tconst previousMaterial = untracked(this.materialRef)?.nativeElement;\n\n\t\tif (previousMaterial) {\n\t\t\tpreviousMaterial.dispose();\n\t\t\tdelete (previousMaterial as NgtAnyRecord)['__ngt__'];\n\t\t\tdelete (previousMaterial as NgtAnyRecord)['__ngt_renderer__'];\n\t\t}\n\n\t\tconst [samples, transmissionSampler] = [this.samples(), this.transmissionSampler()];\n\t\treturn new MeshTransmissionMaterial({ samples, transmissionSampler });\n\t});\n\n\tconstructor() {\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tconst material = this.materialRef()?.nativeElement;\n\t\t\tif (material) {\n\t\t\t\tmaterial.dispose();\n\t\t\t\tdelete (material as NgtAnyRecord)['__ngt__'];\n\t\t\t\tdelete (material as NgtAnyRecord)['__ngt_renderer__'];\n\t\t\t}\n\t\t});\n\n\t\tlet oldBg: THREE.Texture | THREE.Color | null;\n\t\tlet oldEnvMapIntensity: number | undefined;\n\t\tlet oldTone: THREE.ToneMapping | undefined;\n\t\tlet parent: THREE.Mesh | undefined;\n\t\tinjectBeforeRender(({ clock, gl, scene, camera }) => {\n\t\t\tconst material = this.materialRef()?.nativeElement;\n\t\t\tif (!material) return;\n\n\t\t\tconst [\n\t\t\t\tfboMain,\n\t\t\t\tfboBack,\n\t\t\t\ttransmissionSampler,\n\t\t\t\tbackground,\n\t\t\t\tbackside,\n\t\t\t\tbacksideThickness,\n\t\t\t\tbacksideEnvMapIntensity,\n\t\t\t\tthickness,\n\t\t\t\tside,\n\t\t\t] = [\n\t\t\t\tthis.fboMain(),\n\t\t\t\tthis.fboBack(),\n\t\t\t\tthis.transmissionSampler(),\n\t\t\t\tthis.background(),\n\t\t\t\tthis.backside(),\n\t\t\t\tthis.backsideThickness(),\n\t\t\t\tthis.backsideEnvMapIntensity(),\n\t\t\t\tthis.thickness(),\n\t\t\t\tthis.side(),\n\t\t\t];\n\n\t\t\tmaterial.time = clock.getElapsedTime();\n\t\t\t// Render only if the buffer matches the built-in and no transmission sampler is set\n\t\t\t// @ts-expect-error - we know material.buffer is not just undefined | null\n\t\t\tif (material.buffer === fboMain.texture && !transmissionSampler) {\n\t\t\t\tparent = getInstanceState(material)?.parent() as unknown as THREE.Mesh;\n\n\t\t\t\tif (parent) {\n\t\t\t\t\t// Save defaults\n\t\t\t\t\toldTone = gl.toneMapping;\n\t\t\t\t\toldBg = scene.background;\n\t\t\t\t\toldEnvMapIntensity = material.envMapIntensity;\n\n\t\t\t\t\t// Switch off tonemapping lest it double tone maps\n\t\t\t\t\t// Save the current background and set the HDR as the new BG\n\t\t\t\t\t// Use discardmaterial, the parent will be invisible, but it's shadows will still be cast\n\t\t\t\t\tgl.toneMapping = THREE.NoToneMapping;\n\t\t\t\t\tif (background) scene.background = background;\n\t\t\t\t\tparent.material = this.discardMaterial;\n\n\t\t\t\t\tif (backside) {\n\t\t\t\t\t\t// Render into the backside buffer\n\t\t\t\t\t\tgl.setRenderTarget(fboBack);\n\t\t\t\t\t\tgl.render(scene, camera);\n\t\t\t\t\t\t// And now prepare the material for the main render using the backside buffer\n\t\t\t\t\t\tparent.material = material;\n\t\t\t\t\t\tObject.assign(parent.material, {\n\t\t\t\t\t\t\tbuffer: fboBack.texture,\n\t\t\t\t\t\t\tthickness: backsideThickness,\n\t\t\t\t\t\t\tside: THREE.BackSide,\n\t\t\t\t\t\t\tenvMapIntensity: backsideEnvMapIntensity,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// Render into the main buffer\n\t\t\t\t\tgl.setRenderTarget(fboMain);\n\t\t\t\t\tgl.render(scene, camera);\n\n\t\t\t\t\tparent.material = material;\n\t\t\t\t\tObject.assign(parent.material, {\n\t\t\t\t\t\tbuffer: fboMain.texture,\n\t\t\t\t\t\tthickness,\n\t\t\t\t\t\tside,\n\t\t\t\t\t\tenvMapIntensity: oldEnvMapIntensity,\n\t\t\t\t\t});\n\n\t\t\t\t\t// Set old state back\n\t\t\t\t\tscene.background = oldBg;\n\t\t\t\t\tgl.setRenderTarget(null);\n\t\t\t\t\tgl.toneMapping = oldTone;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n","import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, inject, input } from '@angular/core';\nimport { injectBeforeRender, NgtArgs, NgtAttachable, NgtThreeElements, omit } from 'angular-three';\nimport { MeshWobbleMaterial, MeshWobbleMaterialParameters } from 'angular-three-soba/vanilla-exports';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\n\nexport interface NgtsMeshWobbleMaterialOptions\n\textends MeshWobbleMaterialParameters,\n\t\tPartial<NgtThreeElements['ngt-mesh-standard-material']> {\n\tspeed: number;\n}\n\nconst defaultOptions: NgtsMeshWobbleMaterialOptions = {\n\tspeed: 1,\n};\n\n@Component({\n\tselector: 'ngts-mesh-wobble-material',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[material]\" [parameters]=\"parameters()\" [attach]=\"attach()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsMeshWobbleMaterial {\n\tattach = input<NgtAttachable>('material');\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['speed']);\n\n\tprotected material = new MeshWobbleMaterial();\n\n\tconstructor() {\n\t\tinject(DestroyRef).onDestroy(() => this.material.dispose());\n\n\t\tinjectBeforeRender(({ clock }) => {\n\t\t\tconst material = this.material;\n\t\t\tmaterial.time = clock.elapsedTime * this.options().speed;\n\t\t});\n\t}\n}\n","import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, inject, input } from '@angular/core';\nimport { NgtArgs, NgtAttachable } from 'angular-three';\nimport { PointMaterial } from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\n\n@Component({\n\tselector: 'ngts-point-material',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[material]\" [attach]=\"attach()\" [parameters]=\"options()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsPointMaterial {\n\tattach = input<NgtAttachable>('material');\n\toptions = input({} as THREE.PointsMaterialParameters);\n\n\tprotected material = new PointMaterial(this.options());\n\n\tconstructor() {\n\t\tinject(DestroyRef).onDestroy(() => this.material.dispose());\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"angular-three-soba-materials.mjs","sources":["../../../../libs/soba/materials/src/lib/custom-shader-material.ts","../../../../libs/soba/materials/src/lib/mesh-distort-material.ts","../../../../libs/soba/materials/src/lib/mesh-portal-material.ts","../../../../libs/soba/materials/src/lib/mesh-reflector-material.ts","../../../../libs/soba/materials/src/lib/mesh-refraction-material.ts","../../../../libs/soba/materials/src/lib/mesh-transmission-material.ts","../../../../libs/soba/materials/src/lib/mesh-wobble-material.ts","../../../../libs/soba/materials/src/lib/point-material.ts","../../../../libs/soba/materials/src/angular-three-soba-materials.ts"],"sourcesContent":["import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n} from '@angular/core';\nimport { is, NgtAnyRecord, NgtArgs, NgtAttachable, omit, pick } from 'angular-three';\nimport * as THREE from 'three';\nimport CustomShaderMaterial from 'three-custom-shader-material/vanilla';\n\n@Component({\n\tselector: 'ngts-custom-shader-material',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[material()]\" [attach]=\"attach()\" [parameters]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsCustomShaderMaterial {\n\tbaseMaterial = input.required<THREE.Material | typeof THREE.Material | ElementRef<THREE.Material>>();\n\tattach = input<NgtAttachable>('material');\n\toptions = input({} as Omit<ConstructorParameters<typeof CustomShaderMaterial>[0], 'baseMaterial'>);\n\tparameters = omit(this.options, ['fragmentShader', 'vertexShader', 'uniforms', 'cacheKey']);\n\n\tprivate base = computed(() => {\n\t\tconst baseMaterial = this.baseMaterial();\n\t\treturn is.ref(baseMaterial) ? baseMaterial.nativeElement : baseMaterial;\n\t});\n\n\tprivate fragmentShader = pick(this.options, 'fragmentShader');\n\tprivate vertexShader = pick(this.options, 'vertexShader');\n\tprivate uniforms = pick(this.options, 'uniforms');\n\tprivate cacheKey = pick(this.options, 'cacheKey');\n\n\tmaterial = computed(() => {\n\t\tconst [base, fragmentShader, vertexShader, uniforms, cacheKey] = [\n\t\t\tthis.base(),\n\t\t\tthis.fragmentShader(),\n\t\t\tthis.vertexShader(),\n\t\t\tthis.uniforms(),\n\t\t\tthis.cacheKey(),\n\t\t];\n\n\t\t// NOTE: this is specific to angular-three\n\t\tif (is.instance(base)) {\n\t\t\tdelete (base as NgtAnyRecord)['__ngt__'];\n\t\t\tdelete (base as NgtAnyRecord)['__ngt_renderer__'];\n\t\t}\n\n\t\treturn new CustomShaderMaterial({\n\t\t\tbaseMaterial: base,\n\t\t\tfragmentShader,\n\t\t\tvertexShader,\n\t\t\tuniforms,\n\t\t\tcacheKey,\n\t\t});\n\t});\n\n\tconstructor() {\n\t\teffect((onCleanup) => {\n\t\t\tconst material = this.material();\n\t\t\tonCleanup(() => material.dispose());\n\t\t});\n\t}\n}\n","import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, inject, input } from '@angular/core';\nimport { injectBeforeRender, NgtArgs, NgtAttachable, NgtThreeElements, omit, pick } from 'angular-three';\nimport { MeshDistortMaterial, MeshDistortMaterialParameters } from 'angular-three-soba/vanilla-exports';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\n\nexport interface NgtsMeshDistortMaterialOptions\n\textends Partial<MeshDistortMaterialParameters>,\n\t\tPartial<NgtThreeElements['ngt-mesh-physical-material']> {\n\tspeed: number;\n\tfactor?: number;\n}\n\nconst defaultOptions: NgtsMeshDistortMaterialOptions = {\n\tspeed: 1,\n};\n\n@Component({\n\tselector: 'ngts-mesh-distort-material',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[material]\" [attach]=\"attach()\" [parameters]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsMeshDistortMaterial {\n\tattach = input<NgtAttachable>('material');\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['speed']);\n\n\tmaterial = new MeshDistortMaterial();\n\n\tprivate speed = pick(this.options, 'speed');\n\n\tconstructor() {\n\t\tinject(DestroyRef).onDestroy(() => this.material.dispose());\n\n\t\tinjectBeforeRender(({ clock }) => {\n\t\t\tthis.material.time = clock.elapsedTime * this.speed();\n\t\t});\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tcontentChild,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinput,\n\tsignal,\n\tTemplateRef,\n\tviewChild,\n} from '@angular/core';\nimport {\n\textend,\n\tgetInstanceState,\n\tinjectBeforeRender,\n\tinjectStore,\n\tis,\n\tNgtAttachable,\n\tNgtComputeFunction,\n\tNgtThreeElements,\n\tomit,\n\tpick,\n} from 'angular-three';\nimport { getVersion, injectFBO, injectIntersect } from 'angular-three-soba/misc';\nimport { NgtsRenderTexture } from 'angular-three-soba/staging';\nimport {\n\tMeshPortalMaterial,\n\tmeshPortalMaterialApplySDF,\n\tNgtMeshPortalMaterial,\n} from 'angular-three-soba/vanilla-exports';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { FullScreenQuad } from 'three-stdlib';\n\n/**\n * This directive is used inside of the render texture, hence has access to the render texture store (a portal store)\n */\n@Directive({ selector: 'ngts-manage-portal-scene' })\nexport class ManagePortalScene {\n\tevents = input<boolean>();\n\trootScene = input.required<THREE.Scene>();\n\tmaterial = input.required<NgtMeshPortalMaterial>();\n\tpriority = input.required<number>();\n\tworldUnits = input.required<boolean>();\n\n\tconstructor() {\n\t\tconst renderTextureStore = injectStore();\n\n\t\tconst buffer1 = injectFBO();\n\t\tconst buffer2 = injectFBO();\n\n\t\tconst fullScreenQuad = computed(() => {\n\t\t\t// This fullscreen-quad is used to blend the two textures\n\t\t\tconst blend = { value: 0 };\n\t\t\tconst quad = new FullScreenQuad(\n\t\t\t\tnew THREE.ShaderMaterial({\n\t\t\t\t\tuniforms: {\n\t\t\t\t\t\ta: { value: buffer1.texture },\n\t\t\t\t\t\tb: { value: buffer2.texture },\n\t\t\t\t\t\tblend,\n\t\t\t\t\t},\n\t\t\t\t\tvertexShader: /*glsl*/ `\n\t\t varying vec2 vUv;\n\t\t void main() {\n\t\t vUv = uv;\n\t\t gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t }`,\n\t\t\t\t\tfragmentShader: /*glsl*/ `\n\t\t uniform sampler2D a;\n\t\t uniform sampler2D b;\n\t\t uniform float blend;\n\t\t varying vec2 vUv;\n\t\t #include <packing>\n\t\t void main() {\n\t\t vec4 ta = texture2D(a, vUv);\n\t\t vec4 tb = texture2D(b, vUv);\n\t\t gl_FragColor = mix(tb, ta, blend);\n\t\t #include <tonemapping_fragment>\n\t\t #include <${getVersion() >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>\n\t\t }`,\n\t\t\t\t}),\n\t\t\t);\n\t\t\treturn [quad, blend] as const;\n\t\t});\n\n\t\teffect(() => {\n\t\t\trenderTextureStore.scene().matrixAutoUpdate = false;\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst [events, setEvents] = [this.events(), renderTextureStore.setEvents()];\n\t\t\tif (!events) return;\n\t\t\tsetEvents({ enabled: events });\n\t\t});\n\n\t\tinjectBeforeRender(\n\t\t\t({ gl, camera }) => {\n\t\t\t\tconst material = this.material();\n\n\t\t\t\tconst instanceState = getInstanceState(material);\n\t\t\t\tif (!instanceState) return;\n\n\t\t\t\tconst parent = instanceState.parent();\n\t\t\t\tif (!parent) return;\n\n\t\t\t\tconst priority = this.priority();\n\t\t\t\tconst materialBlend = 'blend' in material && typeof material.blend === 'number' ? material.blend : 0;\n\t\t\t\tconst [worldUnits, rootScene, scene, [quad, blend]] = [\n\t\t\t\t\tthis.worldUnits(),\n\t\t\t\t\tthis.rootScene(),\n\t\t\t\t\trenderTextureStore.snapshot.scene,\n\t\t\t\t\tfullScreenQuad(),\n\t\t\t\t];\n\t\t\t\t// Move portal contents along with the parent if worldUnits is true\n\t\t\t\tif (!worldUnits) {\n\t\t\t\t\t// If the portal renders exclusively the original scene needs to be updated\n\t\t\t\t\tif (priority && materialBlend === 1) parent['updateWorldMatrix'](true, false);\n\t\t\t\t\tscene.matrixWorld.copy(parent['matrixWorld']);\n\t\t\t\t} else {\n\t\t\t\t\tscene.matrixWorld.identity();\n\t\t\t\t}\n\n\t\t\t\t// This bit is only necessary if the portal is blended, now it has a render-priority\n\t\t\t\t// and will take over the render loop\n\t\t\t\tif (priority) {\n\t\t\t\t\tif (materialBlend > 0 && materialBlend < 1) {\n\t\t\t\t\t\t// If blend is ongoing (> 0 and < 1) then we need to render both the root scene\n\t\t\t\t\t\t// and the portal scene, both will then be mixed in the quad from above\n\t\t\t\t\t\tblend.value = materialBlend;\n\t\t\t\t\t\tgl.setRenderTarget(buffer1);\n\t\t\t\t\t\tgl.render(scene, camera);\n\t\t\t\t\t\tgl.setRenderTarget(buffer2);\n\t\t\t\t\t\tgl.render(rootScene, camera);\n\t\t\t\t\t\tgl.setRenderTarget(null);\n\t\t\t\t\t\tquad.render(gl);\n\t\t\t\t\t} else if (materialBlend === 1) {\n\t\t\t\t\t\t// However if blend is 1 we only need to render the portal scene\n\t\t\t\t\t\tgl.render(scene, camera);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ priority: this.priority },\n\t\t);\n\t}\n}\n\nexport interface NgtsMeshPortalMaterialOptions extends Partial<NgtThreeElements['ngt-shader-material']> {\n\t/** Mix the portals own scene with the world scene, 0 = world scene render,\n\t * 0.5 = both scenes render, 1 = portal scene renders, defaults to 0. */\n\tblend: number;\n\t/** Edge fade blur, 0 = no blur (default) */\n\tblur: number;\n\t/** SDF resolution, the smaller the faster is the start-up time (default: 512) */\n\tresolution: number;\n\t/** By default portals use relative coordinates, contents are affects by the local matrix transform */\n\tworldUnits: boolean;\n\t/** Optional event priority, defaults to 0 */\n\teventPriority: number;\n\t/** Optional render priority, defaults to 0 */\n\trenderPriority: number;\n\t/** Optionally diable events inside the portal, defaults to false */\n\tevents: boolean;\n}\n\nconst defaultOptions: NgtsMeshPortalMaterialOptions = {\n\tblend: 0,\n\tblur: 0,\n\tresolution: 512,\n\tworldUnits: false,\n\teventPriority: 0,\n\trenderPriority: 0,\n\tevents: false,\n};\n\n@Component({\n\tselector: 'ngts-mesh-portal-material',\n\ttemplate: `\n\t\t<ngt-mesh-portal-material\n\t\t\t#material\n\t\t\t[attach]=\"attach()\"\n\t\t\t[blur]=\"blur()\"\n\t\t\t[blend]=\"0\"\n\t\t\t[resolution]=\"materialResolution()\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t>\n\t\t\t<ngts-render-texture\n\t\t\t\t[options]=\"{\n\t\t\t\t\tframes: renderTextureFrames(),\n\t\t\t\t\teventPriority: eventPriority(),\n\t\t\t\t\trenderPriority: renderPriority(),\n\t\t\t\t\tcompute: renderTextureCompute,\n\t\t\t\t}\"\n\t\t\t>\n\t\t\t\t<ng-template renderTextureContent let-injector=\"injector\">\n\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"content()\" [ngTemplateOutletInjector]=\"injector\" />\n\t\t\t\t\t<ngts-manage-portal-scene\n\t\t\t\t\t\t[events]=\"events()\"\n\t\t\t\t\t\t[rootScene]=\"rootScene()\"\n\t\t\t\t\t\t[priority]=\"priority()\"\n\t\t\t\t\t\t[material]=\"material\"\n\t\t\t\t\t\t[worldUnits]=\"worldUnits()\"\n\t\t\t\t\t/>\n\t\t\t\t</ng-template>\n\t\t\t</ngts-render-texture>\n\t\t</ngt-mesh-portal-material>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsRenderTexture, ManagePortalScene, NgTemplateOutlet],\n})\nexport class NgtsMeshPortalMaterial {\n\tattach = input<NgtAttachable>('material');\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'blur',\n\t\t'resolution',\n\t\t'worldUnits',\n\t\t'eventPriority',\n\t\t'renderPriority',\n\t\t'events',\n\t]);\n\n\tprotected blur = pick(this.options, 'blur');\n\tprotected eventPriority = pick(this.options, 'eventPriority');\n\tprotected renderPriority = pick(this.options, 'renderPriority');\n\tprotected events = pick(this.options, 'events');\n\tprotected worldUnits = pick(this.options, 'worldUnits');\n\n\tmaterialRef = viewChild.required<ElementRef<InstanceType<typeof MeshPortalMaterial>>>('material');\n\tprotected content = contentChild.required(TemplateRef);\n\n\tprivate store = injectStore();\n\tprotected rootScene = this.store.scene;\n\n\tprotected materialResolution = computed(() => [\n\t\tthis.store.size.width() * this.store.viewport.dpr(),\n\t\tthis.store.size.height() * this.store.viewport.dpr(),\n\t]);\n\tprivate resolution = pick(this.options, 'resolution');\n\n\tprivate parent = signal<THREE.Mesh | null>(null);\n\tprivate visible = injectIntersect(this.parent, { source: signal(true) });\n\n\tprotected renderTextureFrames = computed(() => (this.visible() ? Infinity : 0));\n\n\tprotected renderTextureCompute = (...args: Parameters<NgtComputeFunction>) => {\n\t\tconst [parent, material] = [this.parent(), this.materialRef().nativeElement];\n\t\tif (!parent) return false;\n\n\t\tconst [event, state] = args;\n\n\t\tstate.snapshot.pointer.set(\n\t\t\t(event.offsetX / state.snapshot.size.width) * 2 - 1,\n\t\t\t-(event.offsetY / state.snapshot.size.height) * 2 + 1,\n\t\t);\n\t\tstate.snapshot.raycaster.setFromCamera(state.snapshot.pointer, state.snapshot.camera);\n\n\t\tif ('blend' in material && material.blend === 0) {\n\t\t\t// We run a quick check against the parent, if it isn't hit there's no need to raycast at all\n\t\t\tconst [intersection] = state.snapshot.raycaster.intersectObject(parent);\n\t\t\tif (!intersection) {\n\t\t\t\t// Cancel out the raycast camera if the parent mesh isn't hit\n\t\t\t\tObject.assign(state.snapshot.raycaster, { camera: undefined });\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn;\n\t};\n\n\tprotected priority = signal(0);\n\n\tconstructor() {\n\t\textend({ MeshPortalMaterial });\n\n\t\teffect(() => {\n\t\t\tconst material = this.materialRef().nativeElement;\n\n\t\t\tconst instanceState = getInstanceState(material);\n\t\t\tif (!instanceState) return;\n\n\t\t\tconst materialParent = instanceState.parent();\n\t\t\tif (!materialParent || !is.three<THREE.Mesh>(materialParent, 'isMesh')) return;\n\n\t\t\t// Since the ref above is not tied to a mesh directly (we're inside a material),\n\t\t\t// it has to be tied to the parent mesh here\n\t\t\tthis.parent.set(materialParent);\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst events = this.events();\n\t\t\tif (!events) return;\n\n\t\t\tconst setEvents = this.store.setEvents();\n\t\t\tsetEvents({ enabled: !events });\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst [material, parent] = [this.materialRef().nativeElement, this.parent()];\n\t\t\tif (!parent) return;\n\n\t\t\tconst [resolution, blur, gl] = [this.resolution(), this.blur(), this.store.gl()];\n\n\t\t\t// apply the SDF mask once\n\t\t\tif (blur && material.sdf == null) {\n\t\t\t\tmeshPortalMaterialApplySDF(parent, resolution, gl);\n\t\t\t}\n\t\t});\n\n\t\tinjectBeforeRender(() => {\n\t\t\tconst material = this.materialRef().nativeElement;\n\t\t\tconst priority =\n\t\t\t\t'blend' in material && typeof material.blend === 'number' && material.blend > 0\n\t\t\t\t\t? Math.max(1, this.renderPriority())\n\t\t\t\t\t: 0;\n\n\t\t\t// If blend is > 0 then the portal is being entered, the render-priority must change\n\t\t\tif (this.priority() !== priority) {\n\t\t\t\tthis.priority.set(priority);\n\t\t\t}\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tDestroyRef,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport {\n\tapplyProps,\n\tgetInstanceState,\n\tinjectBeforeRender,\n\tinjectStore,\n\tNgtAnyRecord,\n\tNgtArgs,\n\tNgtAttachable,\n\tNgtThreeElements,\n\tomit,\n\tpick,\n} from 'angular-three';\nimport { BlurPass, MeshReflectorMaterial } from 'angular-three-soba/vanilla-exports';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\n\nexport interface NgtsMeshReflectorMaterialOptions extends Partial<NgtThreeElements['ngt-mesh-standard-material']> {\n\tresolution: number;\n\tmixBlur: number;\n\tmixStrength: number;\n\tblur: [number, number] | number;\n\tmirror: number;\n\tminDepthThreshold: number;\n\tmaxDepthThreshold: number;\n\tdepthScale: number;\n\tdepthToBlurRatioBias: number;\n\tdistortion: number;\n\tmixContrast: number;\n\treflectorOffset: number;\n\tdistortionMap?: THREE.Texture;\n}\n\nconst defaultOptions: NgtsMeshReflectorMaterialOptions = {\n\tmixBlur: 0,\n\tmixStrength: 1,\n\tresolution: 256,\n\tblur: [0, 0],\n\tminDepthThreshold: 0.9,\n\tmaxDepthThreshold: 1,\n\tdepthScale: 0,\n\tdepthToBlurRatioBias: 0.25,\n\tmirror: 0,\n\tdistortion: 1,\n\tmixContrast: 1,\n\treflectorOffset: 0,\n};\n\n@Component({\n\tselector: 'ngts-mesh-reflector-material',\n\ttemplate: `\n\t\t<ngt-primitive #material *args=\"[material()]\" [attach]=\"attach()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsMeshReflectorMaterial {\n\tattach = input<NgtAttachable>('material');\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprivate parameters = omit(this.options, [\n\t\t'distortionMap',\n\t\t'resolution',\n\t\t'mixBlur',\n\t\t'mixStrength',\n\t\t'blur',\n\t\t'minDepthThreshold',\n\t\t'maxDepthThreshold',\n\t\t'depthScale',\n\t\t'depthToBlurRatioBias',\n\t\t'mirror',\n\t\t'distortion',\n\t\t'mixContrast',\n\t\t'reflectorOffset',\n\t]);\n\n\tprivate store = injectStore();\n\n\tmaterialRef = viewChild<ElementRef<MeshReflectorMaterial>>('material');\n\n\tprivate reflectOptions = pick(this.options, [\n\t\t'distortionMap',\n\t\t'resolution',\n\t\t'mixBlur',\n\t\t'mixStrength',\n\t\t'blur',\n\t\t'minDepthThreshold',\n\t\t'maxDepthThreshold',\n\t\t'depthScale',\n\t\t'depthToBlurRatioBias',\n\t\t'mirror',\n\t\t'distortion',\n\t\t'mixContrast',\n\t\t'reflectorOffset',\n\t]);\n\n\tprivate blur = pick(this.reflectOptions, 'blur');\n\n\tprivate normalizedBlur = computed(() => {\n\t\tconst blur = this.blur();\n\t\treturn Array.isArray(blur) ? blur : [blur, blur];\n\t});\n\tprivate hasBlur = computed(() => this.normalizedBlur()[0] + this.normalizedBlur()[1] > 0);\n\n\tprivate reflectorPlane = new THREE.Plane();\n\tprivate normal = new THREE.Vector3();\n\tprivate reflectorWorldPosition = new THREE.Vector3();\n\tprivate cameraWorldPosition = new THREE.Vector3();\n\tprivate rotationMatrix = new THREE.Matrix4();\n\tprivate lookAtPosition = new THREE.Vector3(0, 0, -1);\n\tprivate clipPlane = new THREE.Vector4();\n\tprivate view = new THREE.Vector3();\n\tprivate target = new THREE.Vector3();\n\tprivate q = new THREE.Vector4();\n\tprivate textureMatrix = new THREE.Matrix4();\n\tprivate virtualCamera = new THREE.PerspectiveCamera();\n\n\tprivate reflectState = computed(() => {\n\t\tconst [\n\t\t\tgl,\n\t\t\t{\n\t\t\t\tresolution,\n\t\t\t\tminDepthThreshold,\n\t\t\t\tmaxDepthThreshold,\n\t\t\t\tdepthScale,\n\t\t\t\tdepthToBlurRatioBias,\n\t\t\t\tmirror,\n\t\t\t\tmixBlur,\n\t\t\t\tmixStrength,\n\t\t\t\tdistortion,\n\t\t\t\tdistortionMap,\n\t\t\t\tmixContrast,\n\t\t\t},\n\t\t\tblur,\n\t\t\thasBlur,\n\t\t] = [this.store.gl(), this.reflectOptions(), this.normalizedBlur(), this.hasBlur()];\n\n\t\tconst renderTargetParameters = {\n\t\t\tminFilter: THREE.LinearFilter,\n\t\t\tmagFilter: THREE.LinearFilter,\n\t\t\ttype: THREE.HalfFloatType,\n\t\t};\n\n\t\tconst fbo1 = new THREE.WebGLRenderTarget(resolution, resolution, renderTargetParameters);\n\t\tfbo1.depthBuffer = true;\n\t\tfbo1.depthTexture = new THREE.DepthTexture(resolution, resolution);\n\t\tfbo1.depthTexture.format = THREE.DepthFormat;\n\t\tfbo1.depthTexture.type = THREE.UnsignedShortType;\n\t\tconst fbo2 = new THREE.WebGLRenderTarget(resolution, resolution, renderTargetParameters);\n\n\t\tconst blurPass = new BlurPass({\n\t\t\tgl,\n\t\t\tresolution,\n\t\t\twidth: blur[0],\n\t\t\theight: blur[1],\n\t\t\tminDepthThreshold,\n\t\t\tmaxDepthThreshold,\n\t\t\tdepthScale,\n\t\t\tdepthToBlurRatioBias,\n\t\t});\n\n\t\tconst defines: NgtAnyRecord = {};\n\n\t\tif (hasBlur) {\n\t\t\tdefines['USE_BLUR'] = '';\n\t\t}\n\n\t\tif (depthScale > 0) {\n\t\t\tdefines['USE_DEPTH'] = '';\n\t\t}\n\n\t\tif (distortionMap) {\n\t\t\tdefines['USE_DISTORTION'] = '';\n\t\t}\n\n\t\tconst reflectorParameters = {\n\t\t\tmirror,\n\t\t\ttextureMatrix: this.textureMatrix,\n\t\t\tmixBlur,\n\t\t\ttDiffuse: fbo1.texture,\n\t\t\ttDepth: fbo1.depthTexture,\n\t\t\ttDiffuseBlur: fbo2.texture,\n\t\t\thasBlur,\n\t\t\tmixStrength,\n\t\t\tminDepthThreshold,\n\t\t\tmaxDepthThreshold,\n\t\t\tdepthScale,\n\t\t\tdepthToBlurRatioBias,\n\t\t\tdistortion,\n\t\t\tdistortionMap,\n\t\t\tmixContrast,\n\t\t\tdefines,\n\t\t};\n\n\t\treturn { fbo1, fbo2, blurPass, reflectorParameters };\n\t});\n\n\tprivate definesKey = computed(() => {\n\t\tconst defines = this.reflectState().reflectorParameters.defines;\n\t\treturn Object.entries(defines).reduce((acc, [key, value]) => (value != null ? `${acc} ${key}` : acc), '');\n\t});\n\n\tmaterial = computed(() => {\n\t\tconst prevMaterial = untracked(this.materialRef)?.nativeElement;\n\n\t\tif (prevMaterial) {\n\t\t\tprevMaterial.dispose();\n\t\t\tdelete (prevMaterial as NgtAnyRecord)['__ngt__'];\n\t\t\tdelete (prevMaterial as NgtAnyRecord)['__ngt_renderer__'];\n\t\t}\n\n\t\t// tracking defines key so that the material is recreated when the defines change\n\t\tthis.definesKey();\n\t\treturn new MeshReflectorMaterial();\n\t});\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst material = this.materialRef()?.nativeElement;\n\t\t\tif (!material) return;\n\t\t\tconst { reflectorParameters } = this.reflectState();\n\t\t\tapplyProps(material, { ...reflectorParameters, ...this.parameters() });\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tconst material = this.materialRef()?.nativeElement;\n\t\t\tif (material) {\n\t\t\t\tmaterial.dispose();\n\t\t\t\tdelete (material as NgtAnyRecord)['__ngt__'];\n\t\t\t\tdelete (material as NgtAnyRecord)['__ngt_renderer__'];\n\t\t\t}\n\t\t});\n\n\t\tinjectBeforeRender(({ gl, scene }) => {\n\t\t\tconst material = this.materialRef()?.nativeElement;\n\t\t\tif (!material) return;\n\n\t\t\tconst instanceState = getInstanceState(material);\n\t\t\tif (!instanceState) return;\n\n\t\t\tconst parent = Reflect.get(material, 'parent') ?? untracked(instanceState.parent);\n\t\t\tif (!parent) return;\n\n\t\t\tconst { fbo1, fbo2, blurPass } = this.reflectState();\n\t\t\tconst hasBlur = this.hasBlur();\n\n\t\t\tparent.visible = false;\n\t\t\tconst currentXrEnabled = gl.xr.enabled;\n\t\t\tconst currentShadowAutoUpdate = gl.shadowMap.autoUpdate;\n\t\t\tthis.beforeRender();\n\t\t\tgl.xr.enabled = false;\n\t\t\tgl.shadowMap.autoUpdate = false;\n\t\t\tgl.setRenderTarget(fbo1);\n\t\t\tgl.state.buffers.depth.setMask(true);\n\t\t\tif (!gl.autoClear) gl.clear();\n\t\t\tgl.render(scene, this.virtualCamera);\n\t\t\tif (hasBlur) blurPass.render(gl, fbo1, fbo2);\n\t\t\tgl.xr.enabled = currentXrEnabled;\n\t\t\tgl.shadowMap.autoUpdate = currentShadowAutoUpdate;\n\t\t\tparent.visible = true;\n\t\t\tgl.setRenderTarget(null);\n\t\t});\n\t}\n\n\tprivate beforeRender() {\n\t\tconst material = this.materialRef()?.nativeElement;\n\t\tif (!material) return;\n\n\t\tconst instanceState = getInstanceState(material);\n\t\tif (!instanceState) return;\n\n\t\tconst parent = Reflect.get(material, 'parent') ?? untracked(instanceState.parent);\n\t\tif (!parent) return;\n\n\t\tconst { camera } = this.store.snapshot;\n\t\tconst { reflectorOffset } = untracked(this.reflectOptions);\n\n\t\tthis.reflectorWorldPosition.setFromMatrixPosition(parent.matrixWorld);\n\t\tthis.cameraWorldPosition.setFromMatrixPosition(camera.matrixWorld);\n\t\tthis.rotationMatrix.extractRotation(parent.matrixWorld);\n\t\tthis.normal.set(0, 0, 1);\n\t\tthis.normal.applyMatrix4(this.rotationMatrix);\n\t\tthis.reflectorWorldPosition.addScaledVector(this.normal, reflectorOffset);\n\t\tthis.view.subVectors(this.reflectorWorldPosition, this.cameraWorldPosition);\n\t\t// Avoid rendering when reflector is facing away\n\t\tif (this.view.dot(this.normal) > 0) return;\n\t\tthis.view.reflect(this.normal).negate();\n\t\tthis.view.add(this.reflectorWorldPosition);\n\t\tthis.rotationMatrix.extractRotation(camera.matrixWorld);\n\t\tthis.lookAtPosition.set(0, 0, -1);\n\t\tthis.lookAtPosition.applyMatrix4(this.rotationMatrix);\n\t\tthis.lookAtPosition.add(this.cameraWorldPosition);\n\t\tthis.target.subVectors(this.reflectorWorldPosition, this.lookAtPosition);\n\t\tthis.target.reflect(this.normal).negate();\n\t\tthis.target.add(this.reflectorWorldPosition);\n\t\tthis.virtualCamera.position.copy(this.view);\n\t\tthis.virtualCamera.up.set(0, 1, 0);\n\t\tthis.virtualCamera.up.applyMatrix4(this.rotationMatrix);\n\t\tthis.virtualCamera.up.reflect(this.normal);\n\t\tthis.virtualCamera.lookAt(this.target);\n\t\tthis.virtualCamera.far = camera.far; // Used in WebGLBackground\n\t\tthis.virtualCamera.updateMatrixWorld();\n\t\tthis.virtualCamera.projectionMatrix.copy(camera.projectionMatrix);\n\t\t// Update the texture matrix\n\t\tthis.textureMatrix.set(0.5, 0.0, 0.0, 0.5, 0.0, 0.5, 0.0, 0.5, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0, 1.0);\n\t\tthis.textureMatrix.multiply(this.virtualCamera.projectionMatrix);\n\t\tthis.textureMatrix.multiply(this.virtualCamera.matrixWorldInverse);\n\t\tthis.textureMatrix.multiply(parent.matrixWorld);\n\t\t// Now update projection matrix with new clip plane, implementing code from: http://www.terathon.com/code/oblique.html\n\t\t// Paper explaining this technique: http://www.terathon.com/lengyel/Lengyel-Oblique.pdf\n\t\tthis.reflectorPlane.setFromNormalAndCoplanarPoint(this.normal, this.reflectorWorldPosition);\n\t\tthis.reflectorPlane.applyMatrix4(this.virtualCamera.matrixWorldInverse);\n\t\tthis.clipPlane.set(\n\t\t\tthis.reflectorPlane.normal.x,\n\t\t\tthis.reflectorPlane.normal.y,\n\t\t\tthis.reflectorPlane.normal.z,\n\t\t\tthis.reflectorPlane.constant,\n\t\t);\n\t\tconst projectionMatrix = this.virtualCamera.projectionMatrix;\n\t\tthis.q.x = (Math.sign(this.clipPlane.x) + projectionMatrix.elements[8]) / projectionMatrix.elements[0];\n\t\tthis.q.y = (Math.sign(this.clipPlane.y) + projectionMatrix.elements[9]) / projectionMatrix.elements[5];\n\t\tthis.q.z = -1.0;\n\t\tthis.q.w = (1.0 + projectionMatrix.elements[10]) / projectionMatrix.elements[14];\n\t\t// Calculate the scaled plane vector\n\t\tthis.clipPlane.multiplyScalar(2.0 / this.clipPlane.dot(this.q));\n\t\t// Replacing the third row of the projection matrix\n\t\tprojectionMatrix.elements[2] = this.clipPlane.x;\n\t\tprojectionMatrix.elements[6] = this.clipPlane.y;\n\t\tprojectionMatrix.elements[10] = this.clipPlane.z + 1.0;\n\t\tprojectionMatrix.elements[14] = this.clipPlane.w;\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tDestroyRef,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport {\n\tgetInstanceState,\n\tinjectBeforeRender,\n\tinjectStore,\n\tis,\n\tNgtAnyRecord,\n\tNgtArgs,\n\tNgtAttachable,\n\tNgtThreeElements,\n\tomit,\n\tpick,\n} from 'angular-three';\nimport { MeshRefractionMaterial } from 'angular-three-soba/shaders';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { MeshBVH, MeshBVHUniformStruct, SAH } from 'three-mesh-bvh';\n\nexport interface NgtsMeshRefractionMaterialOptions extends Partial<NgtThreeElements['ngt-shader-material']> {\n\t/** Number of ray-cast bounces, it can be expensive to have too many, 2 */\n\tbounces: number;\n\t/** Refraction index, 2.4 */\n\tior: number;\n\t/** Fresnel (strip light), 0 */\n\tfresnel: number;\n\t/** RGB shift intensity, can be expensive, 0 */\n\taberrationStrength: number;\n\t/** Color, white */\n\tcolor: THREE.ColorRepresentation;\n\t/** If this is on it uses fewer ray casts for the RGB shift sacrificing physical accuracy, true */\n\tfastChroma: boolean;\n}\n\nconst defaultOptions: NgtsMeshRefractionMaterialOptions = {\n\tbounces: 2,\n\tior: 2.4,\n\tfresnel: 0,\n\taberrationStrength: 0,\n\tcolor: 'white',\n\tfastChroma: true,\n};\n\n@Component({\n\tselector: 'ngts-mesh-refraction-material',\n\ttemplate: `\n\t\t<ngt-primitive\n\t\t\t*args=\"[material()]\"\n\t\t\t#material\n\t\t\t[attach]=\"attach()\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t\t[envMap]=\"envMap()\"\n\t\t\t[aberrationStrength]=\"aberrationStrength()\"\n\t\t\t[resolution]=\"resolution()\"\n\t\t\t[defines]=\"defines()\"\n\t\t>\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsMeshRefractionMaterial {\n\tenvMap = input.required<THREE.CubeTexture | THREE.Texture>();\n\tattach = input<NgtAttachable>('material');\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['fastChroma', 'aberrationStrength']);\n\n\tprivate fastChroma = pick(this.options, 'fastChroma');\n\tprotected aberrationStrength = pick(this.options, 'aberrationStrength');\n\n\tmaterialRef = viewChild<ElementRef<InstanceType<typeof MeshRefractionMaterial>>>('material');\n\n\tprivate store = injectStore();\n\n\tprotected resolution = computed(() => [this.store.size.width(), this.store.size.height()]);\n\tprotected defines = computed(() => {\n\t\tconst _defines = {} as { [key: string]: string };\n\t\tconst [envMap, aberrationStrength, fastChroma] = [\n\t\t\tuntracked(this.envMap),\n\t\t\tthis.aberrationStrength(),\n\t\t\tthis.fastChroma(),\n\t\t];\n\t\tconst isCubeMap = is.three<THREE.CubeTexture>(envMap, 'isCubeTexture');\n\n\t\tconst w = (isCubeMap ? envMap.image[0]?.width : envMap.image.width) ?? 1024;\n\t\tconst cubeSize = w / 4;\n\t\tconst _lodMax = Math.floor(Math.log2(cubeSize));\n\t\tconst _cubeSize = Math.pow(2, _lodMax);\n\t\tconst width = 3 * Math.max(_cubeSize, 16 * 7);\n\t\tconst height = 4 * _cubeSize;\n\n\t\tif (isCubeMap) _defines['ENVMAP_TYPE_CUBEM'] = '';\n\t\t_defines['CUBEUV_TEXEL_WIDTH'] = `${1.0 / width}`;\n\t\t_defines['CUBEUV_TEXEL_HEIGHT'] = `${1.0 / height}`;\n\t\t_defines['CUBEUV_MAX_MIP'] = `${_lodMax}.0`;\n\n\t\t// Add defines from chromatic aberration\n\t\tif (aberrationStrength > 0) _defines['CHROMATIC_ABERRATIONS'] = '';\n\t\tif (fastChroma) _defines['FAST_CHROMA'] = '';\n\n\t\treturn _defines;\n\t});\n\n\tprivate defineKeys = computed(() => {\n\t\treturn Object.keys(this.defines()).join(' ');\n\t});\n\n\tprotected material = computed(() => {\n\t\tconst prevMaterial = untracked(this.materialRef)?.nativeElement;\n\n\t\tif (prevMaterial) {\n\t\t\tprevMaterial.dispose();\n\t\t\tdelete (prevMaterial as NgtAnyRecord)['__ngt__'];\n\t\t\tdelete (prevMaterial as NgtAnyRecord)['__ngt_renderer__'];\n\t\t}\n\n\t\t// track by this.defineKeys\n\t\tthis.defineKeys();\n\t\treturn new MeshRefractionMaterial();\n\t});\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst material = this.materialRef()?.nativeElement;\n\t\t\tif (!material) return;\n\n\t\t\tconst instanceState = getInstanceState(material);\n\t\t\tif (!instanceState) return;\n\n\t\t\tconst parent = untracked(instanceState.parent);\n\t\t\tconst geometry = (parent as unknown as THREE.Mesh).geometry;\n\t\t\tif (geometry) {\n\t\t\t\tconst bvh = new MeshBVHUniformStruct();\n\t\t\t\tbvh.updateFrom(new MeshBVH(geometry.clone().toNonIndexed(), { strategy: SAH }));\n\t\t\t\tObject.assign(material, { bvh });\n\t\t\t}\n\t\t});\n\n\t\tinjectBeforeRender(({ camera }) => {\n\t\t\tconst material = this.materialRef()?.nativeElement;\n\t\t\tif (material) {\n\t\t\t\tObject.assign(material, {\n\t\t\t\t\tviewMatrixInverse: camera.matrixWorld,\n\t\t\t\t\tprojectionMatrixInverse: camera.projectionMatrixInverse,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tconst material = this.materialRef()?.nativeElement;\n\t\t\tif (material) {\n\t\t\t\tmaterial.dispose();\n\t\t\t\tdelete (material as NgtAnyRecord)['__ngt__'];\n\t\t\t\tdelete (material as NgtAnyRecord)['__ngt_renderer__'];\n\t\t\t}\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tDestroyRef,\n\tElementRef,\n\tinject,\n\tinput,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport {\n\tgetInstanceState,\n\tinjectBeforeRender,\n\tNgtAnyRecord,\n\tNgtArgs,\n\tNgtAttachable,\n\tNgtThreeElements,\n\tomit,\n\tpick,\n} from 'angular-three';\nimport { injectFBO } from 'angular-three-soba/misc';\nimport { MeshDiscardMaterial, MeshTransmissionMaterial } from 'angular-three-soba/vanilla-exports';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\n\nexport type MeshTransmissionMaterialOptions = Exclude<\n\tConstructorParameters<typeof MeshTransmissionMaterial>[0],\n\tundefined\n>;\n\nexport type NgtsMeshTransmissionMaterialOptions = Partial<NgtThreeElements['ngt-mesh-physical-material']> &\n\tOmit<MeshTransmissionMaterialOptions, 'buffer' | 'anisotropicBlur' | 'samples' | 'transmissionSampler'> & {\n\t\tanisotropicBlur?: number;\n\t\tbuffer?: THREE.Texture;\n\t\t/** transmissionSampler, you can use the threejs transmission sampler texture that is\n\t\t * generated once for all transmissive materials. The upside is that it can be faster if you\n\t\t * use multiple MeshPhysical and Transmission materials, the downside is that transmissive materials\n\t\t * using this can't see other transparent or transmissive objects, default: false */\n\t\ttransmissionSampler: boolean;\n\t\t/** Render the backside of the material (more cost, better results), default: false */\n\t\tbackside: boolean;\n\t\t/** Backside thickness (when backside is true), default: 0 */\n\t\tbacksideThickness: number;\n\t\tbacksideEnvMapIntensity: number;\n\t\t/** Resolution of the local buffer, default: undefined (fullscreen) */\n\t\tresolution?: number;\n\t\t/** Resolution of the local buffer for backfaces, default: undefined (fullscreen) */\n\t\tbacksideResolution?: number;\n\t\t/** Refraction samples, default: 6 */\n\t\tsamples: number;\n\t\t/** Buffer scene background (can be a texture, a cubetexture or a color), default: null */\n\t\tbackground?: THREE.Texture | THREE.Color | null;\n\t};\n\nconst defaultOptions: NgtsMeshTransmissionMaterialOptions = {\n\ttransmissionSampler: false,\n\tbackside: false,\n\tside: THREE.FrontSide,\n\ttransmission: 1,\n\tthickness: 0,\n\tbacksideThickness: 0,\n\tbacksideEnvMapIntensity: 1,\n\tsamples: 10,\n};\n\n@Component({\n\tselector: 'ngts-mesh-transmission-material',\n\ttemplate: `\n\t\t<ngt-primitive\n\t\t\t*args=\"[material()]\"\n\t\t\t#material\n\t\t\t[attach]=\"attach()\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t\t[_transmission]=\"transmission()\"\n\t\t\t[transmission]=\"transmissionSampler() ? transmission() : 0\"\n\t\t\t[buffer]=\"bufferTexture()\"\n\t\t\t[anisotropicBlur]=\"anisotropicBlurOption()\"\n\t\t\t[side]=\"side()\"\n\t\t\t[thickness]=\"thickness()\"\n\t\t>\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsMeshTransmissionMaterial {\n\tattach = input<NgtAttachable>('material');\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'buffer',\n\t\t'transmissionSampler',\n\t\t'backside',\n\t\t'side',\n\t\t'transmission',\n\t\t'thickness',\n\t\t'backsideThickness',\n\t\t'backsideEnvMapIntensity',\n\t\t'samples',\n\t\t'resolution',\n\t\t'backsideResolution',\n\t\t'background',\n\t\t'anisotropy',\n\t\t'anisotropicBlur',\n\t]);\n\n\tprivate resolution = pick(this.options, 'resolution');\n\tprivate backsideResolution = pick(this.options, 'backsideResolution');\n\tprivate samples = pick(this.options, 'samples');\n\tprivate buffer = pick(this.options, 'buffer');\n\tprivate anisotropy = pick(this.options, 'anisotropy');\n\tprivate anisotropicBlur = pick(this.options, 'anisotropicBlur');\n\tprivate background = pick(this.options, 'background');\n\tprivate backside = pick(this.options, 'backside');\n\tprivate backsideThickness = pick(this.options, 'backsideThickness');\n\tprivate backsideEnvMapIntensity = pick(this.options, 'backsideEnvMapIntensity');\n\n\tprotected transmissionSampler = pick(this.options, 'transmissionSampler');\n\tprotected transmission = pick(this.options, 'transmission');\n\tprotected thickness = pick(this.options, 'thickness');\n\tprotected side = pick(this.options, 'side');\n\n\tmaterialRef = viewChild<ElementRef<MeshTransmissionMaterial & MeshTransmissionMaterialOptions>>('material');\n\n\tprivate backResolution = computed(() => this.backsideResolution() || this.resolution());\n\n\tprivate fboBack = injectFBO(() => ({ width: this.backResolution() }));\n\tprivate fboMain = injectFBO(() => ({ width: this.resolution() }));\n\n\tprotected bufferTexture = computed(() => this.buffer() || this.fboMain.texture);\n\tprotected anisotropicBlurOption = computed(() => this.anisotropicBlur() || this.anisotropy());\n\n\tprivate discardMaterial = new MeshDiscardMaterial();\n\n\tprotected material = computed(() => {\n\t\tconst previousMaterial = untracked(this.materialRef)?.nativeElement;\n\n\t\tif (previousMaterial) {\n\t\t\tpreviousMaterial.dispose();\n\t\t\tdelete (previousMaterial as NgtAnyRecord)['__ngt__'];\n\t\t\tdelete (previousMaterial as NgtAnyRecord)['__ngt_renderer__'];\n\t\t}\n\n\t\tconst [samples, transmissionSampler] = [this.samples(), this.transmissionSampler()];\n\t\treturn new MeshTransmissionMaterial({ samples, transmissionSampler });\n\t});\n\n\tconstructor() {\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tconst material = this.materialRef()?.nativeElement;\n\t\t\tif (material) {\n\t\t\t\tmaterial.dispose();\n\t\t\t\tdelete (material as NgtAnyRecord)['__ngt__'];\n\t\t\t\tdelete (material as NgtAnyRecord)['__ngt_renderer__'];\n\t\t\t}\n\t\t});\n\n\t\tlet oldBg: THREE.Texture | THREE.Color | null;\n\t\tlet oldEnvMapIntensity: number | undefined;\n\t\tlet oldTone: THREE.ToneMapping | undefined;\n\t\tlet parent: THREE.Mesh | undefined;\n\t\tinjectBeforeRender(({ clock, gl, scene, camera }) => {\n\t\t\tconst material = this.materialRef()?.nativeElement;\n\t\t\tif (!material) return;\n\n\t\t\tconst [\n\t\t\t\tfboMain,\n\t\t\t\tfboBack,\n\t\t\t\ttransmissionSampler,\n\t\t\t\tbackground,\n\t\t\t\tbackside,\n\t\t\t\tbacksideThickness,\n\t\t\t\tbacksideEnvMapIntensity,\n\t\t\t\tthickness,\n\t\t\t\tside,\n\t\t\t] = [\n\t\t\t\tthis.fboMain,\n\t\t\t\tthis.fboBack,\n\t\t\t\tthis.transmissionSampler(),\n\t\t\t\tthis.background(),\n\t\t\t\tthis.backside(),\n\t\t\t\tthis.backsideThickness(),\n\t\t\t\tthis.backsideEnvMapIntensity(),\n\t\t\t\tthis.thickness(),\n\t\t\t\tthis.side(),\n\t\t\t];\n\n\t\t\tmaterial.time = clock.elapsedTime;\n\t\t\t// Render only if the buffer matches the built-in and no transmission sampler is set\n\t\t\t// @ts-expect-error - we know material.buffer is not just undefined | null\n\t\t\tif (material.buffer === fboMain.texture && !transmissionSampler) {\n\t\t\t\tparent = getInstanceState(material)?.parent() as unknown as THREE.Mesh;\n\n\t\t\t\tif (parent) {\n\t\t\t\t\t// Save defaults\n\t\t\t\t\toldTone = gl.toneMapping;\n\t\t\t\t\toldBg = scene.background;\n\t\t\t\t\toldEnvMapIntensity = material.envMapIntensity;\n\n\t\t\t\t\t// Switch off tonemapping lest it double tone maps\n\t\t\t\t\t// Save the current background and set the HDR as the new BG\n\t\t\t\t\t// Use discardmaterial, the parent will be invisible, but it's shadows will still be cast\n\t\t\t\t\tgl.toneMapping = THREE.NoToneMapping;\n\t\t\t\t\tif (background) scene.background = background;\n\t\t\t\t\tparent.material = this.discardMaterial;\n\n\t\t\t\t\tif (backside) {\n\t\t\t\t\t\t// Render into the backside buffer\n\t\t\t\t\t\tgl.setRenderTarget(fboBack);\n\t\t\t\t\t\tgl.render(scene, camera);\n\t\t\t\t\t\t// And now prepare the material for the main render using the backside buffer\n\t\t\t\t\t\tparent.material = material;\n\t\t\t\t\t\tObject.assign(parent.material, {\n\t\t\t\t\t\t\tbuffer: fboBack.texture,\n\t\t\t\t\t\t\tthickness: backsideThickness,\n\t\t\t\t\t\t\tside: THREE.BackSide,\n\t\t\t\t\t\t\tenvMapIntensity: backsideEnvMapIntensity,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// Render into the main buffer\n\t\t\t\t\tgl.setRenderTarget(fboMain);\n\t\t\t\t\tgl.render(scene, camera);\n\n\t\t\t\t\tparent.material = material;\n\t\t\t\t\tObject.assign(parent.material, {\n\t\t\t\t\t\tbuffer: fboMain.texture,\n\t\t\t\t\t\tthickness,\n\t\t\t\t\t\tside,\n\t\t\t\t\t\tenvMapIntensity: oldEnvMapIntensity,\n\t\t\t\t\t});\n\n\t\t\t\t\t// Set old state back\n\t\t\t\t\tscene.background = oldBg;\n\t\t\t\t\tgl.setRenderTarget(null);\n\t\t\t\t\tgl.toneMapping = oldTone;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n","import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, inject, input } from '@angular/core';\nimport { injectBeforeRender, NgtArgs, NgtAttachable, NgtThreeElements, omit } from 'angular-three';\nimport { MeshWobbleMaterial, MeshWobbleMaterialParameters } from 'angular-three-soba/vanilla-exports';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\n\nexport interface NgtsMeshWobbleMaterialOptions\n\textends MeshWobbleMaterialParameters,\n\t\tPartial<NgtThreeElements['ngt-mesh-standard-material']> {\n\tspeed: number;\n}\n\nconst defaultOptions: NgtsMeshWobbleMaterialOptions = {\n\tspeed: 1,\n};\n\n@Component({\n\tselector: 'ngts-mesh-wobble-material',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[material]\" [parameters]=\"parameters()\" [attach]=\"attach()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsMeshWobbleMaterial {\n\tattach = input<NgtAttachable>('material');\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['speed']);\n\n\tprotected material = new MeshWobbleMaterial();\n\n\tconstructor() {\n\t\tinject(DestroyRef).onDestroy(() => this.material.dispose());\n\n\t\tinjectBeforeRender(({ clock }) => {\n\t\t\tconst material = this.material;\n\t\t\tmaterial.time = clock.elapsedTime * this.options().speed;\n\t\t});\n\t}\n}\n","import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, inject, input } from '@angular/core';\nimport { NgtArgs, NgtAttachable } from 'angular-three';\nimport { PointMaterial } from 'angular-three-soba/shaders';\nimport * as THREE from 'three';\n\n@Component({\n\tselector: 'ngts-point-material',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[material]\" [attach]=\"attach()\" [parameters]=\"options()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsPointMaterial {\n\tattach = input<NgtAttachable>('material');\n\toptions = input({} as THREE.PointsMaterialParameters);\n\n\tprotected material = new PointMaterial(this.options());\n\n\tconstructor() {\n\t\tinject(DestroyRef).onDestroy(() => this.material.dispose());\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions"],"mappings":"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"}
|