angular-three-soba 1.8.1 → 1.9.0
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/assets/default-spot-light-shadow.glsl +10 -0
- package/esm2020/misc/index.mjs +2 -1
- package/esm2020/misc/lib/depth-buffer/depth-buffer.mjs +39 -0
- package/esm2020/shaders/index.mjs +2 -1
- package/esm2020/shaders/lib/mesh-distort-material/mesh-distort-material.mjs +3 -3
- package/esm2020/shaders/lib/spot-light-material/spot-light-material.mjs +86 -0
- package/esm2020/staging/index.mjs +3 -1
- package/esm2020/staging/lib/spot-light/common.mjs +40 -0
- package/esm2020/staging/lib/spot-light/shadow-mesh-input.mjs +51 -0
- package/esm2020/staging/lib/spot-light/spot-light-input.mjs +61 -0
- package/esm2020/staging/lib/spot-light/spot-light-shadow-no-shader.mjs +75 -0
- package/esm2020/staging/lib/spot-light/spot-light-shadow-shader.mjs +124 -0
- package/esm2020/staging/lib/spot-light/spot-light-shadow.mjs +61 -0
- package/esm2020/staging/lib/spot-light/spot-light.mjs +116 -0
- package/esm2020/staging/lib/spot-light/volumetric-mesh.mjs +85 -0
- package/fesm2015/angular-three-soba-misc.mjs +38 -4
- package/fesm2015/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2015/angular-three-soba-shaders.mjs +89 -4
- package/fesm2015/angular-three-soba-shaders.mjs.map +1 -1
- package/fesm2015/angular-three-soba-staging.mjs +568 -5
- package/fesm2015/angular-three-soba-staging.mjs.map +1 -1
- package/fesm2020/angular-three-soba-misc.mjs +37 -3
- package/fesm2020/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2020/angular-three-soba-shaders.mjs +89 -4
- package/fesm2020/angular-three-soba-shaders.mjs.map +1 -1
- package/fesm2020/angular-three-soba-staging.mjs +568 -5
- package/fesm2020/angular-three-soba-staging.mjs.map +1 -1
- package/misc/index.d.ts +1 -0
- package/misc/lib/depth-buffer/depth-buffer.d.ts +7 -0
- package/package.json +1 -1
- package/plugin/package.json +1 -1
- package/shaders/index.d.ts +1 -0
- package/shaders/lib/mesh-distort-material/mesh-distort-material.d.ts +7 -1
- package/shaders/lib/spot-light-material/spot-light-material.d.ts +4 -0
- package/staging/index.d.ts +2 -0
- package/staging/lib/spot-light/common.d.ts +3 -0
- package/staging/lib/spot-light/shadow-mesh-input.d.ts +14 -0
- package/staging/lib/spot-light/spot-light-input.d.ts +16 -0
- package/staging/lib/spot-light/spot-light-shadow-no-shader.d.ts +15 -0
- package/staging/lib/spot-light/spot-light-shadow-shader.d.ts +25 -0
- package/staging/lib/spot-light/spot-light-shadow.d.ts +6 -0
- package/staging/lib/spot-light/spot-light.d.ts +17 -0
- package/staging/lib/spot-light/volumetric-mesh.d.ts +15 -0
package/esm2020/misc/index.mjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export * from './lib/bake-shadows/bake-shadows';
|
|
2
|
+
export * from './lib/depth-buffer/depth-buffer';
|
|
2
3
|
export * from './lib/fbo/fbo';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9taXNjL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9iYWtlLXNoYWRvd3MvYmFrZS1zaGFkb3dzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RlcHRoLWJ1ZmZlci9kZXB0aC1idWZmZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmJvL2Zibyc7XG4iXX0=
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { inject } from '@angular/core';
|
|
2
|
+
import { injectBeforeRender, injectNgtDestroy, injectNgtRef, NgtStore } from 'angular-three';
|
|
3
|
+
import { combineLatest, isObservable, map, of, takeUntil } from 'rxjs';
|
|
4
|
+
import * as THREE from 'three';
|
|
5
|
+
import { injectNgtsFBO } from '../fbo/fbo';
|
|
6
|
+
export function injectNgtsDepthBuffer(paramsFactory = (params) => params) {
|
|
7
|
+
const depthBufferRef = injectNgtRef();
|
|
8
|
+
const store = inject(NgtStore);
|
|
9
|
+
const { destroy$ } = injectNgtDestroy();
|
|
10
|
+
const params = paramsFactory({ size: 256, frames: Infinity });
|
|
11
|
+
const params$ = isObservable(params) ? params : of(params);
|
|
12
|
+
let rawParams = { size: 256, frames: Infinity };
|
|
13
|
+
const fbo = injectNgtsFBO(() => {
|
|
14
|
+
return combineLatest([params$, store.select('size'), store.select('viewport', 'dpr')]).pipe(map(([params, size, dpr]) => {
|
|
15
|
+
rawParams = params;
|
|
16
|
+
const w = params.size || size.width * dpr;
|
|
17
|
+
const h = params.size || size.height * dpr;
|
|
18
|
+
const depthTexture = new THREE.DepthTexture(w, h);
|
|
19
|
+
depthTexture.format = THREE.DepthFormat;
|
|
20
|
+
depthTexture.type = THREE.UnsignedShortType;
|
|
21
|
+
const depthConfig = { depthTexture };
|
|
22
|
+
return { width: w, height: h, settings: depthConfig };
|
|
23
|
+
}));
|
|
24
|
+
});
|
|
25
|
+
let count = 0;
|
|
26
|
+
injectBeforeRender(({ gl, scene, camera }) => {
|
|
27
|
+
if ((rawParams.frames === Infinity || count < rawParams.frames) && fbo.nativeElement) {
|
|
28
|
+
gl.setRenderTarget(fbo.nativeElement);
|
|
29
|
+
gl.render(scene, camera);
|
|
30
|
+
gl.setRenderTarget(null);
|
|
31
|
+
count++;
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
fbo.$.pipe(takeUntil(destroy$)).subscribe((fbo) => {
|
|
35
|
+
depthBufferRef.nativeElement = fbo.depthTexture;
|
|
36
|
+
});
|
|
37
|
+
return depthBufferRef;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwdGgtYnVmZmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvbWlzYy9zcmMvbGliL2RlcHRoLWJ1ZmZlci9kZXB0aC1idWZmZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RixPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRixPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBTzNDLE1BQU0sVUFBVSxxQkFBcUIsQ0FDakMsZ0JBRWlFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUErQjtJQUU1RyxNQUFNLGNBQWMsR0FBRyxZQUFZLEVBQXNCLENBQUM7SUFFMUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO0lBRXhDLE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDOUQsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUUzRCxJQUFJLFNBQVMsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBRWhELE1BQU0sR0FBRyxHQUFHLGFBQWEsQ0FBQyxHQUFHLEVBQUU7UUFDM0IsT0FBTyxhQUFhLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUN2RixHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRTtZQUN4QixTQUFTLEdBQUcsTUFBTSxDQUFDO1lBQ25CLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7WUFDMUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztZQUMzQyxNQUFNLFlBQVksR0FBRyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2xELFlBQVksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztZQUN4QyxZQUFZLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztZQUM1QyxNQUFNLFdBQVcsR0FBRyxFQUFFLFlBQVksRUFBRSxDQUFDO1lBRXJDLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDLENBQUMsQ0FBQztJQUVILElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNkLGtCQUFrQixDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7UUFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssUUFBUSxJQUFJLEtBQUssR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLGFBQWEsRUFBRTtZQUNsRixFQUFFLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN0QyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN6QixFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLEtBQUssRUFBRSxDQUFDO1NBQ1g7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQzlDLGNBQWMsQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQztJQUNwRCxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sY0FBYyxDQUFDO0FBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGluamVjdEJlZm9yZVJlbmRlciwgaW5qZWN0Tmd0RGVzdHJveSwgaW5qZWN0Tmd0UmVmLCBOZ3RTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgaXNPYnNlcnZhYmxlLCBtYXAsIE9ic2VydmFibGUsIG9mLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7IGluamVjdE5ndHNGQk8gfSBmcm9tICcuLi9mYm8vZmJvJztcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzRGVwdGhCdWZmZXJQYXJhbXMge1xuICAgIHNpemU6IG51bWJlcjtcbiAgICBmcmFtZXM6IG51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE5ndHNEZXB0aEJ1ZmZlcihcbiAgICBwYXJhbXNGYWN0b3J5OiAoXG4gICAgICAgIGRlZmF1bHRQYXJhbXM6IFBhcnRpYWw8Tmd0c0RlcHRoQnVmZmVyUGFyYW1zPlxuICAgICkgPT4gTmd0c0RlcHRoQnVmZmVyUGFyYW1zIHwgT2JzZXJ2YWJsZTxOZ3RzRGVwdGhCdWZmZXJQYXJhbXM+ID0gKHBhcmFtcykgPT4gcGFyYW1zIGFzIE5ndHNEZXB0aEJ1ZmZlclBhcmFtc1xuKSB7XG4gICAgY29uc3QgZGVwdGhCdWZmZXJSZWYgPSBpbmplY3ROZ3RSZWY8VEhSRUUuRGVwdGhUZXh0dXJlPigpO1xuXG4gICAgY29uc3Qgc3RvcmUgPSBpbmplY3QoTmd0U3RvcmUpO1xuICAgIGNvbnN0IHsgZGVzdHJveSQgfSA9IGluamVjdE5ndERlc3Ryb3koKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHBhcmFtc0ZhY3RvcnkoeyBzaXplOiAyNTYsIGZyYW1lczogSW5maW5pdHkgfSk7XG4gICAgY29uc3QgcGFyYW1zJCA9IGlzT2JzZXJ2YWJsZShwYXJhbXMpID8gcGFyYW1zIDogb2YocGFyYW1zKTtcblxuICAgIGxldCByYXdQYXJhbXMgPSB7IHNpemU6IDI1NiwgZnJhbWVzOiBJbmZpbml0eSB9O1xuXG4gICAgY29uc3QgZmJvID0gaW5qZWN0Tmd0c0ZCTygoKSA9PiB7XG4gICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtwYXJhbXMkLCBzdG9yZS5zZWxlY3QoJ3NpemUnKSwgc3RvcmUuc2VsZWN0KCd2aWV3cG9ydCcsICdkcHInKV0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKFtwYXJhbXMsIHNpemUsIGRwcl0pID0+IHtcbiAgICAgICAgICAgICAgICByYXdQYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgICAgICAgICAgY29uc3QgdyA9IHBhcmFtcy5zaXplIHx8IHNpemUud2lkdGggKiBkcHI7XG4gICAgICAgICAgICAgICAgY29uc3QgaCA9IHBhcmFtcy5zaXplIHx8IHNpemUuaGVpZ2h0ICogZHByO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlcHRoVGV4dHVyZSA9IG5ldyBUSFJFRS5EZXB0aFRleHR1cmUodywgaCk7XG4gICAgICAgICAgICAgICAgZGVwdGhUZXh0dXJlLmZvcm1hdCA9IFRIUkVFLkRlcHRoRm9ybWF0O1xuICAgICAgICAgICAgICAgIGRlcHRoVGV4dHVyZS50eXBlID0gVEhSRUUuVW5zaWduZWRTaG9ydFR5cGU7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVwdGhDb25maWcgPSB7IGRlcHRoVGV4dHVyZSB9O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgd2lkdGg6IHcsIGhlaWdodDogaCwgc2V0dGluZ3M6IGRlcHRoQ29uZmlnIH07XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH0pO1xuXG4gICAgbGV0IGNvdW50ID0gMDtcbiAgICBpbmplY3RCZWZvcmVSZW5kZXIoKHsgZ2wsIHNjZW5lLCBjYW1lcmEgfSkgPT4ge1xuICAgICAgICBpZiAoKHJhd1BhcmFtcy5mcmFtZXMgPT09IEluZmluaXR5IHx8IGNvdW50IDwgcmF3UGFyYW1zLmZyYW1lcykgJiYgZmJvLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIGdsLnNldFJlbmRlclRhcmdldChmYm8ubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICBnbC5yZW5kZXIoc2NlbmUsIGNhbWVyYSk7XG4gICAgICAgICAgICBnbC5zZXRSZW5kZXJUYXJnZXQobnVsbCk7XG4gICAgICAgICAgICBjb3VudCsrO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBmYm8uJC5waXBlKHRha2VVbnRpbChkZXN0cm95JCkpLnN1YnNjcmliZSgoZmJvKSA9PiB7XG4gICAgICAgIGRlcHRoQnVmZmVyUmVmLm5hdGl2ZUVsZW1lbnQgPSBmYm8uZGVwdGhUZXh0dXJlO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRlcHRoQnVmZmVyUmVmO1xufVxuIl19
|
|
@@ -4,4 +4,5 @@ export * from './lib/mesh-distort-material/mesh-distort-material';
|
|
|
4
4
|
export * from './lib/mesh-reflector-material/mesh-reflector-material';
|
|
5
5
|
export * from './lib/mesh-wobble-material/mesh-wobble-material';
|
|
6
6
|
export * from './lib/shader-material/shader-material';
|
|
7
|
-
|
|
7
|
+
export * from './lib/spot-light-material/spot-light-material';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9zaGFkZXJzL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLCtDQUErQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvYmx1ci1wYXNzL2JsdXItcGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb252b2x1dGlvbi1tYXRlcmlhbC9jb252b2x1dGlvbi1tYXRlcmlhbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZXNoLWRpc3RvcnQtbWF0ZXJpYWwvbWVzaC1kaXN0b3J0LW1hdGVyaWFsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lc2gtcmVmbGVjdG9yLW1hdGVyaWFsL21lc2gtcmVmbGVjdG9yLW1hdGVyaWFsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lc2gtd29iYmxlLW1hdGVyaWFsL21lc2gtd29iYmxlLW1hdGVyaWFsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYWRlci1tYXRlcmlhbC9zaGFkZXItbWF0ZXJpYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3BvdC1saWdodC1tYXRlcmlhbC9zcG90LWxpZ2h0LW1hdGVyaWFsJztcbiJdfQ==
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { InjectionToken } from '@angular/core';
|
|
2
2
|
import * as THREE from 'three';
|
|
3
3
|
export const NGTS_DISTORT_MATERIAL_SHADER = new InjectionToken('DistortMaterialShader');
|
|
4
|
-
export function
|
|
4
|
+
export function provideNgtsMeshDistortMaterialShader(distortShader) {
|
|
5
5
|
return {
|
|
6
6
|
provide: NGTS_DISTORT_MATERIAL_SHADER,
|
|
7
7
|
useFactory: () => {
|
|
8
|
-
return class
|
|
8
|
+
return class extends THREE.MeshPhysicalMaterial {
|
|
9
9
|
constructor(parameters = {}) {
|
|
10
10
|
super(parameters);
|
|
11
11
|
this.setValues(parameters);
|
|
@@ -52,4 +52,4 @@ export function provideDistortMaterialShader(distortShader) {
|
|
|
52
52
|
},
|
|
53
53
|
};
|
|
54
54
|
}
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC1kaXN0b3J0LW1hdGVyaWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvc2hhZGVycy9zcmMvbGliL21lc2gtZGlzdG9ydC1tYXRlcmlhbC9tZXNoLWRpc3RvcnQtbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQWUvQixNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLGNBQWMsQ0FBc0IsdUJBQXVCLENBQUMsQ0FBQztBQUU3RyxNQUFNLFVBQVUsb0NBQW9DLENBQUMsYUFBcUI7SUFDdEUsT0FBTztRQUNILE9BQU8sRUFBRSw0QkFBNEI7UUFDckMsVUFBVSxFQUFFLEdBQUcsRUFBRTtZQUNiLE9BQU8sS0FBTSxTQUFRLEtBQUssQ0FBQyxvQkFBb0I7Z0JBSzNDLFlBQVksYUFBbUQsRUFBRTtvQkFDN0QsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUMzQixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO29CQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDO29CQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUNoQyxDQUFDO2dCQUVRLGVBQWUsQ0FBQyxNQUFvQjtvQkFDekMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO29CQUNyQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7b0JBQ3pDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztvQkFFM0MsTUFBTSxDQUFDLFlBQVksR0FBRzs7OztlQUkzQixhQUFhO2VBQ2IsTUFBTSxDQUFDLFlBQVk7WUFDdEIsQ0FBQztvQkFDTyxNQUFNLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUM3Qyx5QkFBeUIsRUFDekI7Ozs7Z0JBSVIsQ0FDSyxDQUFDO2dCQUNOLENBQUM7Z0JBRUQsSUFBSSxJQUFJO29CQUNKLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7Z0JBQzVCLENBQUM7Z0JBRUQsSUFBSSxJQUFJLENBQUMsQ0FBQztvQkFDTixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBQ3pCLENBQUM7Z0JBRUQsSUFBSSxPQUFPO29CQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7Z0JBQy9CLENBQUM7Z0JBRUQsSUFBSSxPQUFPLENBQUMsQ0FBQztvQkFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBQzVCLENBQUM7Z0JBRUQsSUFBSSxNQUFNO29CQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7Z0JBQzlCLENBQUM7Z0JBRUQsSUFBSSxNQUFNLENBQUMsQ0FBQztvQkFDUixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBQzNCLENBQUM7YUFDSixDQUFDO1FBQ04sQ0FBQztLQUNKLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcblxuaW50ZXJmYWNlIFVuaWZvcm08VD4ge1xuICAgIHZhbHVlOiBUO1xufVxuXG4vKipcbiAqIG5wbSBpIC1EIHJhdy1sb2FkZXIgZ2xzbGlmeS1sb2FkZXJcbiAqIFVzYWdlOiBpbXBvcnQgZGlzdG9ydCBmcm9tICdyYXctbG9hZGVyIWdsc2xpZnktbG9hZGVyIWFuZ3VsYXItdGhyZWUtc29iYS9hc3NldHMvZGlzdG9ydC52ZXJ0Lmdsc2wnXG4gKlxuICogcHJvdmlkZU5ndHNNZXNoRGlzdG9ydE1hdGVyaWFsU2hhZGVyKGRpc3RvcnQpXG4gKi9cblxuZXhwb3J0IHR5cGUgTWVzaERpc3RvcnRNYXRlcmlhbCA9IFR5cGU8eyB0aW1lOiBudW1iZXI7IGRpc3RvcnQ6IG51bWJlcjsgcmFkaXVzOiBudW1iZXIgfSAmIFRIUkVFLk1lc2hQaHlzaWNhbE1hdGVyaWFsPjtcblxuZXhwb3J0IGNvbnN0IE5HVFNfRElTVE9SVF9NQVRFUklBTF9TSEFERVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48TWVzaERpc3RvcnRNYXRlcmlhbD4oJ0Rpc3RvcnRNYXRlcmlhbFNoYWRlcicpO1xuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZU5ndHNNZXNoRGlzdG9ydE1hdGVyaWFsU2hhZGVyKGRpc3RvcnRTaGFkZXI6IHN0cmluZykge1xuICAgIHJldHVybiB7XG4gICAgICAgIHByb3ZpZGU6IE5HVFNfRElTVE9SVF9NQVRFUklBTF9TSEFERVIsXG4gICAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBjbGFzcyBleHRlbmRzIFRIUkVFLk1lc2hQaHlzaWNhbE1hdGVyaWFsIHtcbiAgICAgICAgICAgICAgICBfdGltZTogVW5pZm9ybTxudW1iZXI+O1xuICAgICAgICAgICAgICAgIF9kaXN0b3J0OiBVbmlmb3JtPG51bWJlcj47XG4gICAgICAgICAgICAgICAgX3JhZGl1czogVW5pZm9ybTxudW1iZXI+O1xuXG4gICAgICAgICAgICAgICAgY29uc3RydWN0b3IocGFyYW1ldGVyczogVEhSRUUuTWVzaFBoeXNpY2FsTWF0ZXJpYWxQYXJhbWV0ZXJzID0ge30pIHtcbiAgICAgICAgICAgICAgICAgICAgc3VwZXIocGFyYW1ldGVycyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVzKHBhcmFtZXRlcnMpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90aW1lID0geyB2YWx1ZTogMCB9O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kaXN0b3J0ID0geyB2YWx1ZTogMC40IH07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3JhZGl1cyA9IHsgdmFsdWU6IDEgfTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBvdmVycmlkZSBvbkJlZm9yZUNvbXBpbGUoc2hhZGVyOiBUSFJFRS5TaGFkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgc2hhZGVyLnVuaWZvcm1zWyd0aW1lJ10gPSB0aGlzLl90aW1lO1xuICAgICAgICAgICAgICAgICAgICBzaGFkZXIudW5pZm9ybXNbJ3JhZGl1cyddID0gdGhpcy5fcmFkaXVzO1xuICAgICAgICAgICAgICAgICAgICBzaGFkZXIudW5pZm9ybXNbJ2Rpc3RvcnQnXSA9IHRoaXMuX2Rpc3RvcnQ7XG5cbiAgICAgICAgICAgICAgICAgICAgc2hhZGVyLnZlcnRleFNoYWRlciA9IGBcblx0XHRcdFx0XHRcdFx0XHRcdCAgICB1bmlmb3JtIGZsb2F0IHRpbWU7XG5cdFx0XHRcdFx0XHRcdFx0XHQgICAgdW5pZm9ybSBmbG9hdCByYWRpdXM7XG5cdFx0XHRcdFx0XHRcdFx0XHQgICAgdW5pZm9ybSBmbG9hdCBkaXN0b3J0O1xuXHRcdFx0XHRcdFx0XHRcdFx0ICAgICR7ZGlzdG9ydFNoYWRlcn1cblx0XHRcdFx0XHRcdFx0XHRcdCAgICAke3NoYWRlci52ZXJ0ZXhTaGFkZXJ9XG5cdFx0XHRcdFx0XHRcdFx0XHQgIGA7XG4gICAgICAgICAgICAgICAgICAgIHNoYWRlci52ZXJ0ZXhTaGFkZXIgPSBzaGFkZXIudmVydGV4U2hhZGVyLnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgPGJlZ2luX3ZlcnRleD4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgYFxuXHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgZmxvYXQgdXBkYXRlVGltZSA9IHRpbWUgLyA1MC4wO1xuXHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgZmxvYXQgbm9pc2UgPSBzbm9pc2UodmVjMyhwb3NpdGlvbiAvIDIuMCArIHVwZGF0ZVRpbWUgKiA1LjApKTtcblx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIHZlYzMgdHJhbnNmb3JtZWQgPSB2ZWMzKHBvc2l0aW9uICogKG5vaXNlICogcG93KGRpc3RvcnQsIDIuMCkgKyByYWRpdXMpKTtcblx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIGBcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBnZXQgdGltZSgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3RpbWUudmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgc2V0IHRpbWUodikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90aW1lLnZhbHVlID0gdjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBnZXQgZGlzdG9ydCgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3RvcnQudmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgc2V0IGRpc3RvcnQodikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kaXN0b3J0LnZhbHVlID0gdjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBnZXQgcmFkaXVzKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcmFkaXVzLnZhbHVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHNldCByYWRpdXModikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9yYWRpdXMudmFsdWUgPSB2O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { Color, ShaderMaterial, Vector2, Vector3 } from 'three';
|
|
2
|
+
export class SpotLightMaterial extends ShaderMaterial {
|
|
3
|
+
constructor() {
|
|
4
|
+
super({
|
|
5
|
+
uniforms: {
|
|
6
|
+
depth: { value: null },
|
|
7
|
+
opacity: { value: 1 },
|
|
8
|
+
attenuation: { value: 2.5 },
|
|
9
|
+
anglePower: { value: 12 },
|
|
10
|
+
spotPosition: { value: new Vector3(0, 0, 0) },
|
|
11
|
+
lightColor: { value: new Color('white') },
|
|
12
|
+
cameraNear: { value: 0 },
|
|
13
|
+
cameraFar: { value: 1 },
|
|
14
|
+
resolution: { value: new Vector2(0, 0) },
|
|
15
|
+
},
|
|
16
|
+
transparent: true,
|
|
17
|
+
depthWrite: false,
|
|
18
|
+
vertexShader: /* glsl */ `
|
|
19
|
+
varying vec3 vNormal;
|
|
20
|
+
varying vec3 vWorldPosition;
|
|
21
|
+
varying float vViewZ;
|
|
22
|
+
varying float vIntensity;
|
|
23
|
+
uniform vec3 spotPosition;
|
|
24
|
+
uniform float attenuation;
|
|
25
|
+
|
|
26
|
+
void main() {
|
|
27
|
+
// compute intensity
|
|
28
|
+
vNormal = normalize( normalMatrix * normal );
|
|
29
|
+
vec4 worldPosition = modelMatrix * vec4( position, 1.0 );
|
|
30
|
+
vWorldPosition = worldPosition.xyz;
|
|
31
|
+
vec4 viewPosition = viewMatrix * worldPosition;
|
|
32
|
+
vViewZ = viewPosition.z;
|
|
33
|
+
float intensity = distance(worldPosition.xyz, spotPosition) / attenuation;
|
|
34
|
+
intensity = 1.0 - clamp(intensity, 0.0, 1.0);
|
|
35
|
+
vIntensity = intensity;
|
|
36
|
+
// set gl_Position
|
|
37
|
+
gl_Position = projectionMatrix * viewPosition;
|
|
38
|
+
|
|
39
|
+
}`,
|
|
40
|
+
fragmentShader: /* glsl */ `
|
|
41
|
+
#include <packing>
|
|
42
|
+
|
|
43
|
+
varying vec3 vNormal;
|
|
44
|
+
varying vec3 vWorldPosition;
|
|
45
|
+
uniform vec3 lightColor;
|
|
46
|
+
uniform vec3 spotPosition;
|
|
47
|
+
uniform float attenuation;
|
|
48
|
+
uniform float anglePower;
|
|
49
|
+
uniform sampler2D depth;
|
|
50
|
+
uniform vec2 resolution;
|
|
51
|
+
uniform float cameraNear;
|
|
52
|
+
uniform float cameraFar;
|
|
53
|
+
varying float vViewZ;
|
|
54
|
+
varying float vIntensity;
|
|
55
|
+
uniform float opacity;
|
|
56
|
+
|
|
57
|
+
float readDepth( sampler2D depthSampler, vec2 coord ) {
|
|
58
|
+
float fragCoordZ = texture2D( depthSampler, coord ).x;
|
|
59
|
+
float viewZ = perspectiveDepthToViewZ(fragCoordZ, cameraNear, cameraFar);
|
|
60
|
+
return viewZ;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
void main() {
|
|
64
|
+
float d = 1.0;
|
|
65
|
+
bool isSoft = resolution[0] > 0.0 && resolution[1] > 0.0;
|
|
66
|
+
if (isSoft) {
|
|
67
|
+
vec2 sUv = gl_FragCoord.xy / resolution;
|
|
68
|
+
d = readDepth(depth, sUv);
|
|
69
|
+
}
|
|
70
|
+
float intensity = vIntensity;
|
|
71
|
+
vec3 normal = vec3(vNormal.x, vNormal.y, abs(vNormal.z));
|
|
72
|
+
float angleIntensity = pow( dot(normal, vec3(0.0, 0.0, 1.0)), anglePower );
|
|
73
|
+
intensity *= angleIntensity;
|
|
74
|
+
// fades when z is close to sampled depth, meaning the cone is intersecting existing geometry
|
|
75
|
+
if (isSoft) {
|
|
76
|
+
intensity *= smoothstep(0., 1., vViewZ - d);
|
|
77
|
+
}
|
|
78
|
+
gl_FragColor = vec4(lightColor, intensity * opacity);
|
|
79
|
+
|
|
80
|
+
#include <tonemapping_fragment>
|
|
81
|
+
#include <encodings_fragment>
|
|
82
|
+
}`,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BvdC1saWdodC1tYXRlcmlhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci10aHJlZS1zb2JhL3NoYWRlcnMvc3JjL2xpYi9zcG90LWxpZ2h0LW1hdGVyaWFsL3Nwb3QtbGlnaHQtbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUVoRSxNQUFNLE9BQU8saUJBQWtCLFNBQVEsY0FBYztJQUNqRDtRQUNJLEtBQUssQ0FBQztZQUNGLFFBQVEsRUFBRTtnQkFDTixLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2dCQUN0QixPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQixXQUFXLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO2dCQUMzQixVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO2dCQUN6QixZQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtnQkFDN0MsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUN6QyxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO2dCQUN4QixTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO2dCQUN2QixVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO2FBQzNDO1lBQ0QsV0FBVyxFQUFFLElBQUk7WUFDakIsVUFBVSxFQUFFLEtBQUs7WUFDakIsWUFBWSxFQUFFLFVBQVUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1FBcUI3QjtZQUNJLGNBQWMsRUFBRSxVQUFVLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRQTBDL0I7U0FDQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2xvciwgU2hhZGVyTWF0ZXJpYWwsIFZlY3RvcjIsIFZlY3RvcjMgfSBmcm9tICd0aHJlZSc7XG5cbmV4cG9ydCBjbGFzcyBTcG90TGlnaHRNYXRlcmlhbCBleHRlbmRzIFNoYWRlck1hdGVyaWFsIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoe1xuICAgICAgICAgICAgdW5pZm9ybXM6IHtcbiAgICAgICAgICAgICAgICBkZXB0aDogeyB2YWx1ZTogbnVsbCB9LFxuICAgICAgICAgICAgICAgIG9wYWNpdHk6IHsgdmFsdWU6IDEgfSxcbiAgICAgICAgICAgICAgICBhdHRlbnVhdGlvbjogeyB2YWx1ZTogMi41IH0sXG4gICAgICAgICAgICAgICAgYW5nbGVQb3dlcjogeyB2YWx1ZTogMTIgfSxcbiAgICAgICAgICAgICAgICBzcG90UG9zaXRpb246IHsgdmFsdWU6IG5ldyBWZWN0b3IzKDAsIDAsIDApIH0sXG4gICAgICAgICAgICAgICAgbGlnaHRDb2xvcjogeyB2YWx1ZTogbmV3IENvbG9yKCd3aGl0ZScpIH0sXG4gICAgICAgICAgICAgICAgY2FtZXJhTmVhcjogeyB2YWx1ZTogMCB9LFxuICAgICAgICAgICAgICAgIGNhbWVyYUZhcjogeyB2YWx1ZTogMSB9LFxuICAgICAgICAgICAgICAgIHJlc29sdXRpb246IHsgdmFsdWU6IG5ldyBWZWN0b3IyKDAsIDApIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHJhbnNwYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICBkZXB0aFdyaXRlOiBmYWxzZSxcbiAgICAgICAgICAgIHZlcnRleFNoYWRlcjogLyogZ2xzbCAqLyBgXG4gICAgICB2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcbiAgICAgIHZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcbiAgICAgIHZhcnlpbmcgZmxvYXQgdlZpZXdaO1xuICAgICAgdmFyeWluZyBmbG9hdCB2SW50ZW5zaXR5O1xuICAgICAgdW5pZm9ybSB2ZWMzIHNwb3RQb3NpdGlvbjtcbiAgICAgIHVuaWZvcm0gZmxvYXQgYXR0ZW51YXRpb247XG5cbiAgICAgIHZvaWQgbWFpbigpIHtcbiAgICAgICAgLy8gY29tcHV0ZSBpbnRlbnNpdHlcbiAgICAgICAgdk5vcm1hbCA9IG5vcm1hbGl6ZSggbm9ybWFsTWF0cml4ICogbm9ybWFsICk7XG4gICAgICAgIHZlYzQgd29ybGRQb3NpdGlvblx0PSBtb2RlbE1hdHJpeCAqIHZlYzQoIHBvc2l0aW9uLCAxLjAgKTtcbiAgICAgICAgdldvcmxkUG9zaXRpb24gPSB3b3JsZFBvc2l0aW9uLnh5ejtcbiAgICAgICAgdmVjNCB2aWV3UG9zaXRpb24gPSB2aWV3TWF0cml4ICogd29ybGRQb3NpdGlvbjtcbiAgICAgICAgdlZpZXdaID0gdmlld1Bvc2l0aW9uLno7XG4gICAgICAgIGZsb2F0IGludGVuc2l0eVx0PSBkaXN0YW5jZSh3b3JsZFBvc2l0aW9uLnh5eiwgc3BvdFBvc2l0aW9uKSAvIGF0dGVudWF0aW9uO1xuICAgICAgICBpbnRlbnNpdHlcdD0gMS4wIC0gY2xhbXAoaW50ZW5zaXR5LCAwLjAsIDEuMCk7XG4gICAgICAgIHZJbnRlbnNpdHkgPSBpbnRlbnNpdHk7XG4gICAgICAgIC8vIHNldCBnbF9Qb3NpdGlvblxuICAgICAgICBnbF9Qb3NpdGlvblx0PSBwcm9qZWN0aW9uTWF0cml4ICogdmlld1Bvc2l0aW9uO1xuXG4gICAgICB9YCxcbiAgICAgICAgICAgIGZyYWdtZW50U2hhZGVyOiAvKiBnbHNsICovIGBcbiAgICAgICNpbmNsdWRlIDxwYWNraW5nPlxuXG4gICAgICB2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcbiAgICAgIHZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcbiAgICAgIHVuaWZvcm0gdmVjMyBsaWdodENvbG9yO1xuICAgICAgdW5pZm9ybSB2ZWMzIHNwb3RQb3NpdGlvbjtcbiAgICAgIHVuaWZvcm0gZmxvYXQgYXR0ZW51YXRpb247XG4gICAgICB1bmlmb3JtIGZsb2F0IGFuZ2xlUG93ZXI7XG4gICAgICB1bmlmb3JtIHNhbXBsZXIyRCBkZXB0aDtcbiAgICAgIHVuaWZvcm0gdmVjMiByZXNvbHV0aW9uO1xuICAgICAgdW5pZm9ybSBmbG9hdCBjYW1lcmFOZWFyO1xuICAgICAgdW5pZm9ybSBmbG9hdCBjYW1lcmFGYXI7XG4gICAgICB2YXJ5aW5nIGZsb2F0IHZWaWV3WjtcbiAgICAgIHZhcnlpbmcgZmxvYXQgdkludGVuc2l0eTtcbiAgICAgIHVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcblxuICAgICAgZmxvYXQgcmVhZERlcHRoKCBzYW1wbGVyMkQgZGVwdGhTYW1wbGVyLCB2ZWMyIGNvb3JkICkge1xuICAgICAgICBmbG9hdCBmcmFnQ29vcmRaID0gdGV4dHVyZTJEKCBkZXB0aFNhbXBsZXIsIGNvb3JkICkueDtcbiAgICAgICAgZmxvYXQgdmlld1ogPSBwZXJzcGVjdGl2ZURlcHRoVG9WaWV3WihmcmFnQ29vcmRaLCBjYW1lcmFOZWFyLCBjYW1lcmFGYXIpO1xuICAgICAgICByZXR1cm4gdmlld1o7XG4gICAgICB9XG5cbiAgICAgIHZvaWQgbWFpbigpIHtcbiAgICAgICAgZmxvYXQgZCA9IDEuMDtcbiAgICAgICAgYm9vbCBpc1NvZnQgPSByZXNvbHV0aW9uWzBdID4gMC4wICYmIHJlc29sdXRpb25bMV0gPiAwLjA7XG4gICAgICAgIGlmIChpc1NvZnQpIHtcbiAgICAgICAgICB2ZWMyIHNVdiA9IGdsX0ZyYWdDb29yZC54eSAvIHJlc29sdXRpb247XG4gICAgICAgICAgZCA9IHJlYWREZXB0aChkZXB0aCwgc1V2KTtcbiAgICAgICAgfVxuICAgICAgICBmbG9hdCBpbnRlbnNpdHkgPSB2SW50ZW5zaXR5O1xuICAgICAgICB2ZWMzIG5vcm1hbFx0PSB2ZWMzKHZOb3JtYWwueCwgdk5vcm1hbC55LCBhYnModk5vcm1hbC56KSk7XG4gICAgICAgIGZsb2F0IGFuZ2xlSW50ZW5zaXR5XHQ9IHBvdyggZG90KG5vcm1hbCwgdmVjMygwLjAsIDAuMCwgMS4wKSksIGFuZ2xlUG93ZXIgKTtcbiAgICAgICAgaW50ZW5zaXR5XHQqPSBhbmdsZUludGVuc2l0eTtcbiAgICAgICAgLy8gZmFkZXMgd2hlbiB6IGlzIGNsb3NlIHRvIHNhbXBsZWQgZGVwdGgsIG1lYW5pbmcgdGhlIGNvbmUgaXMgaW50ZXJzZWN0aW5nIGV4aXN0aW5nIGdlb21ldHJ5XG4gICAgICAgIGlmIChpc1NvZnQpIHtcbiAgICAgICAgICBpbnRlbnNpdHlcdCo9IHNtb290aHN0ZXAoMC4sIDEuLCB2Vmlld1ogLSBkKTtcbiAgICAgICAgfVxuICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGxpZ2h0Q29sb3IsIGludGVuc2l0eSAqIG9wYWNpdHkpO1xuXG4gICAgICAgICNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0ICAgICAgI2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cbiAgICAgIH1gLFxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -10,6 +10,8 @@ export * from './lib/environment/environment';
|
|
|
10
10
|
export * from './lib/float/float';
|
|
11
11
|
export * from './lib/sky/sky';
|
|
12
12
|
export * from './lib/sparkles/sparkles';
|
|
13
|
+
export * from './lib/spot-light/spot-light';
|
|
14
|
+
export * from './lib/spot-light/spot-light-shadow';
|
|
13
15
|
export * from './lib/stage/stage';
|
|
14
16
|
export * from './lib/stars/stars';
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9zdGFnaW5nL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUMxRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNwRixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgTmd0c0FjY3VtdWxhdGl2ZVNoYWRvd3MgfSBmcm9tICcuL2xpYi9hY2N1bXVsYXRpdmUtc2hhZG93cy9hY2N1bXVsYXRpdmUtc2hhZG93cyc7XG5leHBvcnQgeyBOZ3RzUmFuZG9taXplZExpZ2h0cyB9IGZyb20gJy4vbGliL2FjY3VtdWxhdGl2ZS1zaGFkb3dzL3JhbmRvbWl6ZWQtbGlnaHRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JvdW5kcy9ib3VuZHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2FtZXJhLXNoYWtlL2NhbWVyYS1zaGFrZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jZW50ZXIvY2VudGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Nsb3VkL2Nsb3VkJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRhY3Qtc2hhZG93cy9jb250YWN0LXNoYWRvd3MnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW52aXJvbm1lbnQvYXNzZXRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Vudmlyb25tZW50L2Vudmlyb25tZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zsb2F0L2Zsb2F0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NreS9za3knO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3BhcmtsZXMvc3BhcmtsZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3BvdC1saWdodC9zcG90LWxpZ2h0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Nwb3QtbGlnaHQvc3BvdC1saWdodC1zaGFkb3cnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RhZ2Uvc3RhZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RhcnMvc3RhcnMnO1xuIl19
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { injectBeforeRender } from 'angular-three';
|
|
2
|
+
import { combineLatest, startWith } from 'rxjs';
|
|
3
|
+
import * as THREE from 'three';
|
|
4
|
+
const isSpotLight = (child) => {
|
|
5
|
+
return child?.isSpotLight;
|
|
6
|
+
};
|
|
7
|
+
export function injectShadowMeshCommon(spotLight, mesh, width, height, distance) {
|
|
8
|
+
const pos = new THREE.Vector3();
|
|
9
|
+
const dir = new THREE.Vector3();
|
|
10
|
+
const commonEffect = (instance) => {
|
|
11
|
+
instance.hold(combineLatest([
|
|
12
|
+
spotLight.$,
|
|
13
|
+
instance.select('width').pipe(startWith(width)),
|
|
14
|
+
instance.select('height').pipe(startWith(height)),
|
|
15
|
+
]), ([light, width, height]) => {
|
|
16
|
+
if (isSpotLight(light)) {
|
|
17
|
+
console.log('[NGTS] SpotLight instance -->', light);
|
|
18
|
+
light.shadow.mapSize.set(width, height);
|
|
19
|
+
light.shadow.needsUpdate = true;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
throw new Error('<ngts-spot-light-shadow> must be a child of a <ngts-spot-light>');
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
injectBeforeRender(() => {
|
|
27
|
+
if (!spotLight.nativeElement)
|
|
28
|
+
return;
|
|
29
|
+
const A = spotLight.nativeElement.position;
|
|
30
|
+
const B = spotLight.nativeElement.target.position;
|
|
31
|
+
dir.copy(B).sub(A);
|
|
32
|
+
const len = dir.length();
|
|
33
|
+
dir.normalize().multiplyScalar(len * distance);
|
|
34
|
+
pos.copy(A).add(dir);
|
|
35
|
+
mesh.nativeElement.position.copy(pos);
|
|
36
|
+
mesh.nativeElement.lookAt(spotLight.nativeElement.target.position);
|
|
37
|
+
});
|
|
38
|
+
return commonEffect;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvc3RhZ2luZy9zcmMvbGliL3Nwb3QtbGlnaHQvY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBOEIsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFL0IsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUE0QixFQUE0QixFQUFFO0lBQzNFLE9BQVEsS0FBeUIsRUFBRSxXQUFXLENBQUM7QUFDbkQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLHNCQUFzQixDQUNsQyxTQUEwQyxFQUMxQyxJQUFnQyxFQUNoQyxLQUFhLEVBQ2IsTUFBYyxFQUNkLFFBQWdCO0lBRWhCLE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2hDLE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBRWhDLE1BQU0sWUFBWSxHQUFHLENBQUMsUUFBb0IsRUFBRSxFQUFFO1FBQzFDLFFBQVEsQ0FBQyxJQUFJLENBQ1QsYUFBYSxDQUFDO1lBQ1YsU0FBUyxDQUFDLENBQUM7WUFDWCxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0MsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3BELENBQUMsRUFDRixDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFO1lBQ3ZCLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNwRCxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUN4QyxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7YUFDbkM7aUJBQU07Z0JBQ0gsTUFBTSxJQUFJLEtBQUssQ0FBQyxpRUFBaUUsQ0FBQyxDQUFDO2FBQ3RGO1FBQ0wsQ0FBQyxDQUNKLENBQUM7SUFDTixDQUFDLENBQUM7SUFFRixrQkFBa0IsQ0FBQyxHQUFHLEVBQUU7UUFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhO1lBQUUsT0FBTztRQUVyQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQztRQUMzQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFFbEQsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkIsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3pCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXJCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2RSxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sWUFBWSxDQUFDO0FBQ3hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3RCZWZvcmVSZW5kZXIsIE5ndEluamVjdGVkUmVmLCBOZ3RSeFN0b3JlIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBzdGFydFdpdGggfSBmcm9tICdyeGpzJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcblxuY29uc3QgaXNTcG90TGlnaHQgPSAoY2hpbGQ6IFRIUkVFLk9iamVjdDNEIHwgbnVsbCk6IGNoaWxkIGlzIFRIUkVFLlNwb3RMaWdodCA9PiB7XG4gICAgcmV0dXJuIChjaGlsZCBhcyBUSFJFRS5TcG90TGlnaHQpPy5pc1Nwb3RMaWdodDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RTaGFkb3dNZXNoQ29tbW9uKFxuICAgIHNwb3RMaWdodDogTmd0SW5qZWN0ZWRSZWY8VEhSRUUuU3BvdExpZ2h0PixcbiAgICBtZXNoOiBOZ3RJbmplY3RlZFJlZjxUSFJFRS5NZXNoPixcbiAgICB3aWR0aDogbnVtYmVyLFxuICAgIGhlaWdodDogbnVtYmVyLFxuICAgIGRpc3RhbmNlOiBudW1iZXJcbikge1xuICAgIGNvbnN0IHBvcyA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG4gICAgY29uc3QgZGlyID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcblxuICAgIGNvbnN0IGNvbW1vbkVmZmVjdCA9IChpbnN0YW5jZTogTmd0UnhTdG9yZSkgPT4ge1xuICAgICAgICBpbnN0YW5jZS5ob2xkKFxuICAgICAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICAgICAgc3BvdExpZ2h0LiQsXG4gICAgICAgICAgICAgICAgaW5zdGFuY2Uuc2VsZWN0KCd3aWR0aCcpLnBpcGUoc3RhcnRXaXRoKHdpZHRoKSksXG4gICAgICAgICAgICAgICAgaW5zdGFuY2Uuc2VsZWN0KCdoZWlnaHQnKS5waXBlKHN0YXJ0V2l0aChoZWlnaHQpKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgKFtsaWdodCwgd2lkdGgsIGhlaWdodF0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXNTcG90TGlnaHQobGlnaHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdbTkdUU10gU3BvdExpZ2h0IGluc3RhbmNlIC0tPicsIGxpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgbGlnaHQuc2hhZG93Lm1hcFNpemUuc2V0KHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICAgICAgICAgICAgICBsaWdodC5zaGFkb3cubmVlZHNVcGRhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignPG5ndHMtc3BvdC1saWdodC1zaGFkb3c+IG11c3QgYmUgYSBjaGlsZCBvZiBhIDxuZ3RzLXNwb3QtbGlnaHQ+Jyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH07XG5cbiAgICBpbmplY3RCZWZvcmVSZW5kZXIoKCkgPT4ge1xuICAgICAgICBpZiAoIXNwb3RMaWdodC5uYXRpdmVFbGVtZW50KSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgQSA9IHNwb3RMaWdodC5uYXRpdmVFbGVtZW50LnBvc2l0aW9uO1xuICAgICAgICBjb25zdCBCID0gc3BvdExpZ2h0Lm5hdGl2ZUVsZW1lbnQudGFyZ2V0LnBvc2l0aW9uO1xuXG4gICAgICAgIGRpci5jb3B5KEIpLnN1YihBKTtcbiAgICAgICAgY29uc3QgbGVuID0gZGlyLmxlbmd0aCgpO1xuICAgICAgICBkaXIubm9ybWFsaXplKCkubXVsdGlwbHlTY2FsYXIobGVuICogZGlzdGFuY2UpO1xuICAgICAgICBwb3MuY29weShBKS5hZGQoZGlyKTtcblxuICAgICAgICBtZXNoLm5hdGl2ZUVsZW1lbnQucG9zaXRpb24uY29weShwb3MpO1xuICAgICAgICBtZXNoLm5hdGl2ZUVsZW1lbnQubG9va0F0KHNwb3RMaWdodC5uYXRpdmVFbGVtZW50LnRhcmdldC5wb3NpdGlvbik7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY29tbW9uRWZmZWN0O1xufVxuIl19
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { ChangeDetectorRef, Directive, inject, Input } from '@angular/core';
|
|
2
|
+
import { NgtRxStore } from 'angular-three';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class NgtsSpotLightShadowMeshInput extends NgtRxStore {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(...arguments);
|
|
7
|
+
this.cdr = inject(ChangeDetectorRef);
|
|
8
|
+
}
|
|
9
|
+
set distance(distance) {
|
|
10
|
+
this.set({ distance });
|
|
11
|
+
}
|
|
12
|
+
set alphaTest(alphaTest) {
|
|
13
|
+
this.set({ alphaTest });
|
|
14
|
+
}
|
|
15
|
+
set scale(scale) {
|
|
16
|
+
this.set({ scale });
|
|
17
|
+
}
|
|
18
|
+
set map(map) {
|
|
19
|
+
this.set({ map });
|
|
20
|
+
}
|
|
21
|
+
set shader(shader) {
|
|
22
|
+
this.set({ shader });
|
|
23
|
+
this.cdr.detectChanges();
|
|
24
|
+
}
|
|
25
|
+
set width(width) {
|
|
26
|
+
this.set({ width });
|
|
27
|
+
}
|
|
28
|
+
set height(height) {
|
|
29
|
+
this.set({ height });
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
NgtsSpotLightShadowMeshInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsSpotLightShadowMeshInput, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
33
|
+
NgtsSpotLightShadowMeshInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.4", type: NgtsSpotLightShadowMeshInput, inputs: { distance: "distance", alphaTest: "alphaTest", scale: "scale", map: "map", shader: "shader", width: "width", height: "height" }, usesInheritance: true, ngImport: i0 });
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsSpotLightShadowMeshInput, decorators: [{
|
|
35
|
+
type: Directive
|
|
36
|
+
}], propDecorators: { distance: [{
|
|
37
|
+
type: Input
|
|
38
|
+
}], alphaTest: [{
|
|
39
|
+
type: Input
|
|
40
|
+
}], scale: [{
|
|
41
|
+
type: Input
|
|
42
|
+
}], map: [{
|
|
43
|
+
type: Input
|
|
44
|
+
}], shader: [{
|
|
45
|
+
type: Input
|
|
46
|
+
}], width: [{
|
|
47
|
+
type: Input
|
|
48
|
+
}], height: [{
|
|
49
|
+
type: Input
|
|
50
|
+
}] } });
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhZG93LW1lc2gtaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9zdGFnaW5nL3NyYy9saWIvc3BvdC1saWdodC9zaGFkb3ctbWVzaC1pbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0MsTUFBTSxPQUFnQiw0QkFBNkIsU0FBUSxVQUFVO0lBRHJFOztRQUVxQixRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7S0E4QnBEO0lBNUJHLElBQWEsUUFBUSxDQUFDLFFBQWdCO1FBQ2xDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFhLFNBQVMsQ0FBQyxTQUFpQjtRQUNwQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBYSxLQUFLLENBQUMsS0FBYTtRQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBYSxHQUFHLENBQUMsR0FBa0I7UUFDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQWEsTUFBTSxDQUFDLE1BQWM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBYSxLQUFLLENBQUMsS0FBYTtRQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBYSxNQUFNLENBQUMsTUFBYztRQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN6QixDQUFDOzt5SEE5QmlCLDRCQUE0Qjs2R0FBNUIsNEJBQTRCOzJGQUE1Qiw0QkFBNEI7a0JBRGpELFNBQVM7OEJBSU8sUUFBUTtzQkFBcEIsS0FBSztnQkFJTyxTQUFTO3NCQUFyQixLQUFLO2dCQUlPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBSU8sR0FBRztzQkFBZixLQUFLO2dCQUlPLE1BQU07c0JBQWxCLEtBQUs7Z0JBS08sS0FBSztzQkFBakIsS0FBSztnQkFJTyxNQUFNO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgaW5qZWN0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0UnhTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOZ3RzU3BvdExpZ2h0U2hhZG93TWVzaElucHV0IGV4dGVuZHMgTmd0UnhTdG9yZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gICAgQElucHV0KCkgc2V0IGRpc3RhbmNlKGRpc3RhbmNlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBkaXN0YW5jZSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgYWxwaGFUZXN0KGFscGhhVGVzdDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgYWxwaGFUZXN0IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBzY2FsZShzY2FsZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgc2NhbGUgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IG1hcChtYXA6IFRIUkVFLlRleHR1cmUpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBtYXAgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHNoYWRlcihzaGFkZXI6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNldCh7IHNoYWRlciB9KTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCB3aWR0aCh3aWR0aDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgd2lkdGggfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGhlaWdodChoZWlnaHQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGhlaWdodCB9KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Directive, Input } from '@angular/core';
|
|
2
|
+
import { NgtRxStore } from 'angular-three';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class NgtsSpotLightInput extends NgtRxStore {
|
|
5
|
+
set depthBuffer(depthBuffer) {
|
|
6
|
+
this.set({ depthBuffer });
|
|
7
|
+
}
|
|
8
|
+
set angle(angle) {
|
|
9
|
+
this.set({ angle });
|
|
10
|
+
}
|
|
11
|
+
set distance(distance) {
|
|
12
|
+
this.set({ distance });
|
|
13
|
+
}
|
|
14
|
+
set attenuation(attenuation) {
|
|
15
|
+
this.set({ attenuation });
|
|
16
|
+
}
|
|
17
|
+
set anglePower(anglePower) {
|
|
18
|
+
this.set({ anglePower });
|
|
19
|
+
}
|
|
20
|
+
set radiusTop(radiusTop) {
|
|
21
|
+
this.set({ radiusTop });
|
|
22
|
+
}
|
|
23
|
+
set radiusBottom(radiusBottom) {
|
|
24
|
+
this.set({ radiusBottom });
|
|
25
|
+
}
|
|
26
|
+
set opacity(opacity) {
|
|
27
|
+
this.set({ opacity });
|
|
28
|
+
}
|
|
29
|
+
set color(color) {
|
|
30
|
+
this.set({ color });
|
|
31
|
+
}
|
|
32
|
+
set debug(debug) {
|
|
33
|
+
this.set({ debug });
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
NgtsSpotLightInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsSpotLightInput, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
37
|
+
NgtsSpotLightInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.4", type: NgtsSpotLightInput, inputs: { depthBuffer: "depthBuffer", angle: "angle", distance: "distance", attenuation: "attenuation", anglePower: "anglePower", radiusTop: "radiusTop", radiusBottom: "radiusBottom", opacity: "opacity", color: "color", debug: "debug" }, usesInheritance: true, ngImport: i0 });
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsSpotLightInput, decorators: [{
|
|
39
|
+
type: Directive
|
|
40
|
+
}], propDecorators: { depthBuffer: [{
|
|
41
|
+
type: Input
|
|
42
|
+
}], angle: [{
|
|
43
|
+
type: Input
|
|
44
|
+
}], distance: [{
|
|
45
|
+
type: Input
|
|
46
|
+
}], attenuation: [{
|
|
47
|
+
type: Input
|
|
48
|
+
}], anglePower: [{
|
|
49
|
+
type: Input
|
|
50
|
+
}], radiusTop: [{
|
|
51
|
+
type: Input
|
|
52
|
+
}], radiusBottom: [{
|
|
53
|
+
type: Input
|
|
54
|
+
}], opacity: [{
|
|
55
|
+
type: Input
|
|
56
|
+
}], color: [{
|
|
57
|
+
type: Input
|
|
58
|
+
}], debug: [{
|
|
59
|
+
type: Input
|
|
60
|
+
}] } });
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BvdC1saWdodC1pbnB1dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci10aHJlZS1zb2JhL3N0YWdpbmcvc3JjL2xpYi9zcG90LWxpZ2h0L3Nwb3QtbGlnaHQtaW5wdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0MsTUFBTSxPQUFnQixrQkFBbUIsU0FBUSxVQUFVO0lBQ3ZELElBQWEsV0FBVyxDQUFDLFdBQStCO1FBQ3BELElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFhLEtBQUssQ0FBQyxLQUFhO1FBQzVCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFhLFFBQVEsQ0FBQyxRQUFnQjtRQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBYSxXQUFXLENBQUMsV0FBbUI7UUFDeEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQWEsVUFBVSxDQUFDLFVBQWtCO1FBQ3RDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFhLFNBQVMsQ0FBQyxTQUFpQjtRQUNwQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBYSxZQUFZLENBQUMsWUFBb0I7UUFDMUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQWEsT0FBTyxDQUFDLE9BQWU7UUFDaEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQWEsS0FBSyxDQUFDLEtBQXNCO1FBQ3JDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFhLEtBQUssQ0FBQyxLQUFjO1FBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7OytHQXZDaUIsa0JBQWtCO21HQUFsQixrQkFBa0I7MkZBQWxCLGtCQUFrQjtrQkFEdkMsU0FBUzs4QkFFTyxXQUFXO3NCQUF2QixLQUFLO2dCQUlPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBSU8sUUFBUTtzQkFBcEIsS0FBSztnQkFJTyxXQUFXO3NCQUF2QixLQUFLO2dCQUlPLFVBQVU7c0JBQXRCLEtBQUs7Z0JBSU8sU0FBUztzQkFBckIsS0FBSztnQkFJTyxZQUFZO3NCQUF4QixLQUFLO2dCQUlPLE9BQU87c0JBQW5CLEtBQUs7Z0JBSU8sS0FBSztzQkFBakIsS0FBSztnQkFJTyxLQUFLO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0UnhTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOZ3RzU3BvdExpZ2h0SW5wdXQgZXh0ZW5kcyBOZ3RSeFN0b3JlIHtcbiAgICBASW5wdXQoKSBzZXQgZGVwdGhCdWZmZXIoZGVwdGhCdWZmZXI6IFRIUkVFLkRlcHRoVGV4dHVyZSkge1xuICAgICAgICB0aGlzLnNldCh7IGRlcHRoQnVmZmVyIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBhbmdsZShhbmdsZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgYW5nbGUgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGRpc3RhbmNlKGRpc3RhbmNlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBkaXN0YW5jZSB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgYXR0ZW51YXRpb24oYXR0ZW51YXRpb246IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGF0dGVudWF0aW9uIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBhbmdsZVBvd2VyKGFuZ2xlUG93ZXI6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IGFuZ2xlUG93ZXIgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IHJhZGl1c1RvcChyYWRpdXNUb3A6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IHJhZGl1c1RvcCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgcmFkaXVzQm90dG9tKHJhZGl1c0JvdHRvbTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgcmFkaXVzQm90dG9tIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBvcGFjaXR5KG9wYWNpdHk6IG51bWJlcikge1xuICAgICAgICB0aGlzLnNldCh7IG9wYWNpdHkgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGNvbG9yKGNvbG9yOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBjb2xvciB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZGVidWcoZGVidWc6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoeyBkZWJ1ZyB9KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { NgIf } from '@angular/common';
|
|
2
|
+
import { Component, CUSTOM_ELEMENTS_SCHEMA, inject } from '@angular/core';
|
|
3
|
+
import { createRunInContext, extend, injectNgtRef } from 'angular-three';
|
|
4
|
+
import * as THREE from 'three';
|
|
5
|
+
import { Mesh, MeshBasicMaterial, PlaneGeometry } from 'three';
|
|
6
|
+
import { injectShadowMeshCommon } from './common';
|
|
7
|
+
import { NgtsSpotLightShadowMeshInput } from './shadow-mesh-input';
|
|
8
|
+
import { NGTS_SPOT_LIGHT_API } from './spot-light';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
extend({ Mesh, PlaneGeometry, MeshBasicMaterial });
|
|
11
|
+
export class NgtsSpotLightShadowNoShader extends NgtsSpotLightShadowMeshInput {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments);
|
|
14
|
+
this.mesh = injectNgtRef();
|
|
15
|
+
this.spotLightApi = inject(NGTS_SPOT_LIGHT_API);
|
|
16
|
+
this.DoubleSide = THREE.DoubleSide;
|
|
17
|
+
this.RepeatWrapping = THREE.RepeatWrapping;
|
|
18
|
+
this.runInContext = createRunInContext();
|
|
19
|
+
}
|
|
20
|
+
initialize() {
|
|
21
|
+
super.initialize();
|
|
22
|
+
this.set({ distance: 0.4, alphaTest: 0.5, width: 512, height: 512 });
|
|
23
|
+
}
|
|
24
|
+
ngOnInit() {
|
|
25
|
+
const commonEffect = this.runInContext(() => {
|
|
26
|
+
return injectShadowMeshCommon(this.spotLightApi.spotLight, this.mesh, this.get('width'), this.get('height'), this.get('distance'));
|
|
27
|
+
});
|
|
28
|
+
commonEffect(this);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
NgtsSpotLightShadowNoShader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsSpotLightShadowNoShader, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
32
|
+
NgtsSpotLightShadowNoShader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: NgtsSpotLightShadowNoShader, isStandalone: true, selector: "ngts-spot-light-shadow-no-shader", usesInheritance: true, ngImport: i0, template: `
|
|
33
|
+
<ngt-mesh [ref]="mesh" [scale]="get('scale')" [castShadow]="true">
|
|
34
|
+
<ngt-plane-geometry />
|
|
35
|
+
<ngt-mesh-basic-material
|
|
36
|
+
*ngIf="!!get('map')"
|
|
37
|
+
[transparent]="true"
|
|
38
|
+
[side]="DoubleSide"
|
|
39
|
+
[alphaTest]="get('alphaTest')"
|
|
40
|
+
[alphaMap]="get('map')"
|
|
41
|
+
[opacity]="spotLightApi.debug ? 1 : 0"
|
|
42
|
+
>
|
|
43
|
+
<ngt-value [rawValue]="RepeatWrapping" attach="alphaMap.wrapS" />
|
|
44
|
+
<ngt-value [rawValue]="RepeatWrapping" attach="alphaMap.wrapT" />
|
|
45
|
+
<ng-content />
|
|
46
|
+
</ngt-mesh-basic-material>
|
|
47
|
+
</ngt-mesh>
|
|
48
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtsSpotLightShadowNoShader, decorators: [{
|
|
50
|
+
type: Component,
|
|
51
|
+
args: [{
|
|
52
|
+
selector: 'ngts-spot-light-shadow-no-shader',
|
|
53
|
+
standalone: true,
|
|
54
|
+
template: `
|
|
55
|
+
<ngt-mesh [ref]="mesh" [scale]="get('scale')" [castShadow]="true">
|
|
56
|
+
<ngt-plane-geometry />
|
|
57
|
+
<ngt-mesh-basic-material
|
|
58
|
+
*ngIf="!!get('map')"
|
|
59
|
+
[transparent]="true"
|
|
60
|
+
[side]="DoubleSide"
|
|
61
|
+
[alphaTest]="get('alphaTest')"
|
|
62
|
+
[alphaMap]="get('map')"
|
|
63
|
+
[opacity]="spotLightApi.debug ? 1 : 0"
|
|
64
|
+
>
|
|
65
|
+
<ngt-value [rawValue]="RepeatWrapping" attach="alphaMap.wrapS" />
|
|
66
|
+
<ngt-value [rawValue]="RepeatWrapping" attach="alphaMap.wrapT" />
|
|
67
|
+
<ng-content />
|
|
68
|
+
</ngt-mesh-basic-material>
|
|
69
|
+
</ngt-mesh>
|
|
70
|
+
`,
|
|
71
|
+
imports: [NgIf],
|
|
72
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
73
|
+
}]
|
|
74
|
+
}] });
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BvdC1saWdodC1zaGFkb3ctbm8tc2hhZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvc3RhZ2luZy9zcmMvbGliL3Nwb3QtbGlnaHQvc3BvdC1saWdodC1zaGFkb3ctbm8tc2hhZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMvRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUVuRCxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FBQztBQXlCbkQsTUFBTSxPQUFPLDJCQUE0QixTQUFRLDRCQUE0QjtJQXZCN0U7O1FBd0JhLFNBQUksR0FBRyxZQUFZLEVBQWMsQ0FBQztRQUNsQyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRTNDLGVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQzlCLG1CQUFjLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQztRQUV0QyxpQkFBWSxHQUFHLGtCQUFrQixFQUFFLENBQUM7S0FtQmhEO0lBakJZLFVBQVU7UUFDZixLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxRQUFRO1FBQ0osTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUU7WUFDeEMsT0FBTyxzQkFBc0IsQ0FDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQzNCLElBQUksQ0FBQyxJQUFJLEVBQ1QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFDakIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFDbEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FDdkIsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO1FBQ0gsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7O3dIQXpCUSwyQkFBMkI7NEdBQTNCLDJCQUEyQixtSEFwQjFCOzs7Ozs7Ozs7Ozs7Ozs7O0tBZ0JULDREQUNTLElBQUk7MkZBR0wsMkJBQTJCO2tCQXZCdkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsa0NBQWtDO29CQUM1QyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7O0tBZ0JUO29CQUNELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQztvQkFDZixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDcEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgaW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNyZWF0ZVJ1bkluQ29udGV4dCwgZXh0ZW5kLCBpbmplY3ROZ3RSZWYgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE1lc2gsIE1lc2hCYXNpY01hdGVyaWFsLCBQbGFuZUdlb21ldHJ5IH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgaW5qZWN0U2hhZG93TWVzaENvbW1vbiB9IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCB7IE5ndHNTcG90TGlnaHRTaGFkb3dNZXNoSW5wdXQgfSBmcm9tICcuL3NoYWRvdy1tZXNoLWlucHV0JztcbmltcG9ydCB7IE5HVFNfU1BPVF9MSUdIVF9BUEkgfSBmcm9tICcuL3Nwb3QtbGlnaHQnO1xuXG5leHRlbmQoeyBNZXNoLCBQbGFuZUdlb21ldHJ5LCBNZXNoQmFzaWNNYXRlcmlhbCB9KTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3RzLXNwb3QtbGlnaHQtc2hhZG93LW5vLXNoYWRlcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmd0LW1lc2ggW3JlZl09XCJtZXNoXCIgW3NjYWxlXT1cImdldCgnc2NhbGUnKVwiIFtjYXN0U2hhZG93XT1cInRydWVcIj5cbiAgICAgICAgICAgIDxuZ3QtcGxhbmUtZ2VvbWV0cnkgLz5cbiAgICAgICAgICAgIDxuZ3QtbWVzaC1iYXNpYy1tYXRlcmlhbFxuICAgICAgICAgICAgICAgICpuZ0lmPVwiISFnZXQoJ21hcCcpXCJcbiAgICAgICAgICAgICAgICBbdHJhbnNwYXJlbnRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW3NpZGVdPVwiRG91YmxlU2lkZVwiXG4gICAgICAgICAgICAgICAgW2FscGhhVGVzdF09XCJnZXQoJ2FscGhhVGVzdCcpXCJcbiAgICAgICAgICAgICAgICBbYWxwaGFNYXBdPVwiZ2V0KCdtYXAnKVwiXG4gICAgICAgICAgICAgICAgW29wYWNpdHldPVwic3BvdExpZ2h0QXBpLmRlYnVnID8gMSA6IDBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZ3QtdmFsdWUgW3Jhd1ZhbHVlXT1cIlJlcGVhdFdyYXBwaW5nXCIgYXR0YWNoPVwiYWxwaGFNYXAud3JhcFNcIiAvPlxuICAgICAgICAgICAgICAgIDxuZ3QtdmFsdWUgW3Jhd1ZhbHVlXT1cIlJlcGVhdFdyYXBwaW5nXCIgYXR0YWNoPVwiYWxwaGFNYXAud3JhcFRcIiAvPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgICAgICAgICA8L25ndC1tZXNoLWJhc2ljLW1hdGVyaWFsPlxuICAgICAgICA8L25ndC1tZXNoPlxuICAgIGAsXG4gICAgaW1wb3J0czogW05nSWZdLFxuICAgIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c1Nwb3RMaWdodFNoYWRvd05vU2hhZGVyIGV4dGVuZHMgTmd0c1Nwb3RMaWdodFNoYWRvd01lc2hJbnB1dCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcmVhZG9ubHkgbWVzaCA9IGluamVjdE5ndFJlZjxUSFJFRS5NZXNoPigpO1xuICAgIHJlYWRvbmx5IHNwb3RMaWdodEFwaSA9IGluamVjdChOR1RTX1NQT1RfTElHSFRfQVBJKTtcblxuICAgIHJlYWRvbmx5IERvdWJsZVNpZGUgPSBUSFJFRS5Eb3VibGVTaWRlO1xuICAgIHJlYWRvbmx5IFJlcGVhdFdyYXBwaW5nID0gVEhSRUUuUmVwZWF0V3JhcHBpbmc7XG5cbiAgICByZWFkb25seSBydW5JbkNvbnRleHQgPSBjcmVhdGVSdW5JbkNvbnRleHQoKTtcblxuICAgIG92ZXJyaWRlIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLmluaXRpYWxpemUoKTtcbiAgICAgICAgdGhpcy5zZXQoeyBkaXN0YW5jZTogMC40LCBhbHBoYVRlc3Q6IDAuNSwgd2lkdGg6IDUxMiwgaGVpZ2h0OiA1MTIgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGNvbnN0IGNvbW1vbkVmZmVjdCA9IHRoaXMucnVuSW5Db250ZXh0KCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBpbmplY3RTaGFkb3dNZXNoQ29tbW9uKFxuICAgICAgICAgICAgICAgIHRoaXMuc3BvdExpZ2h0QXBpLnNwb3RMaWdodCxcbiAgICAgICAgICAgICAgICB0aGlzLm1lc2gsXG4gICAgICAgICAgICAgICAgdGhpcy5nZXQoJ3dpZHRoJyksXG4gICAgICAgICAgICAgICAgdGhpcy5nZXQoJ2hlaWdodCcpLFxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0KCdkaXN0YW5jZScpXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgICAgY29tbW9uRWZmZWN0KHRoaXMpO1xuICAgIH1cbn1cbiJdfQ==
|