three-stdlib 2.35.4 → 2.35.6
Sign up to get free protection for your applications and to get access to all the features.
- package/exporters/DRACOExporter.cjs +3 -3
- package/exporters/DRACOExporter.cjs.map +1 -1
- package/exporters/DRACOExporter.d.ts +36 -25
- package/exporters/DRACOExporter.js +3 -3
- package/exporters/DRACOExporter.js.map +1 -1
- package/objects/Sky.cjs.map +1 -1
- package/objects/Sky.d.ts +18 -137
- package/objects/Sky.js.map +1 -1
- package/package.json +1 -1
- package/webxr/ARButton.cjs +106 -109
- package/webxr/ARButton.cjs.map +1 -1
- package/webxr/ARButton.d.ts +0 -1
- package/webxr/ARButton.js +106 -109
- package/webxr/ARButton.js.map +1 -1
- package/webxr/VRButton.cjs +4 -4
- package/webxr/VRButton.cjs.map +1 -1
- package/webxr/VRButton.d.ts +11 -9
- package/webxr/VRButton.js +4 -4
- package/webxr/VRButton.js.map +1 -1
@@ -8,11 +8,11 @@ var __publicField = (obj, key, value) => {
|
|
8
8
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
9
9
|
const THREE = require("three");
|
10
10
|
const DRACOExporter = /* @__PURE__ */ (() => {
|
11
|
-
const
|
11
|
+
const _DRACOExporter = class {
|
12
12
|
parse(object, options = {
|
13
13
|
decodeSpeed: 5,
|
14
14
|
encodeSpeed: 5,
|
15
|
-
encoderMethod:
|
15
|
+
encoderMethod: _DRACOExporter.MESH_EDGEBREAKER_ENCODING,
|
16
16
|
quantization: [16, 8, 8, 8, 8],
|
17
17
|
exportUvs: true,
|
18
18
|
exportNormals: true,
|
@@ -133,7 +133,7 @@ const DRACOExporter = /* @__PURE__ */ (() => {
|
|
133
133
|
return outputData;
|
134
134
|
}
|
135
135
|
};
|
136
|
-
let DRACOExporter2 =
|
136
|
+
let DRACOExporter2 = _DRACOExporter;
|
137
137
|
// Encoder methods
|
138
138
|
__publicField(DRACOExporter2, "MESH_EDGEBREAKER_ENCODING", 1);
|
139
139
|
__publicField(DRACOExporter2, "MESH_SEQUENTIAL_ENCODING", 0);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"DRACOExporter.cjs","sources":["../../src/exporters/DRACOExporter.ts"],"sourcesContent":["import type { EncoderModule } from 'draco3d'\nimport { BufferGeometry, Mesh, Points } from 'three'\n\n/**\n * Export draco compressed files from threejs geometry objects.\n *\n * Draco files are compressed and usually are smaller than conventional 3D file formats.\n *\n * The exporter receives a options object containing\n * - decodeSpeed, indicates how to tune the encoder regarding decode speed (0 gives better speed but worst quality)\n * - encodeSpeed, indicates how to tune the encoder parameters (0 gives better speed but worst quality)\n * - encoderMethod\n * - quantization, indicates the presision of each type of data stored in the draco file in the order (POSITION, NORMAL, COLOR, TEX_COORD, GENERIC)\n * - exportUvs\n * - exportNormals\n */\n\ndeclare const DracoEncoderModule: () => EncoderModule\n\nconst DRACOExporter = /* @__PURE__ */ (() => {\n class DRACOExporter {\n // Encoder methods\n\n public static MESH_EDGEBREAKER_ENCODING = 1\n public static MESH_SEQUENTIAL_ENCODING = 0\n\n // Geometry type\n\n public static POINT_CLOUD = 0\n public static TRIANGULAR_MESH = 1\n\n // Attribute type\n public static INVALID = -1\n public static POSITION = 0\n public static NORMAL = 1\n public static COLOR = 2\n public static TEX_COORD = 3\n public static GENERIC = 4\n\n public parse(\n object: Mesh | Points,\n options = {\n decodeSpeed: 5,\n encodeSpeed: 5,\n encoderMethod: DRACOExporter.MESH_EDGEBREAKER_ENCODING,\n quantization: [16, 8, 8, 8, 8],\n exportUvs: true,\n exportNormals: true,\n exportColor: false,\n },\n ): Int8Array {\n if (object instanceof BufferGeometry && object.isBufferGeometry) {\n throw new Error('DRACOExporter: The first parameter of parse() is now an instance of Mesh or Points.')\n }\n\n if (DracoEncoderModule === undefined) {\n throw new Error('THREE.DRACOExporter: required the draco_encoder to work.')\n }\n\n const geometry = object.geometry\n\n const dracoEncoder = DracoEncoderModule()\n const encoder = new dracoEncoder.Encoder()\n let builder\n let dracoObject\n\n if (!geometry.isBufferGeometry) {\n throw new Error(\n 'THREE.DRACOExporter.parse(geometry, options): geometry is not a THREE.BufferGeometry instance.',\n )\n }\n\n if (object instanceof Mesh && object.isMesh) {\n builder = new dracoEncoder.MeshBuilder()\n dracoObject = new dracoEncoder.Mesh()\n\n const vertices = geometry.getAttribute('position')\n // @ts-ignore\n builder.AddFloatAttributeToMesh(\n dracoObject,\n dracoEncoder.POSITION,\n vertices.count,\n vertices.itemSize,\n vertices.array,\n )\n\n const faces = geometry.getIndex()\n\n if (faces !== null) {\n builder.AddFacesToMesh(dracoObject, faces.count / 3, faces.array as Uint16Array | Uint32Array)\n } else {\n const faces = new (vertices.count > 65535 ? Uint32Array : Uint16Array)(vertices.count)\n\n for (let i = 0; i < faces.length; i++) {\n faces[i] = i\n }\n\n builder.AddFacesToMesh(dracoObject, vertices.count, faces)\n }\n\n if (options.exportNormals) {\n const normals = geometry.getAttribute('normal')\n\n if (normals !== undefined) {\n // @ts-ignore\n builder.AddFloatAttributeToMesh(\n dracoObject,\n dracoEncoder.NORMAL,\n normals.count,\n normals.itemSize,\n normals.array,\n )\n }\n }\n\n if (options.exportUvs) {\n const uvs = geometry.getAttribute('uv')\n\n if (uvs !== undefined) {\n // @ts-ignore\n builder.AddFloatAttributeToMesh(dracoObject, dracoEncoder.TEX_COORD, uvs.count, uvs.itemSize, uvs.array)\n }\n }\n\n if (options.exportColor) {\n const colors = geometry.getAttribute('color')\n\n if (colors !== undefined) {\n // @ts-ignore\n builder.AddFloatAttributeToMesh(\n dracoObject,\n dracoEncoder.COLOR,\n colors.count,\n colors.itemSize,\n colors.array,\n )\n }\n }\n } else if (object instanceof Points && object.isPoints) {\n // @ts-ignore\n builder = new dracoEncoder.PointCloudBuilder()\n // @ts-ignore\n dracoObject = new dracoEncoder.PointCloud()\n\n const vertices = geometry.getAttribute('position')\n builder.AddFloatAttribute(dracoObject, dracoEncoder.POSITION, vertices.count, vertices.itemSize, vertices.array)\n\n if (options.exportColor) {\n const colors = geometry.getAttribute('color')\n\n if (colors !== undefined) {\n builder.AddFloatAttribute(dracoObject, dracoEncoder.COLOR, colors.count, colors.itemSize, colors.array)\n }\n }\n } else {\n throw new Error('DRACOExporter: Unsupported object type.')\n }\n\n //Compress using draco encoder\n\n const encodedData = new dracoEncoder.DracoInt8Array()\n\n //Sets the desired encoding and decoding speed for the given options from 0 (slowest speed, but the best compression) to 10 (fastest, but the worst compression).\n\n const encodeSpeed = options.encodeSpeed !== undefined ? options.encodeSpeed : 5\n const decodeSpeed = options.decodeSpeed !== undefined ? options.decodeSpeed : 5\n\n encoder.SetSpeedOptions(encodeSpeed, decodeSpeed)\n\n // Sets the desired encoding method for a given geometry.\n\n if (options.encoderMethod !== undefined) {\n encoder.SetEncodingMethod(options.encoderMethod)\n }\n\n // Sets the quantization (number of bits used to represent) compression options for a named attribute.\n // The attribute values will be quantized in a box defined by the maximum extent of the attribute values.\n if (options.quantization !== undefined) {\n for (let i = 0; i < 5; i++) {\n if (options.quantization[i] !== undefined) {\n encoder.SetAttributeQuantization(i, options.quantization[i])\n }\n }\n }\n\n let length\n\n if (object instanceof Mesh && object.isMesh) {\n length = encoder.EncodeMeshToDracoBuffer(dracoObject, encodedData)\n } else {\n // @ts-ignore\n length = encoder.EncodePointCloudToDracoBuffer(dracoObject, true, encodedData)\n }\n\n dracoEncoder.destroy(dracoObject)\n\n if (length === 0) {\n throw new Error('THREE.DRACOExporter: Draco encoding failed.')\n }\n\n //Copy encoded data to buffer.\n const outputData = new Int8Array(new ArrayBuffer(length))\n\n for (let i = 0; i < length; i++) {\n outputData[i] = encodedData.GetValue(i)\n }\n\n dracoEncoder.destroy(encodedData)\n dracoEncoder.destroy(encoder)\n dracoEncoder.destroy(builder)\n\n return outputData\n }\n }\n\n return DRACOExporter\n})()\n\nexport { DRACOExporter }\n"],"names":["DRACOExporter","BufferGeometry","Mesh","faces","Points"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"DRACOExporter.cjs","sources":["../../src/exporters/DRACOExporter.js"],"sourcesContent":["import { BufferGeometry, Mesh, Points } from 'three'\n\n/**\n * Export draco compressed files from threejs geometry objects.\n *\n * Draco files are compressed and usually are smaller than conventional 3D file formats.\n *\n * The exporter receives a options object containing\n * - decodeSpeed, indicates how to tune the encoder regarding decode speed (0 gives better speed but worst quality)\n * - encodeSpeed, indicates how to tune the encoder parameters (0 gives better speed but worst quality)\n * - encoderMethod\n * - quantization, indicates the presision of each type of data stored in the draco file in the order (POSITION, NORMAL, COLOR, TEX_COORD, GENERIC)\n * - exportUvs\n * - exportNormals\n */\n\nconst DRACOExporter = /* @__PURE__ */ (() => {\n class DRACOExporter {\n // Encoder methods\n\n static MESH_EDGEBREAKER_ENCODING = 1\n static MESH_SEQUENTIAL_ENCODING = 0\n\n // Geometry type\n\n static POINT_CLOUD = 0\n static TRIANGULAR_MESH = 1\n\n // Attribute type\n static INVALID = -1\n static POSITION = 0\n static NORMAL = 1\n static COLOR = 2\n static TEX_COORD = 3\n static GENERIC = 4\n\n parse(\n object,\n options = {\n decodeSpeed: 5,\n encodeSpeed: 5,\n encoderMethod: DRACOExporter.MESH_EDGEBREAKER_ENCODING,\n quantization: [16, 8, 8, 8, 8],\n exportUvs: true,\n exportNormals: true,\n exportColor: false,\n },\n ) {\n if (object instanceof BufferGeometry && object.isBufferGeometry) {\n throw new Error('DRACOExporter: The first parameter of parse() is now an instance of Mesh or Points.')\n }\n\n if (DracoEncoderModule === undefined) {\n throw new Error('THREE.DRACOExporter: required the draco_encoder to work.')\n }\n\n const geometry = object.geometry\n\n const dracoEncoder = DracoEncoderModule()\n const encoder = new dracoEncoder.Encoder()\n let builder\n let dracoObject\n\n if (!geometry.isBufferGeometry) {\n throw new Error(\n 'THREE.DRACOExporter.parse(geometry, options): geometry is not a THREE.BufferGeometry instance.',\n )\n }\n\n if (object instanceof Mesh && object.isMesh) {\n builder = new dracoEncoder.MeshBuilder()\n dracoObject = new dracoEncoder.Mesh()\n\n const vertices = geometry.getAttribute('position')\n // @ts-ignore\n builder.AddFloatAttributeToMesh(\n dracoObject,\n dracoEncoder.POSITION,\n vertices.count,\n vertices.itemSize,\n vertices.array,\n )\n\n const faces = geometry.getIndex()\n\n if (faces !== null) {\n builder.AddFacesToMesh(dracoObject, faces.count / 3, faces.array)\n } else {\n const faces = new (vertices.count > 65535 ? Uint32Array : Uint16Array)(vertices.count)\n\n for (let i = 0; i < faces.length; i++) {\n faces[i] = i\n }\n\n builder.AddFacesToMesh(dracoObject, vertices.count, faces)\n }\n\n if (options.exportNormals) {\n const normals = geometry.getAttribute('normal')\n\n if (normals !== undefined) {\n // @ts-ignore\n builder.AddFloatAttributeToMesh(\n dracoObject,\n dracoEncoder.NORMAL,\n normals.count,\n normals.itemSize,\n normals.array,\n )\n }\n }\n\n if (options.exportUvs) {\n const uvs = geometry.getAttribute('uv')\n\n if (uvs !== undefined) {\n // @ts-ignore\n builder.AddFloatAttributeToMesh(dracoObject, dracoEncoder.TEX_COORD, uvs.count, uvs.itemSize, uvs.array)\n }\n }\n\n if (options.exportColor) {\n const colors = geometry.getAttribute('color')\n\n if (colors !== undefined) {\n // @ts-ignore\n builder.AddFloatAttributeToMesh(\n dracoObject,\n dracoEncoder.COLOR,\n colors.count,\n colors.itemSize,\n colors.array,\n )\n }\n }\n } else if (object instanceof Points && object.isPoints) {\n // @ts-ignore\n builder = new dracoEncoder.PointCloudBuilder()\n // @ts-ignore\n dracoObject = new dracoEncoder.PointCloud()\n\n const vertices = geometry.getAttribute('position')\n builder.AddFloatAttribute(dracoObject, dracoEncoder.POSITION, vertices.count, vertices.itemSize, vertices.array)\n\n if (options.exportColor) {\n const colors = geometry.getAttribute('color')\n\n if (colors !== undefined) {\n builder.AddFloatAttribute(dracoObject, dracoEncoder.COLOR, colors.count, colors.itemSize, colors.array)\n }\n }\n } else {\n throw new Error('DRACOExporter: Unsupported object type.')\n }\n\n //Compress using draco encoder\n\n const encodedData = new dracoEncoder.DracoInt8Array()\n\n //Sets the desired encoding and decoding speed for the given options from 0 (slowest speed, but the best compression) to 10 (fastest, but the worst compression).\n\n const encodeSpeed = options.encodeSpeed !== undefined ? options.encodeSpeed : 5\n const decodeSpeed = options.decodeSpeed !== undefined ? options.decodeSpeed : 5\n\n encoder.SetSpeedOptions(encodeSpeed, decodeSpeed)\n\n // Sets the desired encoding method for a given geometry.\n\n if (options.encoderMethod !== undefined) {\n encoder.SetEncodingMethod(options.encoderMethod)\n }\n\n // Sets the quantization (number of bits used to represent) compression options for a named attribute.\n // The attribute values will be quantized in a box defined by the maximum extent of the attribute values.\n if (options.quantization !== undefined) {\n for (let i = 0; i < 5; i++) {\n if (options.quantization[i] !== undefined) {\n encoder.SetAttributeQuantization(i, options.quantization[i])\n }\n }\n }\n\n let length\n\n if (object instanceof Mesh && object.isMesh) {\n length = encoder.EncodeMeshToDracoBuffer(dracoObject, encodedData)\n } else {\n // @ts-ignore\n length = encoder.EncodePointCloudToDracoBuffer(dracoObject, true, encodedData)\n }\n\n dracoEncoder.destroy(dracoObject)\n\n if (length === 0) {\n throw new Error('THREE.DRACOExporter: Draco encoding failed.')\n }\n\n //Copy encoded data to buffer.\n const outputData = new Int8Array(new ArrayBuffer(length))\n\n for (let i = 0; i < length; i++) {\n outputData[i] = encodedData.GetValue(i)\n }\n\n dracoEncoder.destroy(encodedData)\n dracoEncoder.destroy(encoder)\n dracoEncoder.destroy(builder)\n\n return outputData\n }\n }\n\n return DRACOExporter\n})()\n\nexport { DRACOExporter }\n"],"names":["BufferGeometry","Mesh","faces","Points","DRACOExporter"],"mappings":"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"}
|
@@ -1,25 +1,36 @@
|
|
1
|
-
import
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
1
|
+
import * as THREE from 'three'
|
2
|
+
|
3
|
+
declare class DRACOExporter {
|
4
|
+
// Encoder methods
|
5
|
+
|
6
|
+
public static MESH_EDGEBREAKER_ENCODING: number
|
7
|
+
public static MESH_SEQUENTIAL_ENCODING: number
|
8
|
+
|
9
|
+
// Geometry type
|
10
|
+
|
11
|
+
public static POINT_CLOUD: number
|
12
|
+
public static TRIANGULAR_MESH: number
|
13
|
+
|
14
|
+
// Attribute type
|
15
|
+
public static INVALID: number
|
16
|
+
public static POSITION: number
|
17
|
+
public static NORMAL: number
|
18
|
+
public static COLOR: number
|
19
|
+
public static TEX_COORD: number
|
20
|
+
public static GENERIC: number
|
21
|
+
|
22
|
+
public parse(
|
23
|
+
object: THREE.Mesh | THREE.Points,
|
24
|
+
options?: {
|
25
|
+
decodeSpeed?: number
|
26
|
+
encodeSpeed?: number
|
27
|
+
encoderMethod?: number
|
28
|
+
quantization?: [number, number, number, number, number]
|
29
|
+
exportUvs?: boolean
|
30
|
+
exportNormals?: boolean
|
31
|
+
exportColor?: boolean
|
32
|
+
},
|
33
|
+
): Int8Array
|
34
|
+
}
|
35
|
+
|
36
|
+
export { DRACOExporter }
|
@@ -6,11 +6,11 @@ var __publicField = (obj, key, value) => {
|
|
6
6
|
};
|
7
7
|
import { BufferGeometry, Mesh, Points } from "three";
|
8
8
|
const DRACOExporter = /* @__PURE__ */ (() => {
|
9
|
-
const
|
9
|
+
const _DRACOExporter = class {
|
10
10
|
parse(object, options = {
|
11
11
|
decodeSpeed: 5,
|
12
12
|
encodeSpeed: 5,
|
13
|
-
encoderMethod:
|
13
|
+
encoderMethod: _DRACOExporter.MESH_EDGEBREAKER_ENCODING,
|
14
14
|
quantization: [16, 8, 8, 8, 8],
|
15
15
|
exportUvs: true,
|
16
16
|
exportNormals: true,
|
@@ -131,7 +131,7 @@ const DRACOExporter = /* @__PURE__ */ (() => {
|
|
131
131
|
return outputData;
|
132
132
|
}
|
133
133
|
};
|
134
|
-
let DRACOExporter2 =
|
134
|
+
let DRACOExporter2 = _DRACOExporter;
|
135
135
|
// Encoder methods
|
136
136
|
__publicField(DRACOExporter2, "MESH_EDGEBREAKER_ENCODING", 1);
|
137
137
|
__publicField(DRACOExporter2, "MESH_SEQUENTIAL_ENCODING", 0);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"DRACOExporter.js","sources":["../../src/exporters/DRACOExporter.ts"],"sourcesContent":["import type { EncoderModule } from 'draco3d'\nimport { BufferGeometry, Mesh, Points } from 'three'\n\n/**\n * Export draco compressed files from threejs geometry objects.\n *\n * Draco files are compressed and usually are smaller than conventional 3D file formats.\n *\n * The exporter receives a options object containing\n * - decodeSpeed, indicates how to tune the encoder regarding decode speed (0 gives better speed but worst quality)\n * - encodeSpeed, indicates how to tune the encoder parameters (0 gives better speed but worst quality)\n * - encoderMethod\n * - quantization, indicates the presision of each type of data stored in the draco file in the order (POSITION, NORMAL, COLOR, TEX_COORD, GENERIC)\n * - exportUvs\n * - exportNormals\n */\n\ndeclare const DracoEncoderModule: () => EncoderModule\n\nconst DRACOExporter = /* @__PURE__ */ (() => {\n class DRACOExporter {\n // Encoder methods\n\n public static MESH_EDGEBREAKER_ENCODING = 1\n public static MESH_SEQUENTIAL_ENCODING = 0\n\n // Geometry type\n\n public static POINT_CLOUD = 0\n public static TRIANGULAR_MESH = 1\n\n // Attribute type\n public static INVALID = -1\n public static POSITION = 0\n public static NORMAL = 1\n public static COLOR = 2\n public static TEX_COORD = 3\n public static GENERIC = 4\n\n public parse(\n object: Mesh | Points,\n options = {\n decodeSpeed: 5,\n encodeSpeed: 5,\n encoderMethod: DRACOExporter.MESH_EDGEBREAKER_ENCODING,\n quantization: [16, 8, 8, 8, 8],\n exportUvs: true,\n exportNormals: true,\n exportColor: false,\n },\n ): Int8Array {\n if (object instanceof BufferGeometry && object.isBufferGeometry) {\n throw new Error('DRACOExporter: The first parameter of parse() is now an instance of Mesh or Points.')\n }\n\n if (DracoEncoderModule === undefined) {\n throw new Error('THREE.DRACOExporter: required the draco_encoder to work.')\n }\n\n const geometry = object.geometry\n\n const dracoEncoder = DracoEncoderModule()\n const encoder = new dracoEncoder.Encoder()\n let builder\n let dracoObject\n\n if (!geometry.isBufferGeometry) {\n throw new Error(\n 'THREE.DRACOExporter.parse(geometry, options): geometry is not a THREE.BufferGeometry instance.',\n )\n }\n\n if (object instanceof Mesh && object.isMesh) {\n builder = new dracoEncoder.MeshBuilder()\n dracoObject = new dracoEncoder.Mesh()\n\n const vertices = geometry.getAttribute('position')\n // @ts-ignore\n builder.AddFloatAttributeToMesh(\n dracoObject,\n dracoEncoder.POSITION,\n vertices.count,\n vertices.itemSize,\n vertices.array,\n )\n\n const faces = geometry.getIndex()\n\n if (faces !== null) {\n builder.AddFacesToMesh(dracoObject, faces.count / 3, faces.array as Uint16Array | Uint32Array)\n } else {\n const faces = new (vertices.count > 65535 ? Uint32Array : Uint16Array)(vertices.count)\n\n for (let i = 0; i < faces.length; i++) {\n faces[i] = i\n }\n\n builder.AddFacesToMesh(dracoObject, vertices.count, faces)\n }\n\n if (options.exportNormals) {\n const normals = geometry.getAttribute('normal')\n\n if (normals !== undefined) {\n // @ts-ignore\n builder.AddFloatAttributeToMesh(\n dracoObject,\n dracoEncoder.NORMAL,\n normals.count,\n normals.itemSize,\n normals.array,\n )\n }\n }\n\n if (options.exportUvs) {\n const uvs = geometry.getAttribute('uv')\n\n if (uvs !== undefined) {\n // @ts-ignore\n builder.AddFloatAttributeToMesh(dracoObject, dracoEncoder.TEX_COORD, uvs.count, uvs.itemSize, uvs.array)\n }\n }\n\n if (options.exportColor) {\n const colors = geometry.getAttribute('color')\n\n if (colors !== undefined) {\n // @ts-ignore\n builder.AddFloatAttributeToMesh(\n dracoObject,\n dracoEncoder.COLOR,\n colors.count,\n colors.itemSize,\n colors.array,\n )\n }\n }\n } else if (object instanceof Points && object.isPoints) {\n // @ts-ignore\n builder = new dracoEncoder.PointCloudBuilder()\n // @ts-ignore\n dracoObject = new dracoEncoder.PointCloud()\n\n const vertices = geometry.getAttribute('position')\n builder.AddFloatAttribute(dracoObject, dracoEncoder.POSITION, vertices.count, vertices.itemSize, vertices.array)\n\n if (options.exportColor) {\n const colors = geometry.getAttribute('color')\n\n if (colors !== undefined) {\n builder.AddFloatAttribute(dracoObject, dracoEncoder.COLOR, colors.count, colors.itemSize, colors.array)\n }\n }\n } else {\n throw new Error('DRACOExporter: Unsupported object type.')\n }\n\n //Compress using draco encoder\n\n const encodedData = new dracoEncoder.DracoInt8Array()\n\n //Sets the desired encoding and decoding speed for the given options from 0 (slowest speed, but the best compression) to 10 (fastest, but the worst compression).\n\n const encodeSpeed = options.encodeSpeed !== undefined ? options.encodeSpeed : 5\n const decodeSpeed = options.decodeSpeed !== undefined ? options.decodeSpeed : 5\n\n encoder.SetSpeedOptions(encodeSpeed, decodeSpeed)\n\n // Sets the desired encoding method for a given geometry.\n\n if (options.encoderMethod !== undefined) {\n encoder.SetEncodingMethod(options.encoderMethod)\n }\n\n // Sets the quantization (number of bits used to represent) compression options for a named attribute.\n // The attribute values will be quantized in a box defined by the maximum extent of the attribute values.\n if (options.quantization !== undefined) {\n for (let i = 0; i < 5; i++) {\n if (options.quantization[i] !== undefined) {\n encoder.SetAttributeQuantization(i, options.quantization[i])\n }\n }\n }\n\n let length\n\n if (object instanceof Mesh && object.isMesh) {\n length = encoder.EncodeMeshToDracoBuffer(dracoObject, encodedData)\n } else {\n // @ts-ignore\n length = encoder.EncodePointCloudToDracoBuffer(dracoObject, true, encodedData)\n }\n\n dracoEncoder.destroy(dracoObject)\n\n if (length === 0) {\n throw new Error('THREE.DRACOExporter: Draco encoding failed.')\n }\n\n //Copy encoded data to buffer.\n const outputData = new Int8Array(new ArrayBuffer(length))\n\n for (let i = 0; i < length; i++) {\n outputData[i] = encodedData.GetValue(i)\n }\n\n dracoEncoder.destroy(encodedData)\n dracoEncoder.destroy(encoder)\n dracoEncoder.destroy(builder)\n\n return outputData\n }\n }\n\n return DRACOExporter\n})()\n\nexport { DRACOExporter }\n"],"names":["DRACOExporter","faces"],"mappings":";;;;;;;AAmBA,MAAM,gBAAuC,uBAAA;AAC3C,QAAMA,kBAAN,MAAoB;AAAA,IAmBX,MACL,QACA,UAAU;AAAA,MACR,aAAa;AAAA,MACb,aAAa;AAAA,MACb,eAAeA,gBAAc;AAAA,MAC7B,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC;AAAA,MAC7B,WAAW;AAAA,MACX,eAAe;AAAA,MACf,aAAa;AAAA,IAAA,GAEJ;AACP,UAAA,kBAAkB,kBAAkB,OAAO,kBAAkB;AACzD,cAAA,IAAI,MAAM,qFAAqF;AAAA,MACvG;AAEA,UAAI,uBAAuB,QAAW;AAC9B,cAAA,IAAI,MAAM,0DAA0D;AAAA,MAC5E;AAEA,YAAM,WAAW,OAAO;AAExB,YAAM,eAAe;AACf,YAAA,UAAU,IAAI,aAAa;AAC7B,UAAA;AACA,UAAA;AAEA,UAAA,CAAC,SAAS,kBAAkB;AAC9B,cAAM,IAAI;AAAA,UACR;AAAA,QAAA;AAAA,MAEJ;AAEI,UAAA,kBAAkB,QAAQ,OAAO,QAAQ;AACjC,kBAAA,IAAI,aAAa;AACb,sBAAA,IAAI,aAAa;AAEzB,cAAA,WAAW,SAAS,aAAa,UAAU;AAEzC,gBAAA;AAAA,UACN;AAAA,UACA,aAAa;AAAA,UACb,SAAS;AAAA,UACT,SAAS;AAAA,UACT,SAAS;AAAA,QAAA;AAGL,cAAA,QAAQ,SAAS;AAEvB,YAAI,UAAU,MAAM;AAClB,kBAAQ,eAAe,aAAa,MAAM,QAAQ,GAAG,MAAM,KAAkC;AAAA,QAAA,OACxF;AACCC,gBAAAA,SAAQ,KAAK,SAAS,QAAQ,QAAQ,cAAc,aAAa,SAAS,KAAK;AAErF,mBAAS,IAAI,GAAG,IAAIA,OAAM,QAAQ,KAAK;AACrCA,mBAAM,CAAC,IAAI;AAAA,UACb;AAEA,kBAAQ,eAAe,aAAa,SAAS,OAAOA,MAAK;AAAA,QAC3D;AAEA,YAAI,QAAQ,eAAe;AACnB,gBAAA,UAAU,SAAS,aAAa,QAAQ;AAE9C,cAAI,YAAY,QAAW;AAEjB,oBAAA;AAAA,cACN;AAAA,cACA,aAAa;AAAA,cACb,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,QAAQ;AAAA,YAAA;AAAA,UAEZ;AAAA,QACF;AAEA,YAAI,QAAQ,WAAW;AACf,gBAAA,MAAM,SAAS,aAAa,IAAI;AAEtC,cAAI,QAAQ,QAAW;AAEb,oBAAA,wBAAwB,aAAa,aAAa,WAAW,IAAI,OAAO,IAAI,UAAU,IAAI,KAAK;AAAA,UACzG;AAAA,QACF;AAEA,YAAI,QAAQ,aAAa;AACjB,gBAAA,SAAS,SAAS,aAAa,OAAO;AAE5C,cAAI,WAAW,QAAW;AAEhB,oBAAA;AAAA,cACN;AAAA,cACA,aAAa;AAAA,cACb,OAAO;AAAA,cACP,OAAO;AAAA,cACP,OAAO;AAAA,YAAA;AAAA,UAEX;AAAA,QACF;AAAA,MACS,WAAA,kBAAkB,UAAU,OAAO,UAAU;AAE5C,kBAAA,IAAI,aAAa;AAEb,sBAAA,IAAI,aAAa;AAEzB,cAAA,WAAW,SAAS,aAAa,UAAU;AACzC,gBAAA,kBAAkB,aAAa,aAAa,UAAU,SAAS,OAAO,SAAS,UAAU,SAAS,KAAK;AAE/G,YAAI,QAAQ,aAAa;AACjB,gBAAA,SAAS,SAAS,aAAa,OAAO;AAE5C,cAAI,WAAW,QAAW;AAChB,oBAAA,kBAAkB,aAAa,aAAa,OAAO,OAAO,OAAO,OAAO,UAAU,OAAO,KAAK;AAAA,UACxG;AAAA,QACF;AAAA,MAAA,OACK;AACC,cAAA,IAAI,MAAM,yCAAyC;AAAA,MAC3D;AAIM,YAAA,cAAc,IAAI,aAAa;AAIrC,YAAM,cAAc,QAAQ,gBAAgB,SAAY,QAAQ,cAAc;AAC9E,YAAM,cAAc,QAAQ,gBAAgB,SAAY,QAAQ,cAAc;AAEtE,cAAA,gBAAgB,aAAa,WAAW;AAI5C,UAAA,QAAQ,kBAAkB,QAAW;AAC/B,gBAAA,kBAAkB,QAAQ,aAAa;AAAA,MACjD;AAII,UAAA,QAAQ,iBAAiB,QAAW;AACtC,iBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,cAAI,QAAQ,aAAa,CAAC,MAAM,QAAW;AACzC,oBAAQ,yBAAyB,GAAG,QAAQ,aAAa,CAAC,CAAC;AAAA,UAC7D;AAAA,QACF;AAAA,MACF;AAEI,UAAA;AAEA,UAAA,kBAAkB,QAAQ,OAAO,QAAQ;AAClC,iBAAA,QAAQ,wBAAwB,aAAa,WAAW;AAAA,MAAA,OAC5D;AAEL,iBAAS,QAAQ,8BAA8B,aAAa,MAAM,WAAW;AAAA,MAC/E;AAEA,mBAAa,QAAQ,WAAW;AAEhC,UAAI,WAAW,GAAG;AACV,cAAA,IAAI,MAAM,6CAA6C;AAAA,MAC/D;AAGA,YAAM,aAAa,IAAI,UAAU,IAAI,YAAY,MAAM,CAAC;AAExD,eAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC/B,mBAAW,CAAC,IAAI,YAAY,SAAS,CAAC;AAAA,MACxC;AAEA,mBAAa,QAAQ,WAAW;AAChC,mBAAa,QAAQ,OAAO;AAC5B,mBAAa,QAAQ,OAAO;AAErB,aAAA;AAAA,IACT;AAAA,EACF;AAjMA,MAAMD,iBAAN;AAGE;AAAA,gBAHIA,gBAGU,6BAA4B;AAC1C,gBAJIA,gBAIU,4BAA2B;AAIzC;AAAA,gBARIA,gBAQU,eAAc;AAC5B,gBATIA,gBASU,mBAAkB;AAGhC;AAAA,gBAZIA,gBAYU,WAAU;AACxB,gBAbIA,gBAaU,YAAW;AACzB,gBAdIA,gBAcU,UAAS;AACvB,gBAfIA,gBAeU,SAAQ;AACtB,gBAhBIA,gBAgBU,aAAY;AAC1B,gBAjBIA,gBAiBU,WAAU;AAkLnBA,SAAAA;AACT,GAAG;"}
|
1
|
+
{"version":3,"file":"DRACOExporter.js","sources":["../../src/exporters/DRACOExporter.js"],"sourcesContent":["import { BufferGeometry, Mesh, Points } from 'three'\n\n/**\n * Export draco compressed files from threejs geometry objects.\n *\n * Draco files are compressed and usually are smaller than conventional 3D file formats.\n *\n * The exporter receives a options object containing\n * - decodeSpeed, indicates how to tune the encoder regarding decode speed (0 gives better speed but worst quality)\n * - encodeSpeed, indicates how to tune the encoder parameters (0 gives better speed but worst quality)\n * - encoderMethod\n * - quantization, indicates the presision of each type of data stored in the draco file in the order (POSITION, NORMAL, COLOR, TEX_COORD, GENERIC)\n * - exportUvs\n * - exportNormals\n */\n\nconst DRACOExporter = /* @__PURE__ */ (() => {\n class DRACOExporter {\n // Encoder methods\n\n static MESH_EDGEBREAKER_ENCODING = 1\n static MESH_SEQUENTIAL_ENCODING = 0\n\n // Geometry type\n\n static POINT_CLOUD = 0\n static TRIANGULAR_MESH = 1\n\n // Attribute type\n static INVALID = -1\n static POSITION = 0\n static NORMAL = 1\n static COLOR = 2\n static TEX_COORD = 3\n static GENERIC = 4\n\n parse(\n object,\n options = {\n decodeSpeed: 5,\n encodeSpeed: 5,\n encoderMethod: DRACOExporter.MESH_EDGEBREAKER_ENCODING,\n quantization: [16, 8, 8, 8, 8],\n exportUvs: true,\n exportNormals: true,\n exportColor: false,\n },\n ) {\n if (object instanceof BufferGeometry && object.isBufferGeometry) {\n throw new Error('DRACOExporter: The first parameter of parse() is now an instance of Mesh or Points.')\n }\n\n if (DracoEncoderModule === undefined) {\n throw new Error('THREE.DRACOExporter: required the draco_encoder to work.')\n }\n\n const geometry = object.geometry\n\n const dracoEncoder = DracoEncoderModule()\n const encoder = new dracoEncoder.Encoder()\n let builder\n let dracoObject\n\n if (!geometry.isBufferGeometry) {\n throw new Error(\n 'THREE.DRACOExporter.parse(geometry, options): geometry is not a THREE.BufferGeometry instance.',\n )\n }\n\n if (object instanceof Mesh && object.isMesh) {\n builder = new dracoEncoder.MeshBuilder()\n dracoObject = new dracoEncoder.Mesh()\n\n const vertices = geometry.getAttribute('position')\n // @ts-ignore\n builder.AddFloatAttributeToMesh(\n dracoObject,\n dracoEncoder.POSITION,\n vertices.count,\n vertices.itemSize,\n vertices.array,\n )\n\n const faces = geometry.getIndex()\n\n if (faces !== null) {\n builder.AddFacesToMesh(dracoObject, faces.count / 3, faces.array)\n } else {\n const faces = new (vertices.count > 65535 ? Uint32Array : Uint16Array)(vertices.count)\n\n for (let i = 0; i < faces.length; i++) {\n faces[i] = i\n }\n\n builder.AddFacesToMesh(dracoObject, vertices.count, faces)\n }\n\n if (options.exportNormals) {\n const normals = geometry.getAttribute('normal')\n\n if (normals !== undefined) {\n // @ts-ignore\n builder.AddFloatAttributeToMesh(\n dracoObject,\n dracoEncoder.NORMAL,\n normals.count,\n normals.itemSize,\n normals.array,\n )\n }\n }\n\n if (options.exportUvs) {\n const uvs = geometry.getAttribute('uv')\n\n if (uvs !== undefined) {\n // @ts-ignore\n builder.AddFloatAttributeToMesh(dracoObject, dracoEncoder.TEX_COORD, uvs.count, uvs.itemSize, uvs.array)\n }\n }\n\n if (options.exportColor) {\n const colors = geometry.getAttribute('color')\n\n if (colors !== undefined) {\n // @ts-ignore\n builder.AddFloatAttributeToMesh(\n dracoObject,\n dracoEncoder.COLOR,\n colors.count,\n colors.itemSize,\n colors.array,\n )\n }\n }\n } else if (object instanceof Points && object.isPoints) {\n // @ts-ignore\n builder = new dracoEncoder.PointCloudBuilder()\n // @ts-ignore\n dracoObject = new dracoEncoder.PointCloud()\n\n const vertices = geometry.getAttribute('position')\n builder.AddFloatAttribute(dracoObject, dracoEncoder.POSITION, vertices.count, vertices.itemSize, vertices.array)\n\n if (options.exportColor) {\n const colors = geometry.getAttribute('color')\n\n if (colors !== undefined) {\n builder.AddFloatAttribute(dracoObject, dracoEncoder.COLOR, colors.count, colors.itemSize, colors.array)\n }\n }\n } else {\n throw new Error('DRACOExporter: Unsupported object type.')\n }\n\n //Compress using draco encoder\n\n const encodedData = new dracoEncoder.DracoInt8Array()\n\n //Sets the desired encoding and decoding speed for the given options from 0 (slowest speed, but the best compression) to 10 (fastest, but the worst compression).\n\n const encodeSpeed = options.encodeSpeed !== undefined ? options.encodeSpeed : 5\n const decodeSpeed = options.decodeSpeed !== undefined ? options.decodeSpeed : 5\n\n encoder.SetSpeedOptions(encodeSpeed, decodeSpeed)\n\n // Sets the desired encoding method for a given geometry.\n\n if (options.encoderMethod !== undefined) {\n encoder.SetEncodingMethod(options.encoderMethod)\n }\n\n // Sets the quantization (number of bits used to represent) compression options for a named attribute.\n // The attribute values will be quantized in a box defined by the maximum extent of the attribute values.\n if (options.quantization !== undefined) {\n for (let i = 0; i < 5; i++) {\n if (options.quantization[i] !== undefined) {\n encoder.SetAttributeQuantization(i, options.quantization[i])\n }\n }\n }\n\n let length\n\n if (object instanceof Mesh && object.isMesh) {\n length = encoder.EncodeMeshToDracoBuffer(dracoObject, encodedData)\n } else {\n // @ts-ignore\n length = encoder.EncodePointCloudToDracoBuffer(dracoObject, true, encodedData)\n }\n\n dracoEncoder.destroy(dracoObject)\n\n if (length === 0) {\n throw new Error('THREE.DRACOExporter: Draco encoding failed.')\n }\n\n //Copy encoded data to buffer.\n const outputData = new Int8Array(new ArrayBuffer(length))\n\n for (let i = 0; i < length; i++) {\n outputData[i] = encodedData.GetValue(i)\n }\n\n dracoEncoder.destroy(encodedData)\n dracoEncoder.destroy(encoder)\n dracoEncoder.destroy(builder)\n\n return outputData\n }\n }\n\n return DRACOExporter\n})()\n\nexport { DRACOExporter }\n"],"names":["faces","DRACOExporter"],"mappings":"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"}
|
package/objects/Sky.cjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Sky.cjs","sources":["../../src/objects/Sky.
|
1
|
+
{"version":3,"file":"Sky.cjs","sources":["../../src/objects/Sky.js"],"sourcesContent":["import { BackSide, BoxGeometry, Mesh, ShaderMaterial, UniformsUtils, Vector3 } from 'three'\nimport { version } from '../_polyfill/constants'\n\n/**\n * Based on \"A Practical Analytic Model for Daylight\"\n * aka The Preetham Model, the de facto standard analytic skydome model\n * https://www.researchgate.net/publication/220720443_A_Practical_Analytic_Model_for_Daylight\n *\n * First implemented by Simon Wallner\n * http://www.simonwallner.at/projects/atmospheric-scattering\n *\n * Improved by Martin Upitis\n * http://blenderartists.org/forum/showthread.php?245954-preethams-sky-impementation-HDR\n *\n * Three.js integration by zz85 http://twitter.com/blurspline\n */\nconst Sky = /* @__PURE__ */ (() => {\n const SkyShader = {\n uniforms: {\n turbidity: { value: 2 },\n rayleigh: { value: 1 },\n mieCoefficient: { value: 0.005 },\n mieDirectionalG: { value: 0.8 },\n sunPosition: { value: new Vector3() },\n up: { value: new Vector3(0, 1, 0) },\n },\n\n vertexShader: /* glsl */ `\n uniform vec3 sunPosition;\n uniform float rayleigh;\n uniform float turbidity;\n uniform float mieCoefficient;\n uniform vec3 up;\n\n varying vec3 vWorldPosition;\n varying vec3 vSunDirection;\n varying float vSunfade;\n varying vec3 vBetaR;\n varying vec3 vBetaM;\n varying float vSunE;\n\n // constants for atmospheric scattering\n const float e = 2.71828182845904523536028747135266249775724709369995957;\n const float pi = 3.141592653589793238462643383279502884197169;\n\n // wavelength of used primaries, according to preetham\n const vec3 lambda = vec3( 680E-9, 550E-9, 450E-9 );\n // this pre-calcuation replaces older TotalRayleigh(vec3 lambda) function:\n // (8.0 * pow(pi, 3.0) * pow(pow(n, 2.0) - 1.0, 2.0) * (6.0 + 3.0 * pn)) / (3.0 * N * pow(lambda, vec3(4.0)) * (6.0 - 7.0 * pn))\n const vec3 totalRayleigh = vec3( 5.804542996261093E-6, 1.3562911419845635E-5, 3.0265902468824876E-5 );\n\n // mie stuff\n // K coefficient for the primaries\n const float v = 4.0;\n const vec3 K = vec3( 0.686, 0.678, 0.666 );\n // MieConst = pi * pow( ( 2.0 * pi ) / lambda, vec3( v - 2.0 ) ) * K\n const vec3 MieConst = vec3( 1.8399918514433978E14, 2.7798023919660528E14, 4.0790479543861094E14 );\n\n // earth shadow hack\n // cutoffAngle = pi / 1.95;\n const float cutoffAngle = 1.6110731556870734;\n const float steepness = 1.5;\n const float EE = 1000.0;\n\n float sunIntensity( float zenithAngleCos ) {\n zenithAngleCos = clamp( zenithAngleCos, -1.0, 1.0 );\n return EE * max( 0.0, 1.0 - pow( e, -( ( cutoffAngle - acos( zenithAngleCos ) ) / steepness ) ) );\n }\n\n vec3 totalMie( float T ) {\n float c = ( 0.2 * T ) * 10E-18;\n return 0.434 * c * MieConst;\n }\n\n void main() {\n\n vec4 worldPosition = modelMatrix * vec4( position, 1.0 );\n vWorldPosition = worldPosition.xyz;\n\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n gl_Position.z = gl_Position.w; // set z to camera.far\n\n vSunDirection = normalize( sunPosition );\n\n vSunE = sunIntensity( dot( vSunDirection, up ) );\n\n vSunfade = 1.0 - clamp( 1.0 - exp( ( sunPosition.y / 450000.0 ) ), 0.0, 1.0 );\n\n float rayleighCoefficient = rayleigh - ( 1.0 * ( 1.0 - vSunfade ) );\n\n // extinction (absorbtion + out scattering)\n // rayleigh coefficients\n vBetaR = totalRayleigh * rayleighCoefficient;\n\n // mie coefficients\n vBetaM = totalMie( turbidity ) * mieCoefficient;\n\n }\n `,\n\n fragmentShader: /* glsl */ `\n varying vec3 vWorldPosition;\n varying vec3 vSunDirection;\n varying float vSunfade;\n varying vec3 vBetaR;\n varying vec3 vBetaM;\n varying float vSunE;\n\n uniform float mieDirectionalG;\n uniform vec3 up;\n\n const vec3 cameraPos = vec3( 0.0, 0.0, 0.0 );\n\n // constants for atmospheric scattering\n const float pi = 3.141592653589793238462643383279502884197169;\n\n const float n = 1.0003; // refractive index of air\n const float N = 2.545E25; // number of molecules per unit volume for air at 288.15K and 1013mb (sea level -45 celsius)\n\n // optical length at zenith for molecules\n const float rayleighZenithLength = 8.4E3;\n const float mieZenithLength = 1.25E3;\n // 66 arc seconds -> degrees, and the cosine of that\n const float sunAngularDiameterCos = 0.999956676946448443553574619906976478926848692873900859324;\n\n // 3.0 / ( 16.0 * pi )\n const float THREE_OVER_SIXTEENPI = 0.05968310365946075;\n // 1.0 / ( 4.0 * pi )\n const float ONE_OVER_FOURPI = 0.07957747154594767;\n\n float rayleighPhase( float cosTheta ) {\n return THREE_OVER_SIXTEENPI * ( 1.0 + pow( cosTheta, 2.0 ) );\n }\n\n float hgPhase( float cosTheta, float g ) {\n float g2 = pow( g, 2.0 );\n float inverse = 1.0 / pow( 1.0 - 2.0 * g * cosTheta + g2, 1.5 );\n return ONE_OVER_FOURPI * ( ( 1.0 - g2 ) * inverse );\n }\n\n void main() {\n\n vec3 direction = normalize( vWorldPosition - cameraPos );\n\n // optical length\n // cutoff angle at 90 to avoid singularity in next formula.\n float zenithAngle = acos( max( 0.0, dot( up, direction ) ) );\n float inverse = 1.0 / ( cos( zenithAngle ) + 0.15 * pow( 93.885 - ( ( zenithAngle * 180.0 ) / pi ), -1.253 ) );\n float sR = rayleighZenithLength * inverse;\n float sM = mieZenithLength * inverse;\n\n // combined extinction factor\n vec3 Fex = exp( -( vBetaR * sR + vBetaM * sM ) );\n\n // in scattering\n float cosTheta = dot( direction, vSunDirection );\n\n float rPhase = rayleighPhase( cosTheta * 0.5 + 0.5 );\n vec3 betaRTheta = vBetaR * rPhase;\n\n float mPhase = hgPhase( cosTheta, mieDirectionalG );\n vec3 betaMTheta = vBetaM * mPhase;\n\n vec3 Lin = pow( vSunE * ( ( betaRTheta + betaMTheta ) / ( vBetaR + vBetaM ) ) * ( 1.0 - Fex ), vec3( 1.5 ) );\n Lin *= mix( vec3( 1.0 ), pow( vSunE * ( ( betaRTheta + betaMTheta ) / ( vBetaR + vBetaM ) ) * Fex, vec3( 1.0 / 2.0 ) ), clamp( pow( 1.0 - dot( up, vSunDirection ), 5.0 ), 0.0, 1.0 ) );\n\n // nightsky\n float theta = acos( direction.y ); // elevation --> y-axis, [-pi/2, pi/2]\n float phi = atan( direction.z, direction.x ); // azimuth --> x-axis [-pi/2, pi/2]\n vec2 uv = vec2( phi, theta ) / vec2( 2.0 * pi, pi ) + vec2( 0.5, 0.0 );\n vec3 L0 = vec3( 0.1 ) * Fex;\n\n // composition + solar disc\n float sundisk = smoothstep( sunAngularDiameterCos, sunAngularDiameterCos + 0.00002, cosTheta );\n L0 += ( vSunE * 19000.0 * Fex ) * sundisk;\n\n vec3 texColor = ( Lin + L0 ) * 0.04 + vec3( 0.0, 0.0003, 0.00075 );\n\n vec3 retColor = pow( texColor, vec3( 1.0 / ( 1.2 + ( 1.2 * vSunfade ) ) ) );\n\n gl_FragColor = vec4( retColor, 1.0 );\n\n #include <tonemapping_fragment>\n #include <${version >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>\n\n }\n `,\n }\n\n const material = new ShaderMaterial({\n name: 'SkyShader',\n fragmentShader: SkyShader.fragmentShader,\n vertexShader: SkyShader.vertexShader,\n uniforms: UniformsUtils.clone(SkyShader.uniforms),\n side: BackSide,\n depthWrite: false,\n })\n\n class Sky extends Mesh {\n constructor() {\n super(new BoxGeometry(1, 1, 1), material)\n }\n\n static SkyShader = SkyShader\n static material = material\n }\n\n return Sky\n})()\n\nexport { Sky }\n"],"names":["Vector3","version","ShaderMaterial","UniformsUtils","BackSide","Sky","Mesh","BoxGeometry"],"mappings":";;;;;;;;;;AAgBK,MAAC,MAAuB,uBAAM;AACjC,QAAM,YAAY;AAAA,IAChB,UAAU;AAAA,MACR,WAAW,EAAE,OAAO,EAAG;AAAA,MACvB,UAAU,EAAE,OAAO,EAAG;AAAA,MACtB,gBAAgB,EAAE,OAAO,KAAO;AAAA,MAChC,iBAAiB,EAAE,OAAO,IAAK;AAAA,MAC/B,aAAa,EAAE,OAAO,IAAIA,MAAAA,UAAW;AAAA,MACrC,IAAI,EAAE,OAAO,IAAIA,MAAAA,QAAQ,GAAG,GAAG,CAAC,EAAG;AAAA,IACpC;AAAA,IAED;AAAA;AAAA,MAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAyEzB;AAAA;AAAA,MAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAmFbC,qBAAW,MAAM,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA,EAIxD;AAED,QAAM,WAAW,IAAIC,qBAAe;AAAA,IAClC,MAAM;AAAA,IACN,gBAAgB,UAAU;AAAA,IAC1B,cAAc,UAAU;AAAA,IACxB,UAAUC,MAAa,cAAC,MAAM,UAAU,QAAQ;AAAA,IAChD,MAAMC,MAAQ;AAAA,IACd,YAAY;AAAA,EAChB,CAAG;AAED,QAAMC,aAAYC,MAAAA,KAAK;AAAA,IACrB,cAAc;AACZ,YAAM,IAAIC,MAAAA,YAAY,GAAG,GAAG,CAAC,GAAG,QAAQ;AAAA,IACzC;AAAA,EAIF;AAFC,gBALIF,MAKG,aAAY;AACnB,gBANIA,MAMG,YAAW;AAGpB,SAAOA;AACT,GAAC;;"}
|
package/objects/Sky.d.ts
CHANGED
@@ -1,137 +1,18 @@
|
|
1
|
-
import { ShaderMaterial, Vector3 } from 'three'
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
morphTargetInfluences?: number[] | undefined;
|
20
|
-
morphTargetDictionary?: {
|
21
|
-
[key: string]: number;
|
22
|
-
} | undefined;
|
23
|
-
readonly isMesh: true;
|
24
|
-
type: string;
|
25
|
-
updateMorphTargets(): void;
|
26
|
-
raycast(raycaster: import("three").Raycaster, intersects: import("three").Intersection[]): void;
|
27
|
-
id: number;
|
28
|
-
uuid: string;
|
29
|
-
name: string;
|
30
|
-
parent: import("three").Object3D | null;
|
31
|
-
children: import("three").Object3D[];
|
32
|
-
up: Vector3;
|
33
|
-
readonly position: Vector3;
|
34
|
-
readonly rotation: import("three").Euler;
|
35
|
-
readonly quaternion: import("three").Quaternion;
|
36
|
-
readonly scale: Vector3;
|
37
|
-
readonly modelViewMatrix: import("three").Matrix4;
|
38
|
-
readonly normalMatrix: import("three").Matrix3;
|
39
|
-
matrix: import("three").Matrix4;
|
40
|
-
matrixWorld: import("three").Matrix4;
|
41
|
-
matrixAutoUpdate: boolean;
|
42
|
-
matrixWorldNeedsUpdate: boolean;
|
43
|
-
layers: import("three").Layers;
|
44
|
-
visible: boolean;
|
45
|
-
castShadow: boolean;
|
46
|
-
receiveShadow: boolean;
|
47
|
-
frustumCulled: boolean;
|
48
|
-
renderOrder: number;
|
49
|
-
animations: import("three").AnimationClip[];
|
50
|
-
userData: {
|
51
|
-
[key: string]: any;
|
52
|
-
};
|
53
|
-
customDepthMaterial: import("three").Material;
|
54
|
-
customDistanceMaterial: import("three").Material;
|
55
|
-
readonly isObject3D: true;
|
56
|
-
onBeforeRender: (renderer: import("three").WebGLRenderer, scene: import("three").Scene, camera: import("three").Camera, geometry: import("three").BufferGeometry, material: import("three").Material, group: import("three").Group) => void;
|
57
|
-
onAfterRender: (renderer: import("three").WebGLRenderer, scene: import("three").Scene, camera: import("three").Camera, geometry: import("three").BufferGeometry, material: import("three").Material, group: import("three").Group) => void;
|
58
|
-
applyMatrix4(matrix: import("three").Matrix4): void;
|
59
|
-
applyQuaternion(quaternion: import("three").Quaternion): any;
|
60
|
-
setRotationFromAxisAngle(axis: Vector3, angle: number): void;
|
61
|
-
setRotationFromEuler(euler: import("three").Euler): void;
|
62
|
-
setRotationFromMatrix(m: import("three").Matrix4): void;
|
63
|
-
setRotationFromQuaternion(q: import("three").Quaternion): void;
|
64
|
-
rotateOnAxis(axis: Vector3, angle: number): any;
|
65
|
-
rotateOnWorldAxis(axis: Vector3, angle: number): any;
|
66
|
-
rotateX(angle: number): any;
|
67
|
-
rotateY(angle: number): any;
|
68
|
-
rotateZ(angle: number): any;
|
69
|
-
translateOnAxis(axis: Vector3, distance: number): any;
|
70
|
-
translateX(distance: number): any;
|
71
|
-
translateY(distance: number): any;
|
72
|
-
translateZ(distance: number): any;
|
73
|
-
localToWorld(vector: Vector3): Vector3;
|
74
|
-
worldToLocal(vector: Vector3): Vector3;
|
75
|
-
lookAt(vector: number | Vector3, y?: number | undefined, z?: number | undefined): void;
|
76
|
-
add(...object: import("three").Object3D[]): any;
|
77
|
-
remove(...object: import("three").Object3D[]): any;
|
78
|
-
clear(): any;
|
79
|
-
attach(object: import("three").Object3D): any;
|
80
|
-
getObjectById(id: number): import("three").Object3D | undefined;
|
81
|
-
getObjectByName(name: string): import("three").Object3D | undefined;
|
82
|
-
getObjectByProperty(name: string, value: string): import("three").Object3D | undefined;
|
83
|
-
getWorldPosition(target: Vector3): Vector3;
|
84
|
-
getWorldQuaternion(target: import("three").Quaternion): import("three").Quaternion;
|
85
|
-
getWorldScale(target: Vector3): Vector3;
|
86
|
-
getWorldDirection(target: Vector3): Vector3;
|
87
|
-
traverse(callback: (object: import("three").Object3D) => any): void;
|
88
|
-
traverseVisible(callback: (object: import("three").Object3D) => any): void;
|
89
|
-
traverseAncestors(callback: (object: import("three").Object3D) => any): void;
|
90
|
-
updateMatrix(): void;
|
91
|
-
updateMatrixWorld(force?: boolean | undefined): void;
|
92
|
-
updateWorldMatrix(updateParents: boolean, updateChildren: boolean): void;
|
93
|
-
toJSON(meta?: {
|
94
|
-
geometries: any;
|
95
|
-
materials: any;
|
96
|
-
textures: any;
|
97
|
-
images: any;
|
98
|
-
} | undefined): any;
|
99
|
-
clone(recursive?: boolean | undefined): any;
|
100
|
-
copy(source: any, recursive?: boolean | undefined): any;
|
101
|
-
addEventListener(type: string, listener: (event: import("three").Event) => void): void;
|
102
|
-
hasEventListener(type: string, listener: (event: import("three").Event) => void): boolean;
|
103
|
-
removeEventListener(type: string, listener: (event: import("three").Event) => void): void;
|
104
|
-
dispatchEvent(event: {
|
105
|
-
[attachment: string]: any;
|
106
|
-
type: string;
|
107
|
-
}): void;
|
108
|
-
};
|
109
|
-
SkyShader: {
|
110
|
-
uniforms: {
|
111
|
-
turbidity: {
|
112
|
-
value: number;
|
113
|
-
};
|
114
|
-
rayleigh: {
|
115
|
-
value: number;
|
116
|
-
};
|
117
|
-
mieCoefficient: {
|
118
|
-
value: number;
|
119
|
-
};
|
120
|
-
mieDirectionalG: {
|
121
|
-
value: number;
|
122
|
-
};
|
123
|
-
sunPosition: {
|
124
|
-
value: Vector3;
|
125
|
-
};
|
126
|
-
up: {
|
127
|
-
value: Vector3;
|
128
|
-
};
|
129
|
-
};
|
130
|
-
vertexShader: string;
|
131
|
-
fragmentShader: string;
|
132
|
-
};
|
133
|
-
material: ShaderMaterial;
|
134
|
-
DefaultUp: Vector3;
|
135
|
-
DefaultMatrixAutoUpdate: boolean;
|
136
|
-
};
|
137
|
-
export { Sky };
|
1
|
+
import { Mesh, BoxGeometry, ShaderMaterial, Vector3 } from 'three'
|
2
|
+
|
3
|
+
declare class Sky extends Mesh<BoxGeometry, ShaderMaterial> {
|
4
|
+
static SkyShader: {
|
5
|
+
uniforms: {
|
6
|
+
turbidity: { value: number }
|
7
|
+
rayleigh: { value: number }
|
8
|
+
mieCoefficient: { value: number }
|
9
|
+
mieDirectionalG: { value: number }
|
10
|
+
sunPosition: { value: Vector3 }
|
11
|
+
up: { value: Vector3 }
|
12
|
+
}
|
13
|
+
}
|
14
|
+
|
15
|
+
static material: ShaderMaterial
|
16
|
+
}
|
17
|
+
|
18
|
+
export { Sky }
|
package/objects/Sky.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Sky.js","sources":["../../src/objects/Sky.
|
1
|
+
{"version":3,"file":"Sky.js","sources":["../../src/objects/Sky.js"],"sourcesContent":["import { BackSide, BoxGeometry, Mesh, ShaderMaterial, UniformsUtils, Vector3 } from 'three'\nimport { version } from '../_polyfill/constants'\n\n/**\n * Based on \"A Practical Analytic Model for Daylight\"\n * aka The Preetham Model, the de facto standard analytic skydome model\n * https://www.researchgate.net/publication/220720443_A_Practical_Analytic_Model_for_Daylight\n *\n * First implemented by Simon Wallner\n * http://www.simonwallner.at/projects/atmospheric-scattering\n *\n * Improved by Martin Upitis\n * http://blenderartists.org/forum/showthread.php?245954-preethams-sky-impementation-HDR\n *\n * Three.js integration by zz85 http://twitter.com/blurspline\n */\nconst Sky = /* @__PURE__ */ (() => {\n const SkyShader = {\n uniforms: {\n turbidity: { value: 2 },\n rayleigh: { value: 1 },\n mieCoefficient: { value: 0.005 },\n mieDirectionalG: { value: 0.8 },\n sunPosition: { value: new Vector3() },\n up: { value: new Vector3(0, 1, 0) },\n },\n\n vertexShader: /* glsl */ `\n uniform vec3 sunPosition;\n uniform float rayleigh;\n uniform float turbidity;\n uniform float mieCoefficient;\n uniform vec3 up;\n\n varying vec3 vWorldPosition;\n varying vec3 vSunDirection;\n varying float vSunfade;\n varying vec3 vBetaR;\n varying vec3 vBetaM;\n varying float vSunE;\n\n // constants for atmospheric scattering\n const float e = 2.71828182845904523536028747135266249775724709369995957;\n const float pi = 3.141592653589793238462643383279502884197169;\n\n // wavelength of used primaries, according to preetham\n const vec3 lambda = vec3( 680E-9, 550E-9, 450E-9 );\n // this pre-calcuation replaces older TotalRayleigh(vec3 lambda) function:\n // (8.0 * pow(pi, 3.0) * pow(pow(n, 2.0) - 1.0, 2.0) * (6.0 + 3.0 * pn)) / (3.0 * N * pow(lambda, vec3(4.0)) * (6.0 - 7.0 * pn))\n const vec3 totalRayleigh = vec3( 5.804542996261093E-6, 1.3562911419845635E-5, 3.0265902468824876E-5 );\n\n // mie stuff\n // K coefficient for the primaries\n const float v = 4.0;\n const vec3 K = vec3( 0.686, 0.678, 0.666 );\n // MieConst = pi * pow( ( 2.0 * pi ) / lambda, vec3( v - 2.0 ) ) * K\n const vec3 MieConst = vec3( 1.8399918514433978E14, 2.7798023919660528E14, 4.0790479543861094E14 );\n\n // earth shadow hack\n // cutoffAngle = pi / 1.95;\n const float cutoffAngle = 1.6110731556870734;\n const float steepness = 1.5;\n const float EE = 1000.0;\n\n float sunIntensity( float zenithAngleCos ) {\n zenithAngleCos = clamp( zenithAngleCos, -1.0, 1.0 );\n return EE * max( 0.0, 1.0 - pow( e, -( ( cutoffAngle - acos( zenithAngleCos ) ) / steepness ) ) );\n }\n\n vec3 totalMie( float T ) {\n float c = ( 0.2 * T ) * 10E-18;\n return 0.434 * c * MieConst;\n }\n\n void main() {\n\n vec4 worldPosition = modelMatrix * vec4( position, 1.0 );\n vWorldPosition = worldPosition.xyz;\n\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n gl_Position.z = gl_Position.w; // set z to camera.far\n\n vSunDirection = normalize( sunPosition );\n\n vSunE = sunIntensity( dot( vSunDirection, up ) );\n\n vSunfade = 1.0 - clamp( 1.0 - exp( ( sunPosition.y / 450000.0 ) ), 0.0, 1.0 );\n\n float rayleighCoefficient = rayleigh - ( 1.0 * ( 1.0 - vSunfade ) );\n\n // extinction (absorbtion + out scattering)\n // rayleigh coefficients\n vBetaR = totalRayleigh * rayleighCoefficient;\n\n // mie coefficients\n vBetaM = totalMie( turbidity ) * mieCoefficient;\n\n }\n `,\n\n fragmentShader: /* glsl */ `\n varying vec3 vWorldPosition;\n varying vec3 vSunDirection;\n varying float vSunfade;\n varying vec3 vBetaR;\n varying vec3 vBetaM;\n varying float vSunE;\n\n uniform float mieDirectionalG;\n uniform vec3 up;\n\n const vec3 cameraPos = vec3( 0.0, 0.0, 0.0 );\n\n // constants for atmospheric scattering\n const float pi = 3.141592653589793238462643383279502884197169;\n\n const float n = 1.0003; // refractive index of air\n const float N = 2.545E25; // number of molecules per unit volume for air at 288.15K and 1013mb (sea level -45 celsius)\n\n // optical length at zenith for molecules\n const float rayleighZenithLength = 8.4E3;\n const float mieZenithLength = 1.25E3;\n // 66 arc seconds -> degrees, and the cosine of that\n const float sunAngularDiameterCos = 0.999956676946448443553574619906976478926848692873900859324;\n\n // 3.0 / ( 16.0 * pi )\n const float THREE_OVER_SIXTEENPI = 0.05968310365946075;\n // 1.0 / ( 4.0 * pi )\n const float ONE_OVER_FOURPI = 0.07957747154594767;\n\n float rayleighPhase( float cosTheta ) {\n return THREE_OVER_SIXTEENPI * ( 1.0 + pow( cosTheta, 2.0 ) );\n }\n\n float hgPhase( float cosTheta, float g ) {\n float g2 = pow( g, 2.0 );\n float inverse = 1.0 / pow( 1.0 - 2.0 * g * cosTheta + g2, 1.5 );\n return ONE_OVER_FOURPI * ( ( 1.0 - g2 ) * inverse );\n }\n\n void main() {\n\n vec3 direction = normalize( vWorldPosition - cameraPos );\n\n // optical length\n // cutoff angle at 90 to avoid singularity in next formula.\n float zenithAngle = acos( max( 0.0, dot( up, direction ) ) );\n float inverse = 1.0 / ( cos( zenithAngle ) + 0.15 * pow( 93.885 - ( ( zenithAngle * 180.0 ) / pi ), -1.253 ) );\n float sR = rayleighZenithLength * inverse;\n float sM = mieZenithLength * inverse;\n\n // combined extinction factor\n vec3 Fex = exp( -( vBetaR * sR + vBetaM * sM ) );\n\n // in scattering\n float cosTheta = dot( direction, vSunDirection );\n\n float rPhase = rayleighPhase( cosTheta * 0.5 + 0.5 );\n vec3 betaRTheta = vBetaR * rPhase;\n\n float mPhase = hgPhase( cosTheta, mieDirectionalG );\n vec3 betaMTheta = vBetaM * mPhase;\n\n vec3 Lin = pow( vSunE * ( ( betaRTheta + betaMTheta ) / ( vBetaR + vBetaM ) ) * ( 1.0 - Fex ), vec3( 1.5 ) );\n Lin *= mix( vec3( 1.0 ), pow( vSunE * ( ( betaRTheta + betaMTheta ) / ( vBetaR + vBetaM ) ) * Fex, vec3( 1.0 / 2.0 ) ), clamp( pow( 1.0 - dot( up, vSunDirection ), 5.0 ), 0.0, 1.0 ) );\n\n // nightsky\n float theta = acos( direction.y ); // elevation --> y-axis, [-pi/2, pi/2]\n float phi = atan( direction.z, direction.x ); // azimuth --> x-axis [-pi/2, pi/2]\n vec2 uv = vec2( phi, theta ) / vec2( 2.0 * pi, pi ) + vec2( 0.5, 0.0 );\n vec3 L0 = vec3( 0.1 ) * Fex;\n\n // composition + solar disc\n float sundisk = smoothstep( sunAngularDiameterCos, sunAngularDiameterCos + 0.00002, cosTheta );\n L0 += ( vSunE * 19000.0 * Fex ) * sundisk;\n\n vec3 texColor = ( Lin + L0 ) * 0.04 + vec3( 0.0, 0.0003, 0.00075 );\n\n vec3 retColor = pow( texColor, vec3( 1.0 / ( 1.2 + ( 1.2 * vSunfade ) ) ) );\n\n gl_FragColor = vec4( retColor, 1.0 );\n\n #include <tonemapping_fragment>\n #include <${version >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>\n\n }\n `,\n }\n\n const material = new ShaderMaterial({\n name: 'SkyShader',\n fragmentShader: SkyShader.fragmentShader,\n vertexShader: SkyShader.vertexShader,\n uniforms: UniformsUtils.clone(SkyShader.uniforms),\n side: BackSide,\n depthWrite: false,\n })\n\n class Sky extends Mesh {\n constructor() {\n super(new BoxGeometry(1, 1, 1), material)\n }\n\n static SkyShader = SkyShader\n static material = material\n }\n\n return Sky\n})()\n\nexport { Sky }\n"],"names":["Sky"],"mappings":";;;;;;;;AAgBK,MAAC,MAAuB,uBAAM;AACjC,QAAM,YAAY;AAAA,IAChB,UAAU;AAAA,MACR,WAAW,EAAE,OAAO,EAAG;AAAA,MACvB,UAAU,EAAE,OAAO,EAAG;AAAA,MACtB,gBAAgB,EAAE,OAAO,KAAO;AAAA,MAChC,iBAAiB,EAAE,OAAO,IAAK;AAAA,MAC/B,aAAa,EAAE,OAAO,IAAI,UAAW;AAAA,MACrC,IAAI,EAAE,OAAO,IAAI,QAAQ,GAAG,GAAG,CAAC,EAAG;AAAA,IACpC;AAAA,IAED;AAAA;AAAA,MAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAyEzB;AAAA;AAAA,MAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAmFb,WAAW,MAAM,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA,EAIxD;AAED,QAAM,WAAW,IAAI,eAAe;AAAA,IAClC,MAAM;AAAA,IACN,gBAAgB,UAAU;AAAA,IAC1B,cAAc,UAAU;AAAA,IACxB,UAAU,cAAc,MAAM,UAAU,QAAQ;AAAA,IAChD,MAAM;AAAA,IACN,YAAY;AAAA,EAChB,CAAG;AAED,QAAMA,aAAY,KAAK;AAAA,IACrB,cAAc;AACZ,YAAM,IAAI,YAAY,GAAG,GAAG,CAAC,GAAG,QAAQ;AAAA,IACzC;AAAA,EAIF;AAFC,gBALIA,MAKG,aAAY;AACnB,gBANIA,MAMG,YAAW;AAGpB,SAAOA;AACT,GAAC;"}
|