@crystaldesign/real-time-viewer 26.4.0-beta.9 → 26.4.0-rc.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/build/esm/index.js +33 -20
- package/build/types/real-time-viewer/src/CustomMaterial/index.d.ts.map +1 -1
- package/build/types/real-time-viewer/src/parser/findAssets/index.d.ts.map +1 -1
- package/build/types/real-time-viewer/src/parser/findMaterials/index.d.ts.map +1 -1
- package/build/umd/105.real-time-viewer.umd.min.js +2 -0
- package/build/umd/105.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
- package/build/umd/214.real-time-viewer.umd.min.js +2 -0
- package/build/umd/214.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
- package/build/umd/245.real-time-viewer.umd.min.js +2 -0
- package/build/umd/245.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
- package/build/umd/271.real-time-viewer.umd.min.js +2 -0
- package/build/umd/271.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
- package/build/umd/281.real-time-viewer.umd.min.js +2 -0
- package/build/umd/281.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
- package/build/umd/305.real-time-viewer.umd.min.js +2 -0
- package/build/umd/305.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
- package/build/umd/346.real-time-viewer.umd.min.js +2 -0
- package/build/umd/346.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
- package/build/umd/350.real-time-viewer.umd.min.js +2 -0
- package/build/umd/350.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
- package/build/umd/375.real-time-viewer.umd.min.js +2 -0
- package/build/umd/375.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
- package/build/umd/583.real-time-viewer.umd.min.js +2 -0
- package/build/umd/583.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
- package/build/umd/702.real-time-viewer.umd.min.js +2 -0
- package/build/umd/702.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
- package/build/umd/794.real-time-viewer.umd.min.js +2 -0
- package/build/umd/794.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
- package/build/umd/799.real-time-viewer.umd.min.js +2 -0
- package/build/umd/799.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
- package/build/umd/979.real-time-viewer.umd.min.js +2 -0
- package/build/umd/979.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
- package/build/umd/real-time-viewer.umd.min.js +1 -1
- package/build/umd/report.html +1 -1
- package/package.json +16 -13
package/build/esm/index.js
CHANGED
|
@@ -49,7 +49,8 @@ import { Matrix as Matrix$1, Vector3 as Vector3$1 } from '@babylonjs/core/Maths/
|
|
|
49
49
|
import { EngineFactory } from '@babylonjs/core/Engines/engineFactory';
|
|
50
50
|
import { Scene } from '@babylonjs/core/scene';
|
|
51
51
|
import { DracoCompression } from '@babylonjs/core/Meshes/Compression/dracoCompression';
|
|
52
|
-
import {
|
|
52
|
+
import { LoadAssetContainerAsync } from '@babylonjs/core/Loading/index';
|
|
53
|
+
import { VertexBuffer } from '@babylonjs/core/Buffers/buffer';
|
|
53
54
|
import '@babylonjs/loaders/glTF/2.0/';
|
|
54
55
|
import { UniversalCamera } from '@babylonjs/core/Cameras/universalCamera';
|
|
55
56
|
import { WebGPUEngine } from '@babylonjs/core';
|
|
@@ -519,11 +520,12 @@ function Grids () {
|
|
|
519
520
|
var _neighbourSize = (_neighbourBottom$plan3 = (_neighbourBottom$plan4 = neighbourBottom.plannedElement) === null || _neighbourBottom$plan4 === void 0 ? void 0 : _neighbourBottom$plan4.size) !== null && _neighbourBottom$plan3 !== void 0 ? _neighbourBottom$plan3 : gp.selectedElement.size;
|
|
520
521
|
pos = new Vector3(neighbourElementBottom.bbn.position.x + size.width / 200, neighbourElementBottom.bbn.position.y + (_neighbourSize.height + size.height / 2) / 100, 0);
|
|
521
522
|
} else if (cell.index.x == -1 && neighbourRight) {
|
|
523
|
+
var _neighbourElementRigh;
|
|
522
524
|
var neighbourElementRight = sceneStore.elements.find(function (el) {
|
|
523
525
|
var _elementId$toString;
|
|
524
526
|
return el.hqs.name.endsWith((_elementId$toString = neighbourRight.plannedElement.elementId.toString()) !== null && _elementId$toString !== void 0 ? _elementId$toString : "-1");
|
|
525
527
|
});
|
|
526
|
-
pos = new Vector3(neighbourElementRight.bbn.position.x - size.width / 200, size.height / 200, 0);
|
|
528
|
+
pos = new Vector3(((_neighbourElementRigh = neighbourElementRight === null || neighbourElementRight === void 0 ? void 0 : neighbourElementRight.bbn.position.x) !== null && _neighbourElementRigh !== void 0 ? _neighbourElementRigh : 0) - size.width / 200, size.height / 200, 0);
|
|
527
529
|
}
|
|
528
530
|
var box = createPreviewBox('box', name, {
|
|
529
531
|
width: (size.width + 1) / 100,
|
|
@@ -3198,6 +3200,8 @@ var customMat = /*#__PURE__*/function () {
|
|
|
3198
3200
|
var reCtrTex = new Texture(texture.url, _customMat.scene);
|
|
3199
3201
|
reCtrTex.uScale = texture.uScale;
|
|
3200
3202
|
reCtrTex.vScale = -texture.vScale;
|
|
3203
|
+
reCtrTex.wrapU = Texture.WRAP_ADDRESSMODE;
|
|
3204
|
+
reCtrTex.wrapV = Texture.WRAP_ADDRESSMODE;
|
|
3201
3205
|
reCtrTex.uOffset = 1;
|
|
3202
3206
|
reCtrTex.vOffset = -(1 - texture.vScale);
|
|
3203
3207
|
reCtrTex._mimeType = texture.url.endsWith('.jpg') ? 'image/jpeg' : 'image/png';
|
|
@@ -3220,6 +3224,8 @@ var customMat = /*#__PURE__*/function () {
|
|
|
3220
3224
|
parsedMat.baseTexture = doReCtrTex(parsedMat.baseTexture);
|
|
3221
3225
|
parsedMat.metallicRoughnessTexture = doReCtrTex(parsedMat.metallicRoughnessTexture);
|
|
3222
3226
|
parsedMat.normalTexture = doReCtrTex(parsedMat.normalTexture);
|
|
3227
|
+
parsedMat._useAlphaFromAlbedoTexture = false;
|
|
3228
|
+
parsedMat.transparencyMode = 0;
|
|
3223
3229
|
found = !!parsedMat.baseTexture;
|
|
3224
3230
|
if (!found) LOG$1.warn('MISSING_MATERIAL: could not get material ' + _customMat.name + ' for iln ' + _customMat.blob);
|
|
3225
3231
|
if (setDataRow) useUtilStoreContext().setAnalyzeDataRow({
|
|
@@ -3234,8 +3240,8 @@ var customMat = /*#__PURE__*/function () {
|
|
|
3234
3240
|
mat: parsedMat,
|
|
3235
3241
|
found: true
|
|
3236
3242
|
});
|
|
3237
|
-
case
|
|
3238
|
-
_context.prev =
|
|
3243
|
+
case 29:
|
|
3244
|
+
_context.prev = 29;
|
|
3239
3245
|
_context.t0 = _context["catch"](9);
|
|
3240
3246
|
if (setDataRow) useUtilStoreContext().setAnalyzeDataRow({
|
|
3241
3247
|
type: 'MAT',
|
|
@@ -3245,17 +3251,17 @@ var customMat = /*#__PURE__*/function () {
|
|
|
3245
3251
|
path: _customMat.blob,
|
|
3246
3252
|
sizeMb: 0
|
|
3247
3253
|
});
|
|
3248
|
-
case
|
|
3254
|
+
case 32:
|
|
3249
3255
|
mat = new PBRMetallicRoughnessMaterial(_customMat.name, sceneStore.scene);
|
|
3250
3256
|
return _context.abrupt("return", {
|
|
3251
3257
|
mat: mat,
|
|
3252
3258
|
found: true
|
|
3253
3259
|
});
|
|
3254
|
-
case
|
|
3260
|
+
case 34:
|
|
3255
3261
|
case "end":
|
|
3256
3262
|
return _context.stop();
|
|
3257
3263
|
}
|
|
3258
|
-
}, _callee, null, [[9,
|
|
3264
|
+
}, _callee, null, [[9, 29]]);
|
|
3259
3265
|
}));
|
|
3260
3266
|
return function customMat(_x) {
|
|
3261
3267
|
return _ref.apply(this, arguments);
|
|
@@ -3297,7 +3303,7 @@ function _findAssets() {
|
|
|
3297
3303
|
size = 0;
|
|
3298
3304
|
_context2.prev = 5;
|
|
3299
3305
|
_context2.next = 8;
|
|
3300
|
-
return
|
|
3306
|
+
return LoadAssetContainerAsync(path + geo.name + '.glb', sceneStore.scene);
|
|
3301
3307
|
case 8:
|
|
3302
3308
|
result = _context2.sent;
|
|
3303
3309
|
utilStore.setAnalyzeDataRow({
|
|
@@ -3319,9 +3325,16 @@ function _findAssets() {
|
|
|
3319
3325
|
mesh.metadata = {
|
|
3320
3326
|
lastUsed: Date.now()
|
|
3321
3327
|
};
|
|
3328
|
+
if (mesh._isMesh()) {
|
|
3329
|
+
mesh.removeVerticesData(VertexBuffer.ColorKind);
|
|
3330
|
+
} else {
|
|
3331
|
+
mesh.getChildMeshes().forEach(function (m) {
|
|
3332
|
+
return m.removeVerticesData(VertexBuffer.ColorKind);
|
|
3333
|
+
});
|
|
3334
|
+
}
|
|
3322
3335
|
return _context2.abrupt("return", mesh);
|
|
3323
|
-
case
|
|
3324
|
-
_context2.prev =
|
|
3336
|
+
case 23:
|
|
3337
|
+
_context2.prev = 23;
|
|
3325
3338
|
_context2.t0 = _context2["catch"](5);
|
|
3326
3339
|
(_sceneStore$onMissing = sceneStore.onMissingGeo) === null || _sceneStore$onMissing === void 0 || _sceneStore$onMissing.call(sceneStore);
|
|
3327
3340
|
utilStore.setAnalyzeDataRow({
|
|
@@ -3333,11 +3346,11 @@ function _findAssets() {
|
|
|
3333
3346
|
found: false
|
|
3334
3347
|
});
|
|
3335
3348
|
return _context2.abrupt("return", undefined);
|
|
3336
|
-
case
|
|
3349
|
+
case 28:
|
|
3337
3350
|
case "end":
|
|
3338
3351
|
return _context2.stop();
|
|
3339
3352
|
}
|
|
3340
|
-
}, _callee2, null, [[5,
|
|
3353
|
+
}, _callee2, null, [[5, 23]]);
|
|
3341
3354
|
}));
|
|
3342
3355
|
return _importGeo.apply(this, arguments);
|
|
3343
3356
|
};
|
|
@@ -3945,15 +3958,15 @@ function findMaterials(cache) {
|
|
|
3945
3958
|
if (mesh) {
|
|
3946
3959
|
var _mesh$metadata;
|
|
3947
3960
|
var depth = getDepth(mesh, parent);
|
|
3948
|
-
if (mesh.material && ((_mesh$metadata = mesh.metadata) === null || _mesh$metadata === void 0 ? void 0 : _mesh$metadata[
|
|
3961
|
+
if (mesh.material && ((_mesh$metadata = mesh.metadata) === null || _mesh$metadata === void 0 ? void 0 : _mesh$metadata['matLevel']) < depth) return;
|
|
3949
3962
|
matsOnMeshes[onNode.uniqueId] = {
|
|
3950
3963
|
mat: mat,
|
|
3951
3964
|
onNode: onNode
|
|
3952
3965
|
};
|
|
3953
3966
|
mesh.material = mat;
|
|
3954
3967
|
if (!mesh.metadata) mesh.metadata = {
|
|
3955
|
-
|
|
3956
|
-
};else mesh.metadata[
|
|
3968
|
+
matLevel: depth
|
|
3969
|
+
};else mesh.metadata['matLevel'] = depth;
|
|
3957
3970
|
}
|
|
3958
3971
|
}
|
|
3959
3972
|
var _iterator = _createForOfIteratorHelper$1(onNode.getChildMeshes()),
|
|
@@ -3972,7 +3985,7 @@ function findMaterials(cache) {
|
|
|
3972
3985
|
})) return 0; // continue
|
|
3973
3986
|
}
|
|
3974
3987
|
var depth = getDepth(mesh, parent);
|
|
3975
|
-
if (mesh.material && ((_mesh$metadata2 = mesh.metadata) === null || _mesh$metadata2 === void 0 ? void 0 : _mesh$metadata2[
|
|
3988
|
+
if (mesh.material && ((_mesh$metadata2 = mesh.metadata) === null || _mesh$metadata2 === void 0 ? void 0 : _mesh$metadata2['matLevel']) < depth) return {
|
|
3976
3989
|
v: void 0
|
|
3977
3990
|
};
|
|
3978
3991
|
matsOnMeshes[mesh.uniqueId] = {
|
|
@@ -3981,8 +3994,8 @@ function findMaterials(cache) {
|
|
|
3981
3994
|
};
|
|
3982
3995
|
mesh.material = mat;
|
|
3983
3996
|
if (!mesh.metadata) mesh.metadata = {
|
|
3984
|
-
|
|
3985
|
-
};else mesh.metadata[
|
|
3997
|
+
matLevel: depth
|
|
3998
|
+
};else mesh.metadata['matLevel'] = depth;
|
|
3986
3999
|
},
|
|
3987
4000
|
_ret;
|
|
3988
4001
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
@@ -4002,7 +4015,7 @@ function findMaterials(cache) {
|
|
|
4002
4015
|
if (!mat.onNodes) return;
|
|
4003
4016
|
var children = parent.getChildTransformNodes(false);
|
|
4004
4017
|
var childMeshes = parent.getChildMeshes(true);
|
|
4005
|
-
if (onNode ==
|
|
4018
|
+
if (onNode == '' || onNode == 'ALL') childMeshes.forEach(function (cm) {
|
|
4006
4019
|
return setMaterials(cm, mat.mat, parent);
|
|
4007
4020
|
});
|
|
4008
4021
|
var _iterator2 = _createForOfIteratorHelper$1(children),
|
|
@@ -4010,7 +4023,7 @@ function findMaterials(cache) {
|
|
|
4010
4023
|
try {
|
|
4011
4024
|
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
4012
4025
|
var child = _step2.value;
|
|
4013
|
-
if (onNode ==
|
|
4026
|
+
if (onNode == '' || onNode == 'ALL') setMaterials(child, mat.mat, parent);
|
|
4014
4027
|
if (child.name.startsWith(onNode) || child.name.startsWith('geo_') && child.name.includes(onNode)) {
|
|
4015
4028
|
setMaterials(child, mat.mat, parent);
|
|
4016
4029
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/CustomMaterial/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,4BAA4B,EAAE,MAAM,4DAA4D,CAAC;AAK1G,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C;AAGD,QAAA,MAAM,SAAS,cAAqB,cAAc,eAAc,OAAO,KAAU,OAAO,CAAC;IAAE,GAAG,EAAE,4BAA4B,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/CustomMaterial/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,4BAA4B,EAAE,MAAM,4DAA4D,CAAC;AAK1G,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C;AAGD,QAAA,MAAM,SAAS,cAAqB,cAAc,eAAc,OAAO,KAAU,OAAO,CAAC;IAAE,GAAG,EAAE,4BAA4B,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAsD7I,CAAC;AAEF,eAAe,SAAS,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/parser/findAssets/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAGrE,OAAO,EAAE,UAAU,EAAW,MAAM,UAAU,CAAC;AAE/C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/parser/findAssets/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAGrE,OAAO,EAAE,UAAU,EAAW,MAAM,UAAU,CAAC;AAE/C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAMpC,wBAA8B,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE;;;GA0J1E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/parser/findMaterials/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAY,MAAM,aAAa,CAAC;AAM9C,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/parser/findMaterials/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAY,MAAM,aAAa,CAAC;AAM9C,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,wBAsFnD"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! For license information please see 105.real-time-viewer.umd.min.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[105],{56105:(e,t,n)=>{n.r(t),n.d(t,{volumetricLightingBlendVolumePixelShaderWGSL:()=>a});var r=n(17416);const i="volumetricLightingBlendVolumePixelShader",u="varying vUV: vec2f;var textureSamplerSampler: sampler;var textureSampler: texture_2d<f32>;var depthSampler: texture_2d<f32>;uniform invProjection: mat4x4<f32>;uniform outputTextureSize: vec2f;\n#ifdef USE_EXTINCTION\nuniform extinction: vec3f;\n#endif\n#define CUSTOM_FRAGMENT_DEFINITIONS\n@fragment\nfn main(input: FragmentInputs)->FragmentOutputs {fragmentOutputs.color=textureSample(textureSampler,textureSamplerSampler,input.vUV);\n#ifdef USE_EXTINCTION\nlet depth=textureLoad(depthSampler,vec2u(fragmentInputs.position.xy),0).r;let ndc=vec4f((fragmentInputs.position.xy/uniforms.outputTextureSize)*2.-1.,depth,1.0);var viewPos=uniforms.invProjection*ndc;viewPos=viewPos/viewPos.w;let eyeDist=length(viewPos);fragmentOutputs.color2=vec4f(exp(-uniforms.extinction*eyeDist),1.0);\n#endif\n}\n";r.v.ShadersStoreWGSL[i]||(r.v.ShadersStoreWGSL[i]=u);const a={name:i,shader:u}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! filename:105 */
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! For license information please see 214.real-time-viewer.umd.min.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[214],{37214:(e,i,t)=>{t.r(i),t.d(i,{volumetricLightingRenderVolumePixelShader:()=>l});var r=t(17416);t(33560),t(2889);const n="volumetricLightingRenderVolumePixelShader",o="#include<__decl__sceneFragment>\nuniform mat4 invViewProjection;uniform vec3 lightDir; \nuniform vec2 outputTextureSize;uniform vec4 extinctionPhaseG;uniform vec3 lightPower;uniform vec2 textureRatio;uniform sampler2D depthTexture;varying vec4 vWorldPos;float henyeyGreenstein(float g,float cosTheta) {float denom=1.0+g*g-2.0*g*cosTheta;return 1.0/(4.0*3.14159265)*(1.0-g*g)/(denom*sqrt(max(denom,0.0)));}\nvec3 integrateDirectional(float eyeDist,vec3 viewDir,vec3 lightDir) {float phaseG=extinctionPhaseG.w;\n#ifdef USE_EXTINCTION\nvec3 extinction=extinctionPhaseG.xyz;return henyeyGreenstein(phaseG,dot(viewDir,lightDir))*(vec3(1.0)-exp(-extinction*eyeDist))/extinction;\n#else\nreturn vec3(henyeyGreenstein(phaseG,dot(viewDir,lightDir)))*vec3(eyeDist);\n#endif\n}\nvoid main(void) {float depth=texelFetch(depthTexture,ivec2(gl_FragCoord.xy*textureRatio),0).r;vec4 worldPos=vWorldPos;if (gl_FragCoord.z>depth) {vec4 ndc=vec4((gl_FragCoord.xy/outputTextureSize)*2.0-1.0,depth*2.0-1.0,1.0);worldPos=invViewProjection*ndc;worldPos=worldPos/worldPos.w;}\nvec3 viewDir=worldPos.xyz-vEyePosition.xyz;float eyeDist=length(viewDir);viewDir=viewDir/eyeDist;float fSign=gl_FrontFacing ? 1.0 : -1.0;vec3 integral=integrateDirectional(eyeDist,-viewDir,lightDir);gl_FragColor=vec4(lightPower*integral*fSign,1.0);}\n";r.v.ShadersStore[n]||(r.v.ShadersStore[n]=o);const l={name:n,shader:o}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! filename:214 */
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! For license information please see 245.real-time-viewer.umd.min.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[245],{44245:(e,i,r)=>{r.r(i),r.d(i,{volumetricLightingBlendVolumePixelShader:()=>l});var n=r(17416);const t="volumetricLightingBlendVolumePixelShader",o="varying vec2 vUV;uniform sampler2D textureSampler;uniform sampler2D depthSampler;uniform mat4 invProjection;uniform vec2 outputTextureSize;\n#ifdef USE_EXTINCTION\nuniform vec3 extinction;\n#endif\n#define CUSTOM_FRAGMENT_DEFINITIONS\nvoid main(void) {gl_FragColor=texture2D(textureSampler,vUV);\n#ifdef USE_EXTINCTION\nfloat depth=texelFetch(depthSampler,ivec2(gl_FragCoord.xy),0).r;vec4 ndc=vec4((gl_FragCoord.xy/outputTextureSize)*2.-1.,depth*2.-1.,1.0);vec4 viewPos=invProjection*ndc;viewPos=viewPos/viewPos.w;float eyeDist=length(viewPos);gl_FragColor2=vec4(exp(-extinction*eyeDist),1.0);\n#endif\n}\n";n.v.ShadersStore[t]||(n.v.ShadersStore[t]=o);const l={name:t,shader:o}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! filename:245 */
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! For license information please see 271.real-time-viewer.umd.min.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[271],{28271:(e,n,t)=>{t.r(n),t.d(n,{selectionVertexShaderWGSL:()=>d});var i=t(17416);t(97762),t(31990),t(19120),t(46212),t(80870),t(42724),t(56403),t(39966),t(49413),t(58333),t(28439),t(56601);const r="selectionVertexShader",f="attribute position: vec3f;\n#ifdef INSTANCES\nattribute instanceSelectionId: f32;\n#endif\n#include<bonesDeclaration>\n#include<bakedVertexAnimationDeclaration>\n#include<morphTargetsVertexGlobalDeclaration>\n#include<morphTargetsVertexDeclaration>[0..maxSimultaneousMorphTargets]\n#include<clipPlaneVertexDeclaration>\n#include<instancesDeclaration>\nuniform viewProjection: mat4x4f;\n#ifdef STORE_CAMERASPACE_Z\nuniform view: mat4x4f;\n#else\nuniform depthValues: vec2f;\n#endif\n#ifdef INSTANCES\nflat varying vSelectionId: f32;\n#endif\n#ifdef STORE_CAMERASPACE_Z\nvarying vViewPosZ: f32;\n#else\nvarying vDepthMetric: f32;\n#endif\n#ifdef ALPHATEST\nvarying vUV: vec2f;uniform diffuseMatrix: mat4x4f; \n#ifdef UV1\nattribute uv: vec2f;\n#endif\n#ifdef UV2\nattribute uv2: vec2f;\n#endif\n#endif\n#define CUSTOM_VERTEX_DEFINITIONS\n@vertex\nfn main(input: VertexInputs)->FragmentInputs {\n#define CUSTOM_VERTEX_MAIN_BEGIN\nvar positionUpdated: vec3f=vertexInputs.position;\n#ifdef UV1\nvar uvUpdated: vec2f=vertexInputs.uv;\n#endif\n#ifdef UV2\nvar uv2Updated: vec2f=vertexInputs.uv2;\n#endif\n#include<morphTargetsVertexGlobal>\n#include<morphTargetsVertex>[0..maxSimultaneousMorphTargets]\n#include<instancesVertex>\n#include<bonesVertex>\n#include<bakedVertexAnimation>\nvar worldPos: vec4f=finalWorld*vec4f(positionUpdated,1.0);vertexOutputs.position=uniforms.viewProjection*worldPos;\n#ifdef ALPHATEST\n#ifdef UV1\nvertexOutputs.vUV=(uniforms.diffuseMatrix*vec4f(uvUpdated,1.0,0.0)).xy;\n#endif\n#ifdef UV2\nvertexOutputs.vUV=(uniforms.diffuseMatrix*vec4f(uv2Updated,1.0,0.0)).xy;\n#endif\n#endif\n#ifdef STORE_CAMERASPACE_Z\nvertexOutputs.vViewPosZ=(uniforms.view*worldPos).z;\n#else\n#ifdef USE_REVERSE_DEPTHBUFFER\nvertexOutputs.vDepthMetric=((-vertexOutputs.position.z+uniforms.depthValues.x)/(uniforms.depthValues.y));\n#else\nvertexOutputs.vDepthMetric=((vertexOutputs.position.z+uniforms.depthValues.x)/(uniforms.depthValues.y));\n#endif\n#endif\n#ifdef INSTANCES\nvertexOutputs.vSelectionId=vertexInputs.instanceSelectionId;\n#endif\n#include<clipPlaneVertex>\n#define CUSTOM_VERTEX_MAIN_END\n}\n";i.v.ShadersStoreWGSL[r]||(i.v.ShadersStoreWGSL[r]=f);const d={name:r,shader:f}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! filename:271 */
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! For license information please see 281.real-time-viewer.umd.min.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[281],{62281:(e,n,i)=>{i.r(n),i.d(n,{selectionVertexShader:()=>r});var t=i(17416);i(33827),i(72335),i(58059),i(12230),i(60110),i(34122),i(58107),i(93592),i(39449),i(86096),i(73749),i(43888);const d="selectionVertexShader",a="attribute vec3 position;\n#ifdef INSTANCES\nattribute float instanceSelectionId;\n#endif\n#include<bonesDeclaration>\n#include<bakedVertexAnimationDeclaration>\n#include<morphTargetsVertexGlobalDeclaration>\n#include<morphTargetsVertexDeclaration>[0..maxSimultaneousMorphTargets]\n#include<clipPlaneVertexDeclaration>\n#include<instancesDeclaration>\nuniform mat4 viewProjection;\n#ifdef STORE_CAMERASPACE_Z\nuniform mat4 view;\n#else\nuniform vec2 depthValues;\n#endif\n#ifdef INSTANCES\nflat varying float vSelectionId;\n#endif\n#ifdef STORE_CAMERASPACE_Z\nvarying float vViewPosZ;\n#else\nvarying float vDepthMetric;\n#endif\n#ifdef ALPHATEST\nvarying vec2 vUV;uniform mat4 diffuseMatrix;\n#ifdef UV1\nattribute vec2 uv;\n#endif\n#ifdef UV2\nattribute vec2 uv2;\n#endif\n#endif\n#define CUSTOM_VERTEX_DEFINITIONS\nvoid main(void) {\n#define CUSTOM_VERTEX_MAIN_BEGIN\nvec3 positionUpdated=position;\n#ifdef UV1\nvec2 uvUpdated=uv;\n#endif\n#ifdef UV2\nvec2 uv2Updated=uv2;\n#endif\n#include<morphTargetsVertexGlobal>\n#include<morphTargetsVertex>[0..maxSimultaneousMorphTargets]\n#include<instancesVertex>\n#include<bonesVertex>\n#include<bakedVertexAnimation>\nvec4 worldPos=finalWorld*vec4(positionUpdated,1.0);gl_Position=viewProjection*worldPos;\n#ifdef ALPHATEST\n#ifdef UV1\nvUV=vec2(diffuseMatrix*vec4(uvUpdated,1.0,0.0));\n#endif\n#ifdef UV2\nvUV=vec2(diffuseMatrix*vec4(uv2Updated,1.0,0.0));\n#endif\n#endif\n#ifdef STORE_CAMERASPACE_Z\nvViewPosZ=(view*worldPos).z;\n#else\n#ifdef USE_REVERSE_DEPTHBUFFER\nvDepthMetric=((-gl_Position.z+depthValues.x)/(depthValues.y));\n#else\nvDepthMetric=((gl_Position.z+depthValues.x)/(depthValues.y));\n#endif\n#endif\n#ifdef INSTANCES\nvSelectionId=instanceSelectionId;\n#endif\n#include<clipPlaneVertex>\n#define CUSTOM_VERTEX_MAIN_END\n}\n";t.v.ShadersStore[d]||(t.v.ShadersStore[d]=a);const r={name:d,shader:a}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! filename:281 */
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! For license information please see 305.real-time-viewer.umd.min.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[305],{55305:(e,r,o)=>{o.r(r),o.d(r,{oitFinalSimpleBlendPixelShader:()=>n});var l=o(17416);const i="oitFinalSimpleBlendPixelShader",a="precision highp float;uniform sampler2D uFrontColor;void main() {ivec2 fragCoord=ivec2(gl_FragCoord.xy);vec4 frontColor=texelFetch(uFrontColor,fragCoord,0);glFragColor=frontColor;}\n";l.v.ShadersStore[i]||(l.v.ShadersStore[i]=a);const n={name:i,shader:a}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! filename:305 */
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! For license information please see 346.real-time-viewer.umd.min.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[346],{61346:(e,t,l)=>{l.r(t),l.d(t,{selectionOutlinePixelShaderWGSL:()=>s});var n=l(17416);const o="selectionOutlinePixelShader",r="var maskSamplerSampler: sampler;var maskSampler: texture_2d<f32>;var depthSamplerSampler: sampler;var depthSampler: texture_2d<f32>;varying vUV: vec2f;uniform screenSize: vec2f;uniform outlineColor: vec3f;uniform outlineThickness: f32;uniform occlusionStrength: f32;uniform occlusionThreshold: f32;\n#define CUSTOM_FRAGMENT_DEFINITIONS\n@fragment\nfn main(input: FragmentInputs)->FragmentOutputs {\n#define CUSTOM_FRAGMENT_MAIN_BEGIN\nlet texelSize: vec2f=1.0/uniforms.screenSize;let sampleOffset: vec2f=texelSize*uniforms.outlineThickness;\n#if defined(OUTLINELAYER_SAMPLING_TRIDIRECTIONAL) || defined(OUTLINELAYER_SAMPLING_OCTADIRECTIONAL)\nlet maskTopCenter: vec2f=textureSampleLevel(maskSampler,maskSamplerSampler,fragmentInputs.vUV+vec2f(0.0,sampleOffset.y),0.0).rg;let maskTopRight: vec2f=textureSampleLevel(maskSampler,maskSamplerSampler,fragmentInputs.vUV+sampleOffset,0.0).rg;let maskMiddleCenter: vec2f=textureSampleLevel(maskSampler,maskSamplerSampler,fragmentInputs.vUV,0.0).rg;let maskMiddleRight: vec2f=textureSampleLevel(maskSampler,maskSamplerSampler,fragmentInputs.vUV+vec2f(sampleOffset.x,0.0),0.0).rg;\n#endif\n#if defined(OUTLINELAYER_SAMPLING_OCTADIRECTIONAL)\nlet maskTopLeft: vec2f=textureSampleLevel(maskSampler,maskSamplerSampler,fragmentInputs.vUV+vec2f(-sampleOffset.x,sampleOffset.y),0.0).rg;let maskMiddleLeft: vec2f=textureSampleLevel(maskSampler,maskSamplerSampler,fragmentInputs.vUV+vec2f(-sampleOffset.x,0.0),0.0).rg;let maskBottomRight: vec2f=textureSampleLevel(maskSampler,maskSamplerSampler,fragmentInputs.vUV+vec2f(sampleOffset.x,-sampleOffset.y),0.0).rg;let maskBottomCenter: vec2f=textureSampleLevel(maskSampler,maskSamplerSampler,fragmentInputs.vUV+vec2f(0.0,-sampleOffset.y),0.0).rg;let maskBottomLeft: vec2f=textureSampleLevel(maskSampler,maskSamplerSampler,fragmentInputs.vUV+vec2f(-sampleOffset.x,-sampleOffset.y),0.0).rg;\n#endif\n#ifdef OUTLINELAYER_SAMPLING_TRIDIRECTIONAL\nlet gradient: vec3f=vec3f(\nmaskMiddleCenter.r-maskMiddleRight.r,\nmaskMiddleCenter.r-maskTopCenter.r,\nmaskMiddleCenter.r-maskTopRight.r\n);let edgeStrength: f32=length(gradient);\n#elif defined(OUTLINELAYER_SAMPLING_OCTADIRECTIONAL)\nlet gradientX: f32 =\n(maskTopLeft.r+2.0*maskMiddleLeft.r+maskBottomLeft.r) -\n(maskTopRight.r+2.0*maskMiddleRight.r+maskBottomRight.r);let gradientY: f32 =\n(maskBottomLeft.r+2.0*maskBottomCenter.r+maskBottomRight.r) -\n(maskTopLeft.r+2.0*maskTopCenter.r+maskTopRight.r);let edgeStrength: f32=length(vec2f(gradientX,gradientY));\n#endif\nlet outlineMask: f32=step(0.5,edgeStrength); \n#if defined(OUTLINELAYER_SAMPLING_TRIDIRECTIONAL) || defined(OUTLINELAYER_SAMPLING_OCTADIRECTIONAL)\nlet depthTopCenter: f32=textureSampleLevel(depthSampler,depthSamplerSampler,fragmentInputs.vUV+vec2f(0.0,sampleOffset.y),0.0).r;let depthTopRight: f32=textureSampleLevel(depthSampler,depthSamplerSampler,fragmentInputs.vUV+sampleOffset,0.0).r;let depthMiddleCenter: f32=textureSampleLevel(depthSampler,depthSamplerSampler,fragmentInputs.vUV,0.0).r;let depthMiddleRight: f32=textureSampleLevel(depthSampler,depthSamplerSampler,fragmentInputs.vUV+vec2f(sampleOffset.x,0.0),0.0).r;\n#endif\n#if defined(OUTLINELAYER_SAMPLING_OCTADIRECTIONAL)\nlet depthTopLeft: f32=textureSampleLevel(depthSampler,depthSamplerSampler,fragmentInputs.vUV+vec2f(-sampleOffset.x,sampleOffset.y),0.0).r;let depthMiddleLeft: f32=textureSampleLevel(depthSampler,depthSamplerSampler,fragmentInputs.vUV+vec2f(-sampleOffset.x,0.0),0.0).r;let depthBottomRight: f32=textureSampleLevel(depthSampler,depthSamplerSampler,fragmentInputs.vUV+vec2f(sampleOffset.x,-sampleOffset.y),0.0).r;let depthBottomCenter: f32=textureSampleLevel(depthSampler,depthSamplerSampler,fragmentInputs.vUV+vec2f(0.0,-sampleOffset.y),0.0).r;let depthBottomLeft: f32=textureSampleLevel(depthSampler,depthSamplerSampler,fragmentInputs.vUV+vec2f(-sampleOffset.x,-sampleOffset.y),0.0).r;\n#endif\n#if defined(OUTLINELAYER_SAMPLING_TRIDIRECTIONAL) || defined(OUTLINELAYER_SAMPLING_OCTADIRECTIONAL)\nlet occlusionTopCenter: f32=step(uniforms.occlusionThreshold,abs(maskTopCenter.g-depthTopCenter));let occlusionTopRight: f32=step(uniforms.occlusionThreshold,abs(maskTopRight.g-depthTopRight));let occlusionMiddleCenter: f32=step(uniforms.occlusionThreshold,abs(maskMiddleCenter.g-depthMiddleCenter));let occlusionMiddleRight: f32=step(uniforms.occlusionThreshold,abs(maskMiddleRight.g-depthMiddleRight));\n#endif\n#if defined(OUTLINELAYER_SAMPLING_OCTADIRECTIONAL)\nlet occlusionTopLeft: f32=step(uniforms.occlusionThreshold,abs(maskTopLeft.g-depthTopLeft));let occlusionMiddleLeft: f32=step(uniforms.occlusionThreshold,abs(maskMiddleLeft.g-depthMiddleLeft));let occlusionBottomRight: f32=step(uniforms.occlusionThreshold,abs(maskBottomRight.g-depthBottomRight));let occlusionBottomCenter: f32=step(uniforms.occlusionThreshold,abs(maskBottomCenter.g-depthBottomCenter));let occlusionBottomLeft: f32=step(uniforms.occlusionThreshold,abs(maskBottomLeft.g-depthBottomLeft));\n#endif\nvar occlusionFactor: f32=occlusionMiddleCenter;\n#ifdef OUTLINELAYER_SAMPLING_TRIDIRECTIONAL\nocclusionFactor=min(occlusionFactor,occlusionTopCenter);occlusionFactor=min(occlusionFactor,occlusionTopRight);occlusionFactor=min(occlusionFactor,occlusionMiddleRight);\n#elif defined(OUTLINELAYER_SAMPLING_OCTADIRECTIONAL)\nocclusionFactor=min(occlusionFactor,occlusionTopCenter);occlusionFactor=min(occlusionFactor,occlusionTopRight);occlusionFactor=min(occlusionFactor,occlusionTopLeft);occlusionFactor=min(occlusionFactor,occlusionMiddleRight);occlusionFactor=min(occlusionFactor,occlusionMiddleLeft);occlusionFactor=min(occlusionFactor,occlusionBottomRight);occlusionFactor=min(occlusionFactor,occlusionBottomCenter);occlusionFactor=min(occlusionFactor,occlusionBottomLeft);\n#endif\nlet finalOutlineMask: f32=outlineMask*(1.0-uniforms.occlusionStrength*occlusionFactor);fragmentOutputs.color=vec4f(uniforms.outlineColor,finalOutlineMask);\n#define CUSTOM_FRAGMENT_MAIN_END\n}\n";n.v.ShadersStoreWGSL[o]||(n.v.ShadersStoreWGSL[o]=r);const s={name:o,shader:r}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! filename:346 */
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! For license information please see 350.real-time-viewer.umd.min.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[350],{26350:(e,r,t)=>{t.r(r),t.d(r,{oitFinalSimpleBlendPixelShaderWGSL:()=>i});var n=t(17416);const a="oitFinalSimpleBlendPixelShader",o="var uFrontColor: texture_2d<f32>;@fragment\nfn main(input: FragmentInputs)->FragmentOutputs {var fragCoord: vec2i=vec2i(fragmentInputs.position.xy);var frontColor: vec4f=textureLoad(uFrontColor,fragCoord,0);fragmentOutputs.color=frontColor;}\n";n.v.ShadersStoreWGSL[a]||(n.v.ShadersStoreWGSL[a]=o);const i={name:a,shader:o}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! filename:350 */
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! For license information please see 375.real-time-viewer.umd.min.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[375],{71375:(e,t,o)=>{o.r(t),o.d(t,{selectionOutlinePixelShader:()=>l});var n=o(17416);const s="selectionOutlinePixelShader",i="uniform sampler2D maskSampler;uniform sampler2D depthSampler;varying vec2 vUV;uniform vec2 screenSize;uniform vec3 outlineColor;uniform float outlineThickness;uniform float occlusionStrength;uniform float occlusionThreshold;\n#define CUSTOM_FRAGMENT_DEFINITIONS\nvoid main(void) {\n#define CUSTOM_FRAGMENT_MAIN_BEGIN\nvec2 texelSize=1.0/screenSize;vec2 sampleOffset=texelSize*outlineThickness;\n#if defined(OUTLINELAYER_SAMPLING_TRIDIRECTIONAL) || defined(OUTLINELAYER_SAMPLING_OCTADIRECTIONAL)\nvec2 maskTopCenter=texture2D(maskSampler,vUV+vec2(0.0,sampleOffset.y)).rg;vec2 maskTopRight=texture2D(maskSampler,vUV+sampleOffset).rg;vec2 maskMiddleCenter=texture2D(maskSampler,vUV).rg;vec2 maskMiddleRight=texture2D(maskSampler,vUV+vec2(sampleOffset.x,0.0)).rg;\n#endif\n#if defined(OUTLINELAYER_SAMPLING_OCTADIRECTIONAL)\nvec2 maskTopLeft=texture2D(maskSampler,vUV+vec2(-sampleOffset.x,sampleOffset.y)).rg;vec2 maskMiddleLeft=texture2D(maskSampler,vUV+vec2(-sampleOffset.x,0.0)).rg;vec2 maskBottomRight=texture2D(maskSampler,vUV+vec2(sampleOffset.x,-sampleOffset.y)).rg;vec2 maskBottomCenter=texture2D(maskSampler,vUV+vec2(0.0,-sampleOffset.y)).rg;vec2 maskBottomLeft=texture2D(maskSampler,vUV+vec2(-sampleOffset.x,-sampleOffset.y)).rg;\n#endif\n#ifdef OUTLINELAYER_SAMPLING_TRIDIRECTIONAL\nvec3 gradient=vec3(\nmaskMiddleCenter.r-maskMiddleRight.r,\nmaskMiddleCenter.r-maskTopCenter.r,\nmaskMiddleCenter.r-maskTopRight.r\n);float edgeStrength=length(gradient);\n#elif defined(OUTLINELAYER_SAMPLING_OCTADIRECTIONAL)\nfloat gradientX=\n(maskTopLeft.r+2.0*maskMiddleLeft.r+maskBottomLeft.r) -\n(maskTopRight.r+2.0*maskMiddleRight.r+maskBottomRight.r);float gradientY=\n(maskBottomLeft.r+2.0*maskBottomCenter.r+maskBottomRight.r) -\n(maskTopLeft.r+2.0*maskTopCenter.r+maskTopRight.r);float edgeStrength=length(vec2(gradientX,gradientY));\n#endif\nfloat outlineMask=step(0.5,edgeStrength); \n#if defined(OUTLINELAYER_SAMPLING_TRIDIRECTIONAL) || defined(OUTLINELAYER_SAMPLING_OCTADIRECTIONAL)\nfloat depthTopCenter=texture2D(depthSampler,vUV+vec2(0.0,sampleOffset.y)).r;float depthTopRight=texture2D(depthSampler,vUV+sampleOffset).r;float depthMiddleCenter=texture2D(depthSampler,vUV).r;float depthMiddleRight=texture2D(depthSampler,vUV+vec2(sampleOffset.x,0.0)).r;\n#endif\n#if defined(OUTLINELAYER_SAMPLING_OCTADIRECTIONAL)\nfloat depthTopLeft=texture2D(depthSampler,vUV+vec2(-sampleOffset.x,sampleOffset.y)).r;float depthMiddleLeft=texture2D(depthSampler,vUV+vec2(-sampleOffset.x,0.0)).r;float depthBottomRight=texture2D(depthSampler,vUV+vec2(sampleOffset.x,-sampleOffset.y)).r;float depthBottomCenter=texture2D(depthSampler,vUV+vec2(0.0,-sampleOffset.y)).r;float depthBottomLeft=texture2D(depthSampler,vUV+vec2(-sampleOffset.x,-sampleOffset.y)).r;\n#endif\n#if defined(OUTLINELAYER_SAMPLING_TRIDIRECTIONAL) || defined(OUTLINELAYER_SAMPLING_OCTADIRECTIONAL)\nfloat occlusionTopCenter=step(occlusionThreshold,abs(maskTopCenter.g-depthTopCenter));float occlusionTopRight=step(occlusionThreshold,abs(maskTopRight.g-depthTopRight));float occlusionMiddleCenter=step(occlusionThreshold,abs(maskMiddleCenter.g-depthMiddleCenter));float occlusionMiddleRight=step(occlusionThreshold,abs(maskMiddleRight.g-depthMiddleRight));\n#endif\n#if defined(OUTLINELAYER_SAMPLING_OCTADIRECTIONAL)\nfloat occlusionTopLeft=step(occlusionThreshold,abs(maskTopLeft.g-depthTopLeft));float occlusionMiddleLeft=step(occlusionThreshold,abs(maskMiddleLeft.g-depthMiddleLeft));float occlusionBottomRight=step(occlusionThreshold,abs(maskBottomRight.g-depthBottomRight));float occlusionBottomCenter=step(occlusionThreshold,abs(maskBottomCenter.g-depthBottomCenter));float occlusionBottomLeft=step(occlusionThreshold,abs(maskBottomLeft.g-depthBottomLeft));\n#endif\nfloat occlusionFactor=occlusionMiddleCenter;\n#ifdef OUTLINELAYER_SAMPLING_TRIDIRECTIONAL\nocclusionFactor=min(occlusionFactor,occlusionTopCenter);occlusionFactor=min(occlusionFactor,occlusionTopRight);occlusionFactor=min(occlusionFactor,occlusionMiddleRight);\n#elif defined(OUTLINELAYER_SAMPLING_OCTADIRECTIONAL)\nocclusionFactor=min(occlusionFactor,occlusionTopCenter);occlusionFactor=min(occlusionFactor,occlusionTopRight);occlusionFactor=min(occlusionFactor,occlusionTopLeft);occlusionFactor=min(occlusionFactor,occlusionMiddleRight);occlusionFactor=min(occlusionFactor,occlusionMiddleLeft);occlusionFactor=min(occlusionFactor,occlusionBottomRight);occlusionFactor=min(occlusionFactor,occlusionBottomCenter);occlusionFactor=min(occlusionFactor,occlusionBottomLeft);\n#endif\nfloat finalOutlineMask=outlineMask*(1.0-occlusionStrength*occlusionFactor);gl_FragColor=vec4(outlineColor,finalOutlineMask);\n#define CUSTOM_FRAGMENT_MAIN_END\n}\n";n.v.ShadersStore[s]||(n.v.ShadersStore[s]=i);const l={name:s,shader:i}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! filename:375 */
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! For license information please see 583.real-time-viewer.umd.min.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[583],{2583:(e,r,o)=>{o.r(r),o.d(r,{volumetricLightingRenderVolumeVertexShader:()=>t});var i=o(17416);o(71508),o(2889),o(78109),o(66703);const s="volumetricLightingRenderVolumeVertexShader",n="#include<__decl__sceneVertex>\n#include<__decl__meshVertex>\nattribute vec3 position;varying vec4 vWorldPos;void main(void) {vec4 worldPos=world*vec4(position,1.0);vWorldPos=worldPos;gl_Position=viewProjection*worldPos;}\n";i.v.ShadersStore[s]||(i.v.ShadersStore[s]=n);const t={name:s,shader:n}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! filename:583 */
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! For license information please see 702.real-time-viewer.umd.min.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[702],{83702:(e,n,i)=>{i.r(n),i.d(n,{selectionPixelShaderWGSL:()=>t});var f=i(17416);i(47652),i(63665);const r="selectionPixelShader",a="#ifdef INSTANCES\nflat varying vSelectionId: f32;\n#else\nuniform selectionId: f32;\n#endif\n#ifdef STORE_CAMERASPACE_Z\nvarying vViewPosZ: f32;\n#else\nvarying vDepthMetric: f32;\n#endif\n#ifdef ALPHATEST\nvarying vUV: vec2f;var diffuseSamplerSampler: sampler;var diffuseSampler: texture_2d<f32>;\n#endif\n#include<clipPlaneFragmentDeclaration>\n#define CUSTOM_FRAGMENT_DEFINITIONS\n@fragment\nfn main(input: FragmentInputs)->FragmentOutputs {\n#define CUSTOM_FRAGMENT_MAIN_BEGIN\n#include<clipPlaneFragment>\n#ifdef ALPHATEST\nif (textureSample(diffuseSampler,diffuseSamplerSampler,fragmentInputs.vUV).a<0.4) {discard;}\n#endif\n#ifdef INSTANCES\nvar id: f32=fragmentInputs.vSelectionId;\n#else\nvar id: f32=uniforms.selectionId;\n#endif\n#ifdef STORE_CAMERASPACE_Z\nfragmentOutputs.color=vec4(id,fragmentInputs.vViewPosZ,0.0,1.0);\n#else\nfragmentOutputs.color=vec4(id,fragmentInputs.vDepthMetric,0.0,1.0);\n#endif\n#define CUSTOM_FRAGMENT_MAIN_END\n}\n";f.v.ShadersStoreWGSL[r]||(f.v.ShadersStoreWGSL[r]=a);const t={name:r,shader:a}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! filename:702 */
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! For license information please see 794.real-time-viewer.umd.min.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[794],{22794:(e,n,i)=>{i.r(n),i.d(n,{selectionPixelShader:()=>f});var d=i(17416);i(52397),i(15764);const l="selectionPixelShader",a="#ifdef INSTANCES\nflat varying float vSelectionId;\n#else\nuniform float selectionId;\n#endif\n#ifdef STORE_CAMERASPACE_Z\nvarying float vViewPosZ;\n#else\nvarying float vDepthMetric;\n#endif\n#ifdef ALPHATEST\nvarying vec2 vUV;uniform sampler2D diffuseSampler;\n#endif\n#include<clipPlaneFragmentDeclaration>\n#define CUSTOM_FRAGMENT_DEFINITIONS\nvoid main(void) {\n#define CUSTOM_FRAGMENT_MAIN_BEGIN\n#include<clipPlaneFragment>\n#ifdef ALPHATEST\nif (texture2D(diffuseSampler,vUV).a<0.4)\ndiscard;\n#endif\n#ifdef INSTANCES\nfloat id=vSelectionId;\n#else\nfloat id=selectionId;\n#endif\n#ifdef STORE_CAMERASPACE_Z\ngl_FragColor=vec4(id,vViewPosZ,0.0,1.0);\n#else\ngl_FragColor=vec4(id,vDepthMetric,0.0,1.0);\n#endif\n#define CUSTOM_FRAGMENT_MAIN_END\n}\n";d.v.ShadersStore[l]||(d.v.ShadersStore[l]=a);const f={name:l,shader:a}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! filename:794 */
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! For license information please see 799.real-time-viewer.umd.min.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[799],{5799:(e,t,i)=>{i.r(t),i.d(t,{volumetricLightingRenderVolumePixelShaderWGSL:()=>s});var n=i(17416);i(77761),i(90002);const r="volumetricLightingRenderVolumePixelShader",o="#include<sceneUboDeclaration>\n#include<meshUboDeclaration>\nuniform invViewProjection: mat4x4<f32>;uniform lightDir: vec3f; \nuniform outputTextureSize: vec2f;uniform extinctionPhaseG: vec4f;uniform lightPower: vec3f;uniform textureRatio: vec2f;var depthTexture: texture_2d<f32>;varying vWorldPos: vec4f;fn henyeyGreenstein(g: f32,cosTheta: f32)->f32 {let denom=1+g*g-2*g*cosTheta;return 1.0/(4.0*3.14159265)*(1.0-g*g)/(denom*sqrt(max(denom,0.0)));}\nfn integrateDirectional(eyeDist: f32,viewDir: vec3f,lightDir: vec3f)->vec3f {let phaseG=uniforms.extinctionPhaseG.w;\n#ifdef USE_EXTINCTION\nlet extinction=uniforms.extinctionPhaseG.xyz;return henyeyGreenstein(phaseG,dot(viewDir,lightDir))*(vec3f(1.0)-exp(-extinction*eyeDist))/extinction;\n#else\nreturn vec3f(henyeyGreenstein(phaseG,dot(viewDir,lightDir)))*vec3f(eyeDist);\n#endif\n}\n@fragment\nfn main(input: FragmentInputs)->FragmentOutputs {let depth=textureLoad(depthTexture,vec2u(fragmentInputs.position.xy*uniforms.textureRatio),0).r;var worldPos=fragmentInputs.vWorldPos;if (fragmentInputs.position.z>depth) {let ndc=vec4f((fragmentInputs.position.xy/uniforms.outputTextureSize)*2.-1.,depth,1.0);worldPos=uniforms.invViewProjection*ndc;worldPos=worldPos/worldPos.w;}\nvar viewDir=worldPos.xyz-scene.vEyePosition.xyz;let eyeDist=length(viewDir);viewDir=viewDir/eyeDist;let fSign=select(-1.0,1.0,fragmentInputs.frontFacing);let integral=integrateDirectional(eyeDist,-viewDir,uniforms.lightDir);fragmentOutputs.color=vec4f(uniforms.lightPower*integral*fSign,1.0);}\n";n.v.ShadersStoreWGSL[r]||(n.v.ShadersStoreWGSL[r]=o);const s={name:r,shader:o}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! filename:799 */
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! For license information please see 979.real-time-viewer.umd.min.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunkCrystaldesignRealTimeViewer=self.webpackChunkCrystaldesignRealTimeViewer||[]).push([[979],{30979:(e,t,r)=>{r.r(t),r.d(t,{volumetricLightingRenderVolumeVertexShaderWGSL:()=>i});var n=r(17416);r(77761),r(90002);const o="volumetricLightingRenderVolumeVertexShader",s="#include<sceneUboDeclaration>\n#include<meshUboDeclaration>\nattribute position : vec3f;varying vWorldPos: vec4f;@vertex\nfn main(input : VertexInputs)->FragmentInputs {let worldPos=mesh.world*vec4f(vertexInputs.position,1.0);vertexOutputs.vWorldPos=worldPos;vertexOutputs.position=scene.viewProjection*worldPos;}\n";n.v.ShadersStoreWGSL[o]||(n.v.ShadersStoreWGSL[o]=s);const i={name:o,shader:s}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! filename:979 */
|