Merge branch 'main' of github.com:specklesystems/speckle-server into alessandro/web-2495-create-id-resolver-and-add-user-to-workspace

This commit is contained in:
Alessandro Magionami
2025-01-22 10:25:52 +01:00
19 changed files with 84 additions and 73 deletions
@@ -61,6 +61,7 @@
v-model:automation-name="automationName"
:preselected-project="preselectedProject"
:is-test-automation="isTestAutomation"
:workspace-id="workspaceId"
/>
<AutomateAutomationCreateDialogSelectFunctionStep
v-if="isTestAutomation"
@@ -12,6 +12,7 @@
:allow-unset="false"
validate-on-value-update
owned-only
:workspace-id="workspaceId"
/>
<FormSelectModels
v-if="project?.id"
@@ -51,6 +52,7 @@ import type {
const props = defineProps<{
preselectedProject?: Optional<FormSelectProjects_ProjectFragment>
isTestAutomation: boolean
workspaceId?: string
}>()
const project = defineModel<Optional<FormSelectProjects_ProjectFragment>>('project', {
required: true
@@ -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<Optional<string>>
}
})
@@ -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 || []
}
@@ -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.
*/
@@ -5266,6 +5266,7 @@ export type DeveloperSettingsAuthorizedAppsQuery = { __typename?: 'Query', activ
export type SearchProjectsQueryVariables = Exact<{
search?: InputMaybe<Scalars['String']['input']>;
onlyWithRoles?: InputMaybe<Array<Scalars['String']['input']> | Scalars['String']['input']>;
workspaceId?: InputMaybe<Scalars['ID']['input']>;
}>;
@@ -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<DeveloperSettingsAccessTokensQuery, DeveloperSettingsAccessTokensQueryVariables>;
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<DeveloperSettingsApplicationsQuery, DeveloperSettingsApplicationsQueryVariables>;
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<DeveloperSettingsAuthorizedAppsQuery, DeveloperSettingsAuthorizedAppsQueryVariables>;
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<SearchProjectsQuery, SearchProjectsQueryVariables>;
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<SearchProjectsQuery, SearchProjectsQueryVariables>;
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<SearchProjectModelsQuery, SearchProjectModelsQueryVariables>;
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<ActiveUserGendoLimitsQuery, ActiveUserGendoLimitsQueryVariables>;
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<RequestGendoAiRenderMutation, RequestGendoAiRenderMutationVariables>;
@@ -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
@@ -16,6 +16,7 @@
<AutomateAutomationCreateDialog
v-model:open="showNewAutomationDialog"
:preselected-function="fn"
:workspace-id="fnWorkspaceId"
/>
<AutomateFunctionEditDialog
v-if="editModel"
@@ -93,6 +94,7 @@ const showEditDialog = ref(false)
const showNewAutomationDialog = ref(false)
const fn = computed(() => result.value?.automateFunction)
const fnWorkspaceId = computed(() => fn.value?.workspaceIds?.at(0))
const isOwner = computed(
() =>
!!(
@@ -114,8 +116,6 @@ const editModel = computed((): Optional<FunctionDetailsFormValues> => {
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<FunctionDetailsFormValues> => {
),
tags: func.tags,
workspace: activeUserWorkspaces.value.find(
(workspace) => workspace.id === workspaceId
(workspace) => workspace.id === fnWorkspaceId.value
)
}
})
+2 -2
View File
@@ -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'
)
}
@@ -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,
@@ -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,
@@ -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,
@@ -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,
@@ -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,
@@ -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
)
@@ -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)
@@ -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
)
@@ -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)
@@ -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,
@@ -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,