Skip to content

Commit

Permalink
Rebuild
Browse files Browse the repository at this point in the history
  • Loading branch information
xeolabs committed Jun 17, 2024
1 parent 65f5804 commit b3f1959
Show file tree
Hide file tree
Showing 6 changed files with 621 additions and 567 deletions.
196 changes: 110 additions & 86 deletions dist/xeokit-sdk.cjs.js
Original file line number Diff line number Diff line change
Expand Up @@ -10763,7 +10763,7 @@ class Marker extends Component {
this.scene.camera.off(this._onCameraProjMatrix);
if (this._entity) {
if (this._onEntityDestroyed !== null) {
this._entity.off(this._onEntityDestroyed);
this._entity.model.off(this._onEntityDestroyed);
}
if (this._onEntityModelDestroyed !== null) {
this._entity.model.off(this._onEntityModelDestroyed);
Expand Down Expand Up @@ -18735,6 +18735,9 @@ const Renderer$1 = function (scene, options) {
let drawableTypeInfo = {};
let drawables = {};

let postSortDrawableList = [];
let postCullDrawableList = [];

let drawableListDirty = true;
let stateSortDirty = true;
let imageDirty = true;
Expand Down Expand Up @@ -18960,28 +18963,38 @@ const Renderer$1 = function (scene, options) {
const drawableInfo = drawableTypeInfo[type];
if (drawableInfo.isStateSortable) {
drawableInfo.drawableListPreCull.sort(drawableInfo.stateSortCompare);

drawableInfo.drawableList = drawableInfo.drawableListPreCull;
}
}
}
}

function cullDrawableList() {
let lenDrawableList = 0;
for (let type in drawableTypeInfo) {
if (drawableTypeInfo.hasOwnProperty(type)) {
const drawableInfo = drawableTypeInfo[type];
const drawableListPreCull = drawableInfo.drawableListPreCull;
const drawableList = drawableInfo.drawableList;
let lenDrawableList = 0;
for (let i = 0, len = drawableListPreCull.length; i < len; i++) {
const drawable = drawableListPreCull[i];
drawable.rebuildRenderFlags();
if (!drawable.renderFlags.culled) {
drawableList[lenDrawableList++] = drawable;
}
postSortDrawableList[lenDrawableList++] = drawable;
}
drawableList.length = lenDrawableList;
}
}
postSortDrawableList.length = lenDrawableList;
postSortDrawableList.sort((a, b) => {
return a.renderOrder - b.renderOrder;
});
}

function cullDrawableList() {
let lenDrawableList = 0;
for (let i = 0, len = postSortDrawableList.length; i < len; i++) {
const drawable = postSortDrawableList[i];
drawable.rebuildRenderFlags();
if (!drawable.renderFlags.culled) {
postCullDrawableList[lenDrawableList++] = drawable;
}
}
postCullDrawableList.length = lenDrawableList;
}

function draw(params) {
Expand Down Expand Up @@ -19214,7 +19227,6 @@ const Renderer$1 = function (scene, options) {
}

let i;
let len;
let drawable;

const startTime = Date.now();
Expand Down Expand Up @@ -19247,93 +19259,85 @@ const Renderer$1 = function (scene, options) {
// Render normal opaque solids, defer others to bins to render after
//------------------------------------------------------------------------------------------------------

for (let type in drawableTypeInfo) {
if (drawableTypeInfo.hasOwnProperty(type)) {

const drawableInfo = drawableTypeInfo[type];
const drawableList = drawableInfo.drawableList;

for (i = 0, len = drawableList.length; i < len; i++) {
for (let i = 0, len = postCullDrawableList.length; i < len; i++) {

drawable = drawableList[i];
drawable = postCullDrawableList[i];

if (drawable.culled === true || drawable.visible === false) {
continue;
}
if (drawable.culled === true || drawable.visible === false) {
continue;
}

const renderFlags = drawable.renderFlags;
const renderFlags = drawable.renderFlags;

if (renderFlags.colorOpaque) {
if (saoEnabled && saoPossible && drawable.saoEnabled) {
normalDrawSAOBin[normalDrawSAOBinLen++] = drawable;
} else {
drawable.drawColorOpaque(frameCtx);
}
}
if (renderFlags.colorOpaque) {
if (saoEnabled && saoPossible && drawable.saoEnabled) {
normalDrawSAOBin[normalDrawSAOBinLen++] = drawable;
} else {
drawable.drawColorOpaque(frameCtx);
}
}

if (transparentEnabled) {
if (renderFlags.colorTransparent) {
normalFillTransparentBin[normalFillTransparentBinLen++] = drawable;
}
}
if (transparentEnabled) {
if (renderFlags.colorTransparent) {
normalFillTransparentBin[normalFillTransparentBinLen++] = drawable;
}
}

if (renderFlags.xrayedSilhouetteTransparent) {
xrayedFillTransparentBin[xrayedFillTransparentBinLen++] = drawable;
}
if (renderFlags.xrayedSilhouetteTransparent) {
xrayedFillTransparentBin[xrayedFillTransparentBinLen++] = drawable;
}

if (renderFlags.xrayedSilhouetteOpaque) {
xrayedFillOpaqueBin[xrayedFillOpaqueBinLen++] = drawable;
}
if (renderFlags.xrayedSilhouetteOpaque) {
xrayedFillOpaqueBin[xrayedFillOpaqueBinLen++] = drawable;
}

if (renderFlags.highlightedSilhouetteTransparent) {
highlightedFillTransparentBin[highlightedFillTransparentBinLen++] = drawable;
}
if (renderFlags.highlightedSilhouetteTransparent) {
highlightedFillTransparentBin[highlightedFillTransparentBinLen++] = drawable;
}

if (renderFlags.highlightedSilhouetteOpaque) {
highlightedFillOpaqueBin[highlightedFillOpaqueBinLen++] = drawable;
}
if (renderFlags.highlightedSilhouetteOpaque) {
highlightedFillOpaqueBin[highlightedFillOpaqueBinLen++] = drawable;
}

if (renderFlags.selectedSilhouetteTransparent) {
selectedFillTransparentBin[selectedFillTransparentBinLen++] = drawable;
}
if (renderFlags.selectedSilhouetteTransparent) {
selectedFillTransparentBin[selectedFillTransparentBinLen++] = drawable;
}

if (renderFlags.selectedSilhouetteOpaque) {
selectedFillOpaqueBin[selectedFillOpaqueBinLen++] = drawable;
}
if (renderFlags.selectedSilhouetteOpaque) {
selectedFillOpaqueBin[selectedFillOpaqueBinLen++] = drawable;
}

if (drawable.edges && edgesEnabled) {
if (renderFlags.edgesOpaque) {
normalEdgesOpaqueBin[normalEdgesOpaqueBinLen++] = drawable;
}
if (drawable.edges && edgesEnabled) {
if (renderFlags.edgesOpaque) {
normalEdgesOpaqueBin[normalEdgesOpaqueBinLen++] = drawable;
}

if (renderFlags.edgesTransparent) {
normalEdgesTransparentBin[normalEdgesTransparentBinLen++] = drawable;
}
if (renderFlags.edgesTransparent) {
normalEdgesTransparentBin[normalEdgesTransparentBinLen++] = drawable;
}

if (renderFlags.selectedEdgesTransparent) {
selectedEdgesTransparentBin[selectedEdgesTransparentBinLen++] = drawable;
}
if (renderFlags.selectedEdgesTransparent) {
selectedEdgesTransparentBin[selectedEdgesTransparentBinLen++] = drawable;
}

if (renderFlags.selectedEdgesOpaque) {
selectedEdgesOpaqueBin[selectedEdgesOpaqueBinLen++] = drawable;
}
if (renderFlags.selectedEdgesOpaque) {
selectedEdgesOpaqueBin[selectedEdgesOpaqueBinLen++] = drawable;
}

if (renderFlags.xrayedEdgesTransparent) {
xrayEdgesTransparentBin[xrayEdgesTransparentBinLen++] = drawable;
}
if (renderFlags.xrayedEdgesTransparent) {
xrayEdgesTransparentBin[xrayEdgesTransparentBinLen++] = drawable;
}

if (renderFlags.xrayedEdgesOpaque) {
xrayEdgesOpaqueBin[xrayEdgesOpaqueBinLen++] = drawable;
}
if (renderFlags.xrayedEdgesOpaque) {
xrayEdgesOpaqueBin[xrayEdgesOpaqueBinLen++] = drawable;
}

if (renderFlags.highlightedEdgesTransparent) {
highlightedEdgesTransparentBin[highlightedEdgesTransparentBinLen++] = drawable;
}
if (renderFlags.highlightedEdgesTransparent) {
highlightedEdgesTransparentBin[highlightedEdgesTransparentBinLen++] = drawable;
}

if (renderFlags.highlightedEdgesOpaque) {
highlightedEdgesOpaqueBin[highlightedEdgesOpaqueBinLen++] = drawable;
}
}
if (renderFlags.highlightedEdgesOpaque) {
highlightedEdgesOpaqueBin[highlightedEdgesOpaqueBinLen++] = drawable;
}
}
}
Expand Down Expand Up @@ -19646,7 +19650,7 @@ const Renderer$1 = function (scene, options) {
math.cross3Vec3(worldRayDir, randomVec3, up);

pickViewMatrix = math.lookAtMat4v(worldRayOrigin, look, up, tempMat4b);
// pickProjMatrix = scene.camera.projMatrix;
// pickProjMatrix = scene.camera.projMatrix;
pickProjMatrix = scene.camera.ortho.matrix;

pickResult.origin = worldRayOrigin;
Expand Down Expand Up @@ -31601,9 +31605,9 @@ class Scene extends Component {
* @param {Number[]} [params.matrix] 4x4 transformation matrix to define the World-space ray origin and direction, as an alternative to ````origin```` and ````direction````.
* @param {String[]} [params.includeEntities] IDs of {@link Entity}s to restrict picking to. When given, ignores {@link Entity}s whose IDs are not in this list.
* @param {String[]} [params.excludeEntities] IDs of {@link Entity}s to ignore. When given, will pick *through* these {@link Entity}s, as if they were not there.
* @param {Number} [params.snapRadius=30] The snap radius, in canvas pixels
* @param {boolean} [params.snapToVertex=true] Whether to snap to vertex.
* @param {boolean} [params.snapToEdge=true] Whether to snap to edge.
* @param {Number} [params.snapRadius=30] The snap radius, in canvas pixels.
* @param {boolean} [params.snapToVertex=true] Whether to snap to vertex. Only works when `canvasPos` given.
* @param {boolean} [params.snapToEdge=true] Whether to snap to edge. Only works when `canvasPos` given.
* @param {PickResult} [pickResult] Holds the results of the pick attempt. Will use the Scene's singleton PickResult if you don't supply your own.
* @returns {PickResult} Holds results of the pick attempt, returned when an {@link Entity} is picked, else null. See method comments for description.
*/
Expand All @@ -31614,6 +31618,11 @@ class Scene extends Component {
return null;
}

if ((params.snapToVertex || params.snapToEdge) && !params.canvasPos) {
this.error("Scene.snapPick() `canvasPos` parameter expected for `snapToVertex:true` or `snapToEdge:true`");
return;
}

params = params || {};

params.pickSurface = params.pickSurface || params.rayPick; // Backwards compatibility
Expand Down Expand Up @@ -31661,7 +31670,7 @@ class Scene extends Component {

/**
* @param {Object} params Picking parameters.
* @param {Number[]} [params.canvasPos] Canvas-space coordinates. When ray-picking, this will override the **origin** and ** direction** parameters and will cause the ray to be fired through the canvas at this position, directly along the negative View-space Z-axis.
* @param {Number[]} params.canvasPos Canvas-space coordinates.
* @param {Number} [params.snapRadius=30] The snap radius, in canvas pixels
* @param {boolean} [params.snapToVertex=true] Whether to snap to vertex.
* @param {boolean} [params.snapToEdge=true] Whether to snap to edge.
Expand All @@ -31672,6 +31681,10 @@ class Scene extends Component {
this._warnSnapPickDeprecated = true;
this.warn("Scene.snapPick() is deprecated since v2.4.2 - use Scene.pick() instead");
}
if (!params.canvasPos) {
this.error("Scene.snapPick() canvasPos parameter expected");
return;
}
return this._renderer.snapPick(
params.canvasPos,
params.snapRadius || 30,
Expand Down Expand Up @@ -37734,11 +37747,16 @@ class Mesh extends Component {
* @param {EmphasisMaterial} [cfg.highlightMaterial] {@link EmphasisMaterial} to define the xrayed appearance for this Mesh. Inherits {@link Scene#highlightMaterial} by default.
* @param {EmphasisMaterial} [cfg.selectedMaterial] {@link EmphasisMaterial} to define the selected appearance for this Mesh. Inherits {@link Scene#selectedMaterial} by default.
* @param {EmphasisMaterial} [cfg.edgeMaterial] {@link EdgeMaterial} to define the appearance of enhanced edges for this Mesh. Inherits {@link Scene#edgeMaterial} by default.
* @param {Number} [cfg.renderOrder=0] Specifies the rendering order for this mESH. This is used to control the order in which
* mESHES are drawn when they have transparent objects, to give control over the order in which those objects are blended within the transparent
* render pass.
*/
constructor(owner, cfg = {}) {

super(owner, cfg);

this.renderOrder = cfg.renderOrder || 0;

/**
* ID of the corresponding object within the originating system, if any.
*
Expand Down Expand Up @@ -82327,11 +82345,16 @@ class SceneModel extends Component {
* represent the returned model. Set false to always use vertex buffer objects (VBOs). Note that DTX is only applicable
* to non-textured triangle meshes, and that VBOs are always used for meshes that have textures, line segments, or point
* primitives. Only works while {@link DTX#enabled} is also ````true````.
* @param {Number} [cfg.renderOrder=0] Specifies the rendering order for this SceneModel. This is used to control the order in which
* SceneModels are drawn when they have transparent objects, to give control over the order in which those objects are blended within the transparent
* render pass.
*/
constructor(owner, cfg = {}) {

super(owner, cfg);

this.renderOrder = cfg.renderOrder || 0;

this._dtxEnabled = this.scene.dtxEnabled && (cfg.dtxEnabled !== false);

this._enableVertexWelding = false; // Not needed for most objects, and very expensive, so disabled
Expand Down Expand Up @@ -84398,6 +84421,7 @@ class SceneModel extends Component {
_getVBOBatchingLayer(cfg) {
const model = this;
const origin = cfg.origin;
cfg.renderLayer || 0;
const positionsDecodeHash = cfg.positionsDecodeMatrix || cfg.positionsDecodeBoundary ?
this._createHashStringFromMatrix(cfg.positionsDecodeMatrix || cfg.positionsDecodeBoundary)
: "-";
Expand Down Expand Up @@ -84884,7 +84908,7 @@ class SceneModel extends Component {
// -------------- RENDERING ---------------------------------------------------------------------------------------

/** @private */
drawColorOpaque(frameCtx) {
drawColorOpaque(frameCtx, layerList) {
const renderFlags = this.renderFlags;
for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {
const layerIndex = renderFlags.visibleLayers[i];
Expand Down
Loading

0 comments on commit b3f1959

Please sign in to comment.