Class: MaterialFactory<TModuleProps, TBindings>
Defined in: modules/engine/src/material/material-factory.ts:66
Creates typed Material instances for a stable material binding schema.
Examples
const pbrFactory = new MaterialFactory<
{pbrMaterial: PBRMaterialUniforms},
PBRMaterialBindings
>(device, {modules: [pbrMaterial]});
const pbr = pbrFactory.createMaterial();
pbr.setProps({pbrMaterial: {baseColorFactor: [1, 0, 0, 1]}});
const pbrVariant = pbr.clone({bindings: {pbr_baseColorSampler: texture}});
const phongFactory = new MaterialFactory<
{phongMaterial: PhongMaterialProps},
{}
>(device, {modules: [phongMaterial]});
const phong = phongFactory.createMaterial();
phong.setProps({phongMaterial: {ambient: 0.4, diffuse: 0.7}});
const phongVariant = phong.clone({moduleProps: {phongMaterial: {shininess: 64}}});
const gouraudFactory = new MaterialFactory<
{gouraudMaterial: GouraudMaterialProps},
{}
>(device, {modules: [gouraudMaterial]});
const gouraud = gouraudFactory.createMaterial();
gouraud.setProps({gouraudMaterial: {ambient: 0.25}});
const gouraudVariant = gouraud.clone({moduleProps: {gouraudMaterial: {diffuse: 0.8}}});
Type Parameters
TModuleProps
TModuleProps extends MaterialModuleProps = MaterialModuleProps
TBindings
TBindings extends MaterialBindings = MaterialBindings
Constructors
Constructor
new MaterialFactory<
TModuleProps,TBindings>(device,props?):MaterialFactory<TModuleProps,TBindings>
Defined in: modules/engine/src/material/material-factory.ts:78
Parameters
device
Device
props?
MaterialFactoryProps = {}
Returns
MaterialFactory<TModuleProps, TBindings>
Properties
device
readonlydevice:Device
Defined in: modules/engine/src/material/material-factory.ts:71
Device that creates materials for this schema.
modules
readonlymodules:ShaderModule[]
Defined in: modules/engine/src/material/material-factory.ts:73
Shader modules that define the material schema.
Methods
createMaterial()
createMaterial(
props?):Material<TModuleProps,TBindings>
Defined in: modules/engine/src/material/material-factory.ts:90
Creates one typed material instance for this factory's schema.
Parameters
props?
Omit<MaterialProps<TModuleProps, TBindings>, "factory" | "modules"> = {}
Returns
Material<TModuleProps, TBindings>
getBindingNames()
getBindingNames():
string[]
Defined in: modules/engine/src/material/material-factory.ts:100
Returns the logical material-owned resource binding names.
Returns
string[]
getBindingsByGroup()
getBindingsByGroup(
bindings):BindingsByGroup
Defined in: modules/engine/src/material/material-factory.ts:120
Packages resolved material bindings into bind group 3.
Parameters
bindings
Partial<{ [K in string | number | symbol]: Binding }> & Record<string, Binding>
Returns
BindingsByGroup
ownsBinding()
ownsBinding(
bindingName):boolean
Defined in: modules/engine/src/material/material-factory.ts:105
Returns true when the supplied binding belongs to this material schema.
Parameters
bindingName
string
Returns
boolean
ownsModule()
ownsModule(
moduleName):boolean
Defined in: modules/engine/src/material/material-factory.ts:115
Returns true when the supplied shader module is owned by this material schema.
Parameters
moduleName
string
Returns
boolean