diff --git a/packages/frontend-2/components/automate/automation/CreateDialog.vue b/packages/frontend-2/components/automate/automation/CreateDialog.vue
index 3266e3123..d4cc2f9b4 100644
--- a/packages/frontend-2/components/automate/automation/CreateDialog.vue
+++ b/packages/frontend-2/components/automate/automation/CreateDialog.vue
@@ -61,6 +61,7 @@
v-model:automation-name="automationName"
:preselected-project="preselectedProject"
:is-test-automation="isTestAutomation"
+ :workspace-id="workspaceId"
/>
isTestAutomation: boolean
+ workspaceId?: string
}>()
const project = defineModel>('project', {
required: true
diff --git a/packages/frontend-2/components/form/select/Projects.vue b/packages/frontend-2/components/form/select/Projects.vue
index 44b033ca2..b1c343dbb 100644
--- a/packages/frontend-2/components/form/select/Projects.vue
+++ b/packages/frontend-2/components/form/select/Projects.vue
@@ -133,6 +133,12 @@ const props = defineProps({
ownedOnly: {
type: Boolean,
default: false
+ },
+ /**
+ * Whether to only return projects within a specific workspace
+ */
+ workspaceId: {
+ type: String as PropType>
}
})
@@ -155,10 +161,11 @@ const invokeSearch = async (search: string) => {
if (!isLoggedIn.value) return []
const results = await apollo.query({
query: searchProjectsQuery,
- variables: {
+ variables: computed(() => ({
search: search.trim().length ? search : null,
- onlyWithRoles: props.ownedOnly ? [Roles.Stream.Owner] : null
- }
+ onlyWithRoles: props.ownedOnly ? [Roles.Stream.Owner] : null,
+ ...(props.workspaceId && { workspaceId: props.workspaceId })
+ })).value
})
return results.data.activeUser?.projects.items || []
}
diff --git a/packages/frontend-2/lib/common/generated/gql/gql.ts b/packages/frontend-2/lib/common/generated/gql/gql.ts
index 2ab6c3705..4a877779d 100644
--- a/packages/frontend-2/lib/common/generated/gql/gql.ts
+++ b/packages/frontend-2/lib/common/generated/gql/gql.ts
@@ -191,7 +191,7 @@ const documents = {
"\n query DeveloperSettingsAccessTokens {\n activeUser {\n id\n apiTokens {\n id\n name\n lastUsed\n lastChars\n createdAt\n scopes\n }\n }\n }\n": types.DeveloperSettingsAccessTokensDocument,
"\n query DeveloperSettingsApplications {\n activeUser {\n createdApps {\n id\n secret\n name\n description\n redirectUrl\n scopes {\n name\n description\n }\n }\n id\n }\n }\n": types.DeveloperSettingsApplicationsDocument,
"\n query DeveloperSettingsAuthorizedApps {\n activeUser {\n id\n authorizedApps {\n id\n description\n name\n author {\n id\n name\n avatar\n }\n }\n }\n }\n": types.DeveloperSettingsAuthorizedAppsDocument,
- "\n query SearchProjects($search: String, $onlyWithRoles: [String!] = null) {\n activeUser {\n projects(limit: 10, filter: { search: $search, onlyWithRoles: $onlyWithRoles }) {\n totalCount\n items {\n ...FormSelectProjects_Project\n }\n }\n }\n }\n": types.SearchProjectsDocument,
+ "\n query SearchProjects(\n $search: String\n $onlyWithRoles: [String!] = null\n $workspaceId: ID\n ) {\n activeUser {\n projects(\n limit: 10\n filter: {\n search: $search\n onlyWithRoles: $onlyWithRoles\n workspaceId: $workspaceId\n }\n ) {\n totalCount\n items {\n ...FormSelectProjects_Project\n }\n }\n }\n }\n": types.SearchProjectsDocument,
"\n query SearchProjectModels($search: String, $projectId: String!) {\n project(id: $projectId) {\n id\n models(limit: 10, filter: { search: $search }) {\n totalCount\n items {\n ...FormSelectModels_Model\n }\n }\n }\n }\n": types.SearchProjectModelsDocument,
"\n query ActiveUserGendoLimits {\n activeUser {\n id\n gendoAICredits {\n used\n limit\n resetDate\n }\n }\n }\n": types.ActiveUserGendoLimitsDocument,
"\n mutation requestGendoAIRender($input: GendoAIRenderInput!) {\n versionMutations {\n requestGendoAIRender(input: $input)\n }\n }\n": types.RequestGendoAiRenderDocument,
@@ -1118,7 +1118,7 @@ export function graphql(source: "\n query DeveloperSettingsAuthorizedApps {\n
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
-export function graphql(source: "\n query SearchProjects($search: String, $onlyWithRoles: [String!] = null) {\n activeUser {\n projects(limit: 10, filter: { search: $search, onlyWithRoles: $onlyWithRoles }) {\n totalCount\n items {\n ...FormSelectProjects_Project\n }\n }\n }\n }\n"): (typeof documents)["\n query SearchProjects($search: String, $onlyWithRoles: [String!] = null) {\n activeUser {\n projects(limit: 10, filter: { search: $search, onlyWithRoles: $onlyWithRoles }) {\n totalCount\n items {\n ...FormSelectProjects_Project\n }\n }\n }\n }\n"];
+export function graphql(source: "\n query SearchProjects(\n $search: String\n $onlyWithRoles: [String!] = null\n $workspaceId: ID\n ) {\n activeUser {\n projects(\n limit: 10\n filter: {\n search: $search\n onlyWithRoles: $onlyWithRoles\n workspaceId: $workspaceId\n }\n ) {\n totalCount\n items {\n ...FormSelectProjects_Project\n }\n }\n }\n }\n"): (typeof documents)["\n query SearchProjects(\n $search: String\n $onlyWithRoles: [String!] = null\n $workspaceId: ID\n ) {\n activeUser {\n projects(\n limit: 10\n filter: {\n search: $search\n onlyWithRoles: $onlyWithRoles\n workspaceId: $workspaceId\n }\n ) {\n totalCount\n items {\n ...FormSelectProjects_Project\n }\n }\n }\n }\n"];
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
diff --git a/packages/frontend-2/lib/common/generated/gql/graphql.ts b/packages/frontend-2/lib/common/generated/gql/graphql.ts
index 172a3f940..6ac75adaf 100644
--- a/packages/frontend-2/lib/common/generated/gql/graphql.ts
+++ b/packages/frontend-2/lib/common/generated/gql/graphql.ts
@@ -5266,6 +5266,7 @@ export type DeveloperSettingsAuthorizedAppsQuery = { __typename?: 'Query', activ
export type SearchProjectsQueryVariables = Exact<{
search?: InputMaybe;
onlyWithRoles?: InputMaybe | Scalars['String']['input']>;
+ workspaceId?: InputMaybe;
}>;
@@ -6727,7 +6728,7 @@ export const RevokeAppAccessDocument = {"kind":"Document","definitions":[{"kind"
export const DeveloperSettingsAccessTokensDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"DeveloperSettingsAccessTokens"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"activeUser"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"apiTokens"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"lastUsed"}},{"kind":"Field","name":{"kind":"Name","value":"lastChars"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"scopes"}}]}}]}}]}}]} as unknown as DocumentNode;
export const DeveloperSettingsApplicationsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"DeveloperSettingsApplications"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"activeUser"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createdApps"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"secret"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"redirectUrl"}},{"kind":"Field","name":{"kind":"Name","value":"scopes"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode;
export const DeveloperSettingsAuthorizedAppsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"DeveloperSettingsAuthorizedApps"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"activeUser"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"authorizedApps"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"author"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"avatar"}}]}}]}}]}}]}}]} as unknown as DocumentNode;
-export const SearchProjectsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"SearchProjects"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"search"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"onlyWithRoles"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},"defaultValue":{"kind":"NullValue"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"activeUser"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"projects"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"10"}},{"kind":"Argument","name":{"kind":"Name","value":"filter"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"search"},"value":{"kind":"Variable","name":{"kind":"Name","value":"search"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"onlyWithRoles"},"value":{"kind":"Variable","name":{"kind":"Name","value":"onlyWithRoles"}}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"totalCount"}},{"kind":"Field","name":{"kind":"Name","value":"items"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"FormSelectProjects_Project"}}]}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"FormSelectProjects_Project"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]} as unknown as DocumentNode;
+export const SearchProjectsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"SearchProjects"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"search"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"onlyWithRoles"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},"defaultValue":{"kind":"NullValue"}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"workspaceId"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"activeUser"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"projects"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"10"}},{"kind":"Argument","name":{"kind":"Name","value":"filter"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"search"},"value":{"kind":"Variable","name":{"kind":"Name","value":"search"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"onlyWithRoles"},"value":{"kind":"Variable","name":{"kind":"Name","value":"onlyWithRoles"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"workspaceId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"workspaceId"}}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"totalCount"}},{"kind":"Field","name":{"kind":"Name","value":"items"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"FormSelectProjects_Project"}}]}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"FormSelectProjects_Project"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]} as unknown as DocumentNode;
export const SearchProjectModelsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"SearchProjectModels"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"search"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"projectId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"project"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"projectId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"models"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"10"}},{"kind":"Argument","name":{"kind":"Name","value":"filter"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"search"},"value":{"kind":"Variable","name":{"kind":"Name","value":"search"}}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"totalCount"}},{"kind":"Field","name":{"kind":"Name","value":"items"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"FormSelectModels_Model"}}]}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"FormSelectModels_Model"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Model"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]} as unknown as DocumentNode;
export const ActiveUserGendoLimitsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"ActiveUserGendoLimits"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"activeUser"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"gendoAICredits"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"used"}},{"kind":"Field","name":{"kind":"Name","value":"limit"}},{"kind":"Field","name":{"kind":"Name","value":"resetDate"}}]}}]}}]}}]} as unknown as DocumentNode;
export const RequestGendoAiRenderDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"requestGendoAIRender"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"GendoAIRenderInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"versionMutations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"requestGendoAIRender"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}]}]}}]}}]} as unknown as DocumentNode;
diff --git a/packages/frontend-2/lib/form/graphql/queries.ts b/packages/frontend-2/lib/form/graphql/queries.ts
index 06f6717c1..13896e03b 100644
--- a/packages/frontend-2/lib/form/graphql/queries.ts
+++ b/packages/frontend-2/lib/form/graphql/queries.ts
@@ -1,9 +1,20 @@
import { graphql } from '~~/lib/common/generated/gql'
export const searchProjectsQuery = graphql(`
- query SearchProjects($search: String, $onlyWithRoles: [String!] = null) {
+ query SearchProjects(
+ $search: String
+ $onlyWithRoles: [String!] = null
+ $workspaceId: ID
+ ) {
activeUser {
- projects(limit: 10, filter: { search: $search, onlyWithRoles: $onlyWithRoles }) {
+ projects(
+ limit: 10
+ filter: {
+ search: $search
+ onlyWithRoles: $onlyWithRoles
+ workspaceId: $workspaceId
+ }
+ ) {
totalCount
items {
...FormSelectProjects_Project
diff --git a/packages/frontend-2/pages/functions/[fid].vue b/packages/frontend-2/pages/functions/[fid].vue
index e68fff572..07fe7e1de 100644
--- a/packages/frontend-2/pages/functions/[fid].vue
+++ b/packages/frontend-2/pages/functions/[fid].vue
@@ -16,6 +16,7 @@
result.value?.automateFunction)
+const fnWorkspaceId = computed(() => fn.value?.workspaceIds?.at(0))
const isOwner = computed(
() =>
!!(
@@ -114,8 +116,6 @@ const editModel = computed((): Optional => {
const func = fn.value
if (!func) return undefined
- const workspaceId = func.workspaceIds?.at(0)
-
return {
name: func.name,
description: func.description,
@@ -125,7 +125,7 @@ const editModel = computed((): Optional => {
),
tags: func.tags,
workspace: activeUserWorkspaces.value.find(
- (workspace) => workspace.id === workspaceId
+ (workspace) => workspace.id === fnWorkspaceId.value
)
}
})
diff --git a/packages/viewer-sandbox/src/main.ts b/packages/viewer-sandbox/src/main.ts
index 8abf6834a..e97ace85a 100644
--- a/packages/viewer-sandbox/src/main.ts
+++ b/packages/viewer-sandbox/src/main.ts
@@ -113,7 +113,7 @@ const getStream = () => {
// prettier-ignore
// 'https://app.speckle.systems/streams/da9e320dad/commits/5388ef24b8?c=%5B-7.66134,10.82932,6.41935,-0.07739,-13.88552,1.8697,0,1%5D'
// Revit sample house (good for bim-like stuff with many display meshes)
- // 'https://app.speckle.systems/streams/da9e320dad/commits/5388ef24b8'
+ 'https://app.speckle.systems/streams/da9e320dad/commits/5388ef24b8'
// 'https://latest.speckle.systems/streams/c1faab5c62/commits/ab1a1ab2b6'
// 'https://app.speckle.systems/streams/da9e320dad/commits/5388ef24b8'
// 'https://latest.speckle.systems/streams/58b5648c4d/commits/60371ecb2d'
@@ -469,7 +469,7 @@ const getStream = () => {
// 'https://app.speckle.systems/projects/e89b61b65c/models/2a0995f124'
// 'https://latest.speckle.systems/projects/3fe1880c36/models/65bb4287a8'
- 'https://latest.speckle.systems/projects/db06488e1c/models/21f3930771'
+ // 'https://latest.speckle.systems/projects/db06488e1c/models/21f3930771'
)
}
diff --git a/packages/viewer/src/modules/pipeline/Passes/BasitPass.ts b/packages/viewer/src/modules/pipeline/Passes/BasitPass.ts
index 02ccc68ed..6925f2066 100644
--- a/packages/viewer/src/modules/pipeline/Passes/BasitPass.ts
+++ b/packages/viewer/src/modules/pipeline/Passes/BasitPass.ts
@@ -3,6 +3,7 @@ import {
DoubleSide,
OrthographicCamera,
PerspectiveCamera,
+ Plane,
Scene,
WebGLRenderer
} from 'three'
@@ -40,6 +41,12 @@ export class BasitPass extends BaseGPass {
return 'BASIT'
}
+ public setClippingPlanes(planes: Plane[]) {
+ for (const k in this.materialMap) {
+ this.materialMap[k][2].clippingPlanes = planes
+ }
+ }
+
protected buildMaterials() {
const batches: MeshBatch[] = this.speckleRenderer.batcher.getBatches(
undefined,
diff --git a/packages/viewer/src/modules/pipeline/Pipelines/ArcticViewPipeline.ts b/packages/viewer/src/modules/pipeline/Pipelines/ArcticViewPipeline.ts
index c381578e7..e1aaac253 100644
--- a/packages/viewer/src/modules/pipeline/Pipelines/ArcticViewPipeline.ts
+++ b/packages/viewer/src/modules/pipeline/Pipelines/ArcticViewPipeline.ts
@@ -30,7 +30,8 @@ export class ArcticViewPipeline extends ProgressivePipeline {
ObjectLayers.STREAM_CONTENT_LINE,
ObjectLayers.STREAM_CONTENT_POINT,
ObjectLayers.STREAM_CONTENT_POINT_CLOUD,
- ObjectLayers.STREAM_CONTENT_TEXT
+ ObjectLayers.STREAM_CONTENT_TEXT,
+ ObjectLayers.PROPS
])
viewportPass.setVisibility(ObjectVisibility.OPAQUE)
viewportPass.options = { minIntensity: 0.75 }
@@ -72,11 +73,7 @@ export class ArcticViewPipeline extends ProgressivePipeline {
stencilMaskPass.setClearFlags(ClearFlags.DEPTH)
const overlayPass = new GeometryPass()
- overlayPass.setLayers([
- ObjectLayers.PROPS,
- ObjectLayers.OVERLAY,
- ObjectLayers.MEASUREMENTS
- ])
+ overlayPass.setLayers([ObjectLayers.OVERLAY, ObjectLayers.MEASUREMENTS])
this.dynamicStage.push(
stencilPass,
diff --git a/packages/viewer/src/modules/pipeline/Pipelines/BasitViewPipeline.ts b/packages/viewer/src/modules/pipeline/Pipelines/BasitViewPipeline.ts
index b93b22c62..fbc25d2b0 100644
--- a/packages/viewer/src/modules/pipeline/Pipelines/BasitViewPipeline.ts
+++ b/packages/viewer/src/modules/pipeline/Pipelines/BasitViewPipeline.ts
@@ -12,7 +12,7 @@ export class BasitPipeline extends Pipeline {
super(speckleRenderer)
const basitPass = new BasitPass(tree, speckleRenderer)
- basitPass.setLayers([ObjectLayers.STREAM_CONTENT_MESH])
+ basitPass.setLayers([ObjectLayers.STREAM_CONTENT_MESH, ObjectLayers.PROPS])
basitPass.setClearColor(0x000000, 0)
basitPass.setClearFlags(ClearFlags.COLOR)
basitPass.outputTarget = null
@@ -34,11 +34,7 @@ export class BasitPipeline extends Pipeline {
stencilMaskPass.setClearFlags(ClearFlags.DEPTH)
const overlayPass = new GeometryPass()
- overlayPass.setLayers([
- ObjectLayers.PROPS,
- ObjectLayers.OVERLAY,
- ObjectLayers.MEASUREMENTS
- ])
+ overlayPass.setLayers([ObjectLayers.OVERLAY, ObjectLayers.MEASUREMENTS])
this.passList.push(
stencilPass,
diff --git a/packages/viewer/src/modules/pipeline/Pipelines/DefaultPipeline.ts b/packages/viewer/src/modules/pipeline/Pipelines/DefaultPipeline.ts
index 68c3bbab0..69331706c 100644
--- a/packages/viewer/src/modules/pipeline/Pipelines/DefaultPipeline.ts
+++ b/packages/viewer/src/modules/pipeline/Pipelines/DefaultPipeline.ts
@@ -27,7 +27,8 @@ export class DefaultPipeline extends ProgressivePipeline {
ObjectLayers.STREAM_CONTENT_LINE,
ObjectLayers.STREAM_CONTENT_POINT,
ObjectLayers.STREAM_CONTENT_POINT_CLOUD,
- ObjectLayers.STREAM_CONTENT_TEXT
+ ObjectLayers.STREAM_CONTENT_TEXT,
+ ObjectLayers.PROPS
])
opaqueColorPass.setVisibility(ObjectVisibility.OPAQUE)
@@ -63,11 +64,7 @@ export class DefaultPipeline extends ProgressivePipeline {
stencilMaskPass.setClearFlags(ClearFlags.DEPTH)
const overlayPass = new GeometryPass()
- overlayPass.setLayers([
- ObjectLayers.PROPS,
- ObjectLayers.OVERLAY,
- ObjectLayers.MEASUREMENTS
- ])
+ overlayPass.setLayers([ObjectLayers.OVERLAY, ObjectLayers.MEASUREMENTS])
this.dynamicStage.push(
stencilPass,
diff --git a/packages/viewer/src/modules/pipeline/Pipelines/EdgesPipeline.ts b/packages/viewer/src/modules/pipeline/Pipelines/EdgesPipeline.ts
index 64b7e2fef..a001c30ad 100644
--- a/packages/viewer/src/modules/pipeline/Pipelines/EdgesPipeline.ts
+++ b/packages/viewer/src/modules/pipeline/Pipelines/EdgesPipeline.ts
@@ -49,7 +49,8 @@ export class EdgesPipeline extends ProgressivePipeline {
ObjectLayers.STREAM_CONTENT_LINE,
ObjectLayers.STREAM_CONTENT_POINT,
ObjectLayers.STREAM_CONTENT_POINT_CLOUD,
- ObjectLayers.STREAM_CONTENT_TEXT
+ ObjectLayers.STREAM_CONTENT_TEXT,
+ ObjectLayers.PROPS
])
opaqueColorPass.setVisibility(ObjectVisibility.OPAQUE)
@@ -103,11 +104,7 @@ export class EdgesPipeline extends ProgressivePipeline {
stencilMaskPass.setClearFlags(ClearFlags.DEPTH)
const overlayPass = new GeometryPass()
- overlayPass.setLayers([
- ObjectLayers.PROPS,
- ObjectLayers.OVERLAY,
- ObjectLayers.MEASUREMENTS
- ])
+ overlayPass.setLayers([ObjectLayers.OVERLAY, ObjectLayers.MEASUREMENTS])
this.dynamicStage.push(
depthPassDynamic,
diff --git a/packages/viewer/src/modules/pipeline/Pipelines/MRT/MRTEdgesPipeline.ts b/packages/viewer/src/modules/pipeline/Pipelines/MRT/MRTEdgesPipeline.ts
index 99120f061..9a2ca2e6e 100644
--- a/packages/viewer/src/modules/pipeline/Pipelines/MRT/MRTEdgesPipeline.ts
+++ b/packages/viewer/src/modules/pipeline/Pipelines/MRT/MRTEdgesPipeline.ts
@@ -79,6 +79,9 @@ export class MRTEdgesPipeline extends ProgressivePipeline {
blendPassDynamic.setTexture('tEdges', edgesPassDynamic.outputTarget?.texture)
blendPassDynamic.accumulationFrames = this.accumulationFrameCount
+ const postBlendGeometryPass = new GeometryPass()
+ postBlendGeometryPass.setLayers([ObjectLayers.PROPS])
+
const stencilPass = new StencilPass()
stencilPass.setVisibility(ObjectVisibility.STENCIL)
stencilPass.setLayers([ObjectLayers.STREAM_CONTENT_MESH])
@@ -89,11 +92,7 @@ export class MRTEdgesPipeline extends ProgressivePipeline {
stencilMaskPass.setClearFlags(ClearFlags.DEPTH)
const overlayPass = new GeometryPass()
- overlayPass.setLayers([
- ObjectLayers.PROPS,
- ObjectLayers.OVERLAY,
- ObjectLayers.MEASUREMENTS
- ])
+ overlayPass.setLayers([ObjectLayers.OVERLAY, ObjectLayers.MEASUREMENTS])
this.dynamicStage.push(
depthPassNormalDynamic,
@@ -101,8 +100,9 @@ export class MRTEdgesPipeline extends ProgressivePipeline {
stencilPass,
opaqueColorPass,
transparentColorPass,
- stencilMaskPass,
blendPassDynamic,
+ postBlendGeometryPass,
+ stencilMaskPass,
overlayPass
)
this.progressiveStage.push(
@@ -113,16 +113,18 @@ export class MRTEdgesPipeline extends ProgressivePipeline {
stencilPass,
opaqueColorPass,
transparentColorPass,
- stencilMaskPass,
blendPass,
+ postBlendGeometryPass,
+ stencilMaskPass,
overlayPass
)
this.passthroughStage.push(
stencilPass,
opaqueColorPass,
transparentColorPass,
- stencilMaskPass,
blendPass,
+ postBlendGeometryPass,
+ stencilMaskPass,
overlayPass
)
diff --git a/packages/viewer/src/modules/pipeline/Pipelines/MRT/MRTPenViewPipeline.ts b/packages/viewer/src/modules/pipeline/Pipelines/MRT/MRTPenViewPipeline.ts
index d5944f827..16aca9891 100644
--- a/packages/viewer/src/modules/pipeline/Pipelines/MRT/MRTPenViewPipeline.ts
+++ b/packages/viewer/src/modules/pipeline/Pipelines/MRT/MRTPenViewPipeline.ts
@@ -96,7 +96,7 @@ export class MRTPenViewPipeline extends ProgressivePipeline {
return +a.material.colorWrite - +b.material.colorWrite
}
})()
- geometryPass.setLayers([ObjectLayers.STREAM_CONTENT_MESH])
+ geometryPass.setLayers([ObjectLayers.STREAM_CONTENT_MESH, ObjectLayers.PROPS])
const stencilMaskPass = new StencilMaskPass()
stencilMaskPass.setVisibility(ObjectVisibility.STENCIL)
@@ -104,11 +104,7 @@ export class MRTPenViewPipeline extends ProgressivePipeline {
stencilMaskPass.setClearFlags(ClearFlags.DEPTH)
const overlayPass = new GeometryPass()
- overlayPass.setLayers([
- ObjectLayers.OVERLAY,
- ObjectLayers.MEASUREMENTS,
- ObjectLayers.PROPS
- ])
+ overlayPass.setLayers([ObjectLayers.OVERLAY, ObjectLayers.MEASUREMENTS])
const outputPass = new OutputPass()
outputPass.setTexture('tDiffuse', taaPass.outputTarget?.texture)
diff --git a/packages/viewer/src/modules/pipeline/Pipelines/MRT/MRTShadedViewPipeline.ts b/packages/viewer/src/modules/pipeline/Pipelines/MRT/MRTShadedViewPipeline.ts
index b915edb14..178501186 100644
--- a/packages/viewer/src/modules/pipeline/Pipelines/MRT/MRTShadedViewPipeline.ts
+++ b/packages/viewer/src/modules/pipeline/Pipelines/MRT/MRTShadedViewPipeline.ts
@@ -36,7 +36,8 @@ export class MRTShadedViewPipeline extends ProgressivePipeline {
ObjectLayers.STREAM_CONTENT_LINE,
ObjectLayers.STREAM_CONTENT_POINT,
ObjectLayers.STREAM_CONTENT_POINT_CLOUD,
- ObjectLayers.STREAM_CONTENT_TEXT
+ ObjectLayers.STREAM_CONTENT_TEXT,
+ ObjectLayers.PROPS
])
viewportPass.options = {
matcapTexture: {
@@ -71,6 +72,9 @@ export class MRTShadedViewPipeline extends ProgressivePipeline {
blendPassDynamic.setTexture('tEdges', edgesPassDynamic.outputTarget?.texture)
blendPassDynamic.accumulationFrames = this.accumulationFrameCount
+ const postBlendGeometryPass = new GeometryPass()
+ postBlendGeometryPass.setLayers([ObjectLayers.PROPS])
+
const stencilPass = new StencilPass()
stencilPass.setVisibility(ObjectVisibility.STENCIL)
stencilPass.setLayers([ObjectLayers.STREAM_CONTENT_MESH])
@@ -81,11 +85,7 @@ export class MRTShadedViewPipeline extends ProgressivePipeline {
stencilMaskPass.setClearFlags(ClearFlags.DEPTH)
const overlayPass = new GeometryPass()
- overlayPass.setLayers([
- ObjectLayers.PROPS,
- ObjectLayers.OVERLAY,
- ObjectLayers.MEASUREMENTS
- ])
+ overlayPass.setLayers([ObjectLayers.OVERLAY, ObjectLayers.MEASUREMENTS])
this.dynamicStage.push(
depthPassNormalDynamic,
@@ -93,8 +93,9 @@ export class MRTShadedViewPipeline extends ProgressivePipeline {
stencilPass,
shadowcatcherPass,
viewportPass,
- stencilMaskPass,
blendPassDynamic,
+ postBlendGeometryPass,
+ stencilMaskPass,
overlayPass
)
this.progressiveStage.push(
@@ -104,16 +105,18 @@ export class MRTShadedViewPipeline extends ProgressivePipeline {
stencilPass,
shadowcatcherPass,
viewportPass,
- stencilMaskPass,
blendPass,
+ postBlendGeometryPass,
+ stencilMaskPass,
overlayPass
)
this.passthroughStage.push(
stencilPass,
shadowcatcherPass,
viewportPass,
- stencilMaskPass,
blendPass,
+ stencilMaskPass,
+ postBlendGeometryPass,
overlayPass
)
diff --git a/packages/viewer/src/modules/pipeline/Pipelines/PenViewPipeline.ts b/packages/viewer/src/modules/pipeline/Pipelines/PenViewPipeline.ts
index 4a793daeb..ef231872e 100644
--- a/packages/viewer/src/modules/pipeline/Pipelines/PenViewPipeline.ts
+++ b/packages/viewer/src/modules/pipeline/Pipelines/PenViewPipeline.ts
@@ -110,7 +110,7 @@ export class PenViewPipeline extends ProgressivePipeline {
return +a.material.colorWrite - +b.material.colorWrite
}
})()
- geometryPass.setLayers([ObjectLayers.STREAM_CONTENT_MESH])
+ geometryPass.setLayers([ObjectLayers.STREAM_CONTENT_MESH, ObjectLayers.PROPS])
const stencilMaskPass = new StencilMaskPass()
stencilMaskPass.setVisibility(ObjectVisibility.STENCIL)
diff --git a/packages/viewer/src/modules/pipeline/Pipelines/ShadedViewPipeline.ts b/packages/viewer/src/modules/pipeline/Pipelines/ShadedViewPipeline.ts
index 35d908117..acb96d900 100644
--- a/packages/viewer/src/modules/pipeline/Pipelines/ShadedViewPipeline.ts
+++ b/packages/viewer/src/modules/pipeline/Pipelines/ShadedViewPipeline.ts
@@ -46,7 +46,8 @@ export class ShadedViewPipeline extends ProgressivePipeline {
ObjectLayers.STREAM_CONTENT_LINE,
ObjectLayers.STREAM_CONTENT_POINT,
ObjectLayers.STREAM_CONTENT_POINT_CLOUD,
- ObjectLayers.STREAM_CONTENT_TEXT
+ ObjectLayers.STREAM_CONTENT_TEXT,
+ ObjectLayers.PROPS
])
viewportPass.options = {
matcapTexture: {
@@ -91,11 +92,7 @@ export class ShadedViewPipeline extends ProgressivePipeline {
stencilMaskPass.setClearFlags(ClearFlags.DEPTH)
const overlayPass = new GeometryPass()
- overlayPass.setLayers([
- ObjectLayers.PROPS,
- ObjectLayers.OVERLAY,
- ObjectLayers.MEASUREMENTS
- ])
+ overlayPass.setLayers([ObjectLayers.OVERLAY, ObjectLayers.MEASUREMENTS])
this.dynamicStage.push(
depthPassDynamic,
diff --git a/packages/viewer/src/modules/pipeline/Pipelines/TAAPipeline.ts b/packages/viewer/src/modules/pipeline/Pipelines/TAAPipeline.ts
index f7c28ea94..520534aa6 100644
--- a/packages/viewer/src/modules/pipeline/Pipelines/TAAPipeline.ts
+++ b/packages/viewer/src/modules/pipeline/Pipelines/TAAPipeline.ts
@@ -39,7 +39,8 @@ export class TAAPipeline extends ProgressivePipeline {
ObjectLayers.STREAM_CONTENT_LINE,
ObjectLayers.STREAM_CONTENT_POINT,
ObjectLayers.STREAM_CONTENT_POINT_CLOUD,
- ObjectLayers.STREAM_CONTENT_TEXT
+ ObjectLayers.STREAM_CONTENT_TEXT,
+ ObjectLayers.PROPS
])
opaqueColorPass.setVisibility(ObjectVisibility.OPAQUE)
@@ -131,11 +132,7 @@ export class TAAPipeline extends ProgressivePipeline {
jitteredStencilMaskPass.outputTarget = renderTarget
const overlayPass = new GeometryPass()
- overlayPass.setLayers([
- ObjectLayers.PROPS,
- ObjectLayers.OVERLAY,
- ObjectLayers.MEASUREMENTS
- ])
+ overlayPass.setLayers([ObjectLayers.OVERLAY, ObjectLayers.MEASUREMENTS])
this.dynamicStage.push(
stencilPass,