Luxar Viewer API Documentation - v2026.9.22
    Preparing search index...

    Function loadTslMaterials

    • Load the TSL / WebGPU material cone, fetching its chunk on first call.

      Idempotent and concurrency-safe: repeat calls return the cached registry (or join the in-flight load) rather than re-importing.

      Returns Promise<
          {
              materials: {
                  point: typeof PointTSLMaterial;
                  line: typeof LineTSLMaterial;
                  gsplat: typeof GSplatTSLMaterial;
                  mesh: typeof MeshTSLMaterial;
                  meshPhysical: typeof PhysicalMeshTSLMaterial;
              };
              environment: {
                  PMREMGenerator: typeof PMREMGenerator;
                  CubeRenderTarget: typeof CubeRenderTarget;
              };
              picking: {
                  point: typeof PointPickingTSLMaterial;
                  line: typeof LinePickingTSLMaterial;
                  gsplat: typeof GSplatPickingTSLMaterial;
                  mesh: typeof MeshPickingTSLMaterial;
              };
              mega: typeof MegaShaderTSLMaterial;
              factories: {
                  point: {
                      pointWebGPUFactory: (
                          nodes: PointTSLNodes,
                          config?: PointTSLConfig,
                          outMaterial?: NodeMaterial,
                      ) => NodeMaterial;
                      buildPointTSLNodesFromUniforms: (
                          uniforms: Record<string, THREE.IUniform>,
                          config?: PointTSLConfig,
                      ) => PointTSLNodes;
                  };
                  line: {
                      lineWebGPUFactory: (
                          nodes: LineTSLNodes,
                          config?: LineTSLConfig,
                          outMaterial?: NodeMaterial,
                      ) => NodeMaterial;
                      buildLineTSLNodesFromUniforms: (
                          uniforms: Record<string, THREE.IUniform>,
                          config?: LineTSLConfig,
                      ) => LineTSLNodes;
                  };
                  capsuleLine: {
                      capsuleLineWebGPUFactory: (
                          nodes: LineTSLNodes,
                          config?: LineTSLConfig,
                          outMaterial?: NodeMaterial,
                      ) => NodeMaterial;
                      buildLineTSLNodesFromUniforms: (
                          uniforms: Record<string, THREE.IUniform>,
                          config?: LineTSLConfig,
                      ) => LineTSLNodes;
                  };
                  gsplat: {
                      gsplatWebGPUFactory: (
                          nodes: GSplatTSLNodes,
                          config?: GSplatTSLConfig,
                          outMaterial?: NodeMaterial,
                      ) => NodeMaterial;
                      buildGSplatTSLNodesFromUniforms: (
                          uniforms: Record<string, THREE.IUniform>,
                      ) => GSplatTSLNodes;
                  };
                  mesh: {
                      meshWebGPUFactory: (
                          nodes: MeshTSLNodes,
                          config?: MeshTSLConfig,
                          outMaterial?: NodeMaterial,
                      ) => NodeMaterial;
                      buildMeshTSLNodesFromUniforms: (
                          uniforms: Record<string, THREE.IUniform>,
                          config?: MeshTSLConfig,
                      ) => MeshTSLNodes;
                  };
                  mega: {
                      megaWebGPUFactory: (
                          uniforms: Record<string, THREE.IUniform>,
                          config?: MegaTSLConfig,
                          outMaterial?: NodeMaterial,
                      ) => NodeMaterial;
                  };
                  pickPoint: {
                      pointPickWebGPUFactory: (
                          nodes: PointPickTSLNodes,
                          outMaterial?: NodeMaterial,
                      ) => NodeMaterial;
                      buildPointPickTSLNodesFromUniforms: (
                          uniforms: Record<string, THREE.IUniform>,
                      ) => PointPickTSLNodes;
                  };
                  pickLine: {
                      linePickWebGPUFactory: (
                          nodes: LinePickTSLNodes,
                          config?: LinePickTSLConfig,
                          outMaterial?: NodeMaterial,
                      ) => NodeMaterial;
                      buildLinePickTSLNodesFromUniforms: (
                          uniforms: Record<string, THREE.IUniform>,
                      ) => LinePickTSLNodes;
                  };
                  pickCapsuleLine: {
                      capsuleLinePickWebGPUFactory: (
                          nodes: LinePickTSLNodes,
                          config?: CapsuleLinePickTSLConfig,
                          outMaterial?: NodeMaterial,
                      ) => NodeMaterial;
                      buildLinePickTSLNodesFromUniforms: (
                          uniforms: Record<string, THREE.IUniform>,
                      ) => LinePickTSLNodes;
                  };
                  pickGsplat: {
                      gsplatPickWebGPUFactory: (
                          nodes: GSplatPickTSLNodes,
                          outMaterial?: NodeMaterial,
                      ) => NodeMaterial;
                      buildGSplatPickTSLNodesFromUniforms: (
                          uniforms: Record<string, THREE.IUniform>,
                      ) => GSplatPickTSLNodes;
                  };
                  pickMesh: {
                      meshPickWebGPUFactory: (
                          nodes: MeshPickTSLNodes,
                          outMaterial?: NodeMaterial,
                      ) => NodeMaterial;
                      buildMeshPickTSLNodesFromUniforms: (
                          uniforms: Record<string, THREE.IUniform>,
                      ) => MeshPickTSLNodes;
                  };
                  bloom: {
                      bloomThresholdWebGPUFactory: (
                          uniforms: Record<string, THREE.IUniform>,
                      ) => NodeMaterial;
                      bloomDownsampleWebGPUFactory: (
                          uniforms: Record<string, THREE.IUniform>,
                      ) => NodeMaterial;
                      bloomUpsampleWebGPUFactory: (
                          uniforms: Record<string, THREE.IUniform>,
                      ) => NodeMaterial;
                  };
                  fxaa: {
                      fxaaWebGPUFactory: (
                          uniforms: Record<string, THREE.IUniform>,
                      ) => NodeMaterial;
                  };
              };
          },
      >