Source code for dipy.viz.skyline.wgsl
"""WGSL shader sources for DIPY's SH billboard rendering pipeline."""
def _register_dipy_wgsl_loader():
"""Register this package with Fury's Jinja WGSL loader if dependencies exist.
None
Failures are swallowed so Skyline degrades gracefully without WGSL extras.
"""
try:
import jinja2
from pygfx.renderers.wgpu.shader.templating import (
register_wgsl_loader,
root_loader,
)
if "dipy" not in root_loader.mapping:
register_wgsl_loader(
"dipy",
jinja2.PackageLoader("dipy.viz.wgsl", "."),
)
except Exception:
pass
[docs]
def load_dipy_wgsl(name: str) -> str:
"""Load a UTF-8 WGSL/Jinja template shipped inside ``dipy.viz.skyline.wgsl``.
Parameters
----------
name : str
Relative filename inside the package resource tree.
Returns
-------
str
Shader source text.
"""
import importlib.resources
ref = importlib.resources.files(__package__) / name
with importlib.resources.as_file(ref) as path, open(path, "rb") as fh:
return fh.decode() if isinstance(fh, bytes) else fh.read().decode()
_register_dipy_wgsl_loader()