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

    Function setTslMaterials

    • Publish the loaded registry. Called only by load.ts.

      Parameters

      • loaded: {
            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;
                };
            };
        }
        • Readonlymaterials: {
              point: typeof PointTSLMaterial;
              line: typeof LineTSLMaterial;
              gsplat: typeof GSplatTSLMaterial;
              mesh: typeof MeshTSLMaterial;
              meshPhysical: typeof PhysicalMeshTSLMaterial;
          }

          Visual material classes, keyed by geometry kind.

          • Readonlypoint: typeof PointTSLMaterial
          • Readonlyline: typeof LineTSLMaterial
          • Readonlygsplat: typeof GSplatTSLMaterial
          • Readonlymesh: typeof MeshTSLMaterial
          • ReadonlymeshPhysical: typeof PhysicalMeshTSLMaterial

            The physical mesh family — three's MeshPhysicalNodeMaterial behind the Luxar leaf-material surface. Its own key rather than a variant of mesh, because none of the house contracts (codegen snapshots, per-epoch shading variant, blend-mode defines) apply to it; picking still uses picking.mesh.

        • Readonlyenvironment: {
              PMREMGenerator: typeof PMREMGenerator;
              CubeRenderTarget: typeof CubeRenderTarget;
          }

          Backend-specific scene-environment tooling (rendering/environment/).

        • Readonlypicking: {
              point: typeof PointPickingTSLMaterial;
              line: typeof LinePickingTSLMaterial;
              gsplat: typeof GSplatPickingTSLMaterial;
              mesh: typeof MeshPickingTSLMaterial;
          }

          Picking material classes, keyed by geometry kind.

        • Readonlymega: typeof MegaShaderTSLMaterial

          The single post-processing mega-shader material class.

        • Readonlyfactories: {
              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;
              };
          }

          Graph factories, for the ShaderSource.webgpu closures. Those closures stay next to their GLSL twin (they carry shader-specific notes about reading build-time uniforms) and pull the factory from here instead of importing it, which is what actually cuts the eager edge.

          • Readonlypoint: {
                pointWebGPUFactory: (
                    nodes: PointTSLNodes,
                    config?: PointTSLConfig,
                    outMaterial?: NodeMaterial,
                ) => NodeMaterial;
                buildPointTSLNodesFromUniforms: (
                    uniforms: Record<string, THREE.IUniform>,
                    config?: PointTSLConfig,
                ) => PointTSLNodes;
            }
          • Readonlyline: {
                lineWebGPUFactory: (
                    nodes: LineTSLNodes,
                    config?: LineTSLConfig,
                    outMaterial?: NodeMaterial,
                ) => NodeMaterial;
                buildLineTSLNodesFromUniforms: (
                    uniforms: Record<string, THREE.IUniform>,
                    config?: LineTSLConfig,
                ) => LineTSLNodes;
            }
            • lineWebGPUFactory: (
                  nodes: LineTSLNodes,
                  config?: LineTSLConfig,
                  outMaterial?: NodeMaterial,
              ) => NodeMaterial
            • buildLineTSLNodesFromUniforms: (
                  uniforms: Record<string, THREE.IUniform>,
                  config?: LineTSLConfig,
              ) => LineTSLNodes
          • ReadonlycapsuleLine: {
                capsuleLineWebGPUFactory: (
                    nodes: LineTSLNodes,
                    config?: LineTSLConfig,
                    outMaterial?: NodeMaterial,
                ) => NodeMaterial;
                buildLineTSLNodesFromUniforms: (
                    uniforms: Record<string, THREE.IUniform>,
                    config?: LineTSLConfig,
                ) => LineTSLNodes;
            }
            • capsuleLineWebGPUFactory: (
                  nodes: LineTSLNodes,
                  config?: LineTSLConfig,
                  outMaterial?: NodeMaterial,
              ) => NodeMaterial
            • buildLineTSLNodesFromUniforms: (
                  uniforms: Record<string, THREE.IUniform>,
                  config?: LineTSLConfig,
              ) => LineTSLNodes
          • Readonlygsplat: {
                gsplatWebGPUFactory: (
                    nodes: GSplatTSLNodes,
                    config?: GSplatTSLConfig,
                    outMaterial?: NodeMaterial,
                ) => NodeMaterial;
                buildGSplatTSLNodesFromUniforms: (
                    uniforms: Record<string, THREE.IUniform>,
                ) => GSplatTSLNodes;
            }
            • gsplatWebGPUFactory: (
                  nodes: GSplatTSLNodes,
                  config?: GSplatTSLConfig,
                  outMaterial?: NodeMaterial,
              ) => NodeMaterial
            • buildGSplatTSLNodesFromUniforms: (uniforms: Record<string, THREE.IUniform>) => GSplatTSLNodes
          • Readonlymesh: {
                meshWebGPUFactory: (
                    nodes: MeshTSLNodes,
                    config?: MeshTSLConfig,
                    outMaterial?: NodeMaterial,
                ) => NodeMaterial;
                buildMeshTSLNodesFromUniforms: (
                    uniforms: Record<string, THREE.IUniform>,
                    config?: MeshTSLConfig,
                ) => MeshTSLNodes;
            }
            • meshWebGPUFactory: (
                  nodes: MeshTSLNodes,
                  config?: MeshTSLConfig,
                  outMaterial?: NodeMaterial,
              ) => NodeMaterial
            • buildMeshTSLNodesFromUniforms: (
                  uniforms: Record<string, THREE.IUniform>,
                  config?: MeshTSLConfig,
              ) => MeshTSLNodes
          • Readonlymega: {
                megaWebGPUFactory: (
                    uniforms: Record<string, THREE.IUniform>,
                    config?: MegaTSLConfig,
                    outMaterial?: NodeMaterial,
                ) => NodeMaterial;
            }
            • megaWebGPUFactory: (
                  uniforms: Record<string, THREE.IUniform>,
                  config?: MegaTSLConfig,
                  outMaterial?: NodeMaterial,
              ) => NodeMaterial
          • ReadonlypickPoint: {
                pointPickWebGPUFactory: (
                    nodes: PointPickTSLNodes,
                    outMaterial?: NodeMaterial,
                ) => NodeMaterial;
                buildPointPickTSLNodesFromUniforms: (
                    uniforms: Record<string, THREE.IUniform>,
                ) => PointPickTSLNodes;
            }
            • pointPickWebGPUFactory: (nodes: PointPickTSLNodes, outMaterial?: NodeMaterial) => NodeMaterial
            • buildPointPickTSLNodesFromUniforms: (uniforms: Record<string, THREE.IUniform>) => PointPickTSLNodes
          • ReadonlypickLine: {
                linePickWebGPUFactory: (
                    nodes: LinePickTSLNodes,
                    config?: LinePickTSLConfig,
                    outMaterial?: NodeMaterial,
                ) => NodeMaterial;
                buildLinePickTSLNodesFromUniforms: (
                    uniforms: Record<string, THREE.IUniform>,
                ) => LinePickTSLNodes;
            }
          • ReadonlypickCapsuleLine: {
                capsuleLinePickWebGPUFactory: (
                    nodes: LinePickTSLNodes,
                    config?: CapsuleLinePickTSLConfig,
                    outMaterial?: NodeMaterial,
                ) => NodeMaterial;
                buildLinePickTSLNodesFromUniforms: (
                    uniforms: Record<string, THREE.IUniform>,
                ) => LinePickTSLNodes;
            }
          • ReadonlypickGsplat: {
                gsplatPickWebGPUFactory: (
                    nodes: GSplatPickTSLNodes,
                    outMaterial?: NodeMaterial,
                ) => NodeMaterial;
                buildGSplatPickTSLNodesFromUniforms: (
                    uniforms: Record<string, THREE.IUniform>,
                ) => GSplatPickTSLNodes;
            }
            • gsplatPickWebGPUFactory: (nodes: GSplatPickTSLNodes, outMaterial?: NodeMaterial) => NodeMaterial
            • buildGSplatPickTSLNodesFromUniforms: (uniforms: Record<string, THREE.IUniform>) => GSplatPickTSLNodes
          • ReadonlypickMesh: {
                meshPickWebGPUFactory: (
                    nodes: MeshPickTSLNodes,
                    outMaterial?: NodeMaterial,
                ) => NodeMaterial;
                buildMeshPickTSLNodesFromUniforms: (
                    uniforms: Record<string, THREE.IUniform>,
                ) => MeshPickTSLNodes;
            }
            • meshPickWebGPUFactory: (nodes: MeshPickTSLNodes, outMaterial?: NodeMaterial) => NodeMaterial
            • buildMeshPickTSLNodesFromUniforms: (uniforms: Record<string, THREE.IUniform>) => MeshPickTSLNodes
          • Readonlybloom: {
                bloomThresholdWebGPUFactory: (
                    uniforms: Record<string, THREE.IUniform>,
                ) => NodeMaterial;
                bloomDownsampleWebGPUFactory: (
                    uniforms: Record<string, THREE.IUniform>,
                ) => NodeMaterial;
                bloomUpsampleWebGPUFactory: (
                    uniforms: Record<string, THREE.IUniform>,
                ) => NodeMaterial;
            }
            • bloomThresholdWebGPUFactory: (uniforms: Record<string, THREE.IUniform>) => NodeMaterial
            • bloomDownsampleWebGPUFactory: (uniforms: Record<string, THREE.IUniform>) => NodeMaterial
            • bloomUpsampleWebGPUFactory: (uniforms: Record<string, THREE.IUniform>) => NodeMaterial
          • Readonlyfxaa: {
                fxaaWebGPUFactory: (
                    uniforms: Record<string, THREE.IUniform>,
                ) => NodeMaterial;
            }
            • fxaaWebGPUFactory: (uniforms: Record<string, THREE.IUniform>) => NodeMaterial

      Returns void