Provides access to various functionality related to MDL distilling. More...
#include <imdl_distiller_api.h>

Public Member Functions | |
| virtual Size | get_target_count () const =0 |
| Returns the number of targets supported for distilling. More... | |
| virtual const char * | get_target_name (Size index) const =0 |
Returns the index -th target name supported for distilling, or nullptr if index is out of bounds. More... | |
| virtual ICompiled_material * | distill_material (const ICompiled_material *material, const char *target, const IMap *distiller_options=nullptr, Sint32 *errors=nullptr) const =0 |
| Distills a material. More... | |
| virtual const IBaker * | create_baker (const ICompiled_material *material, const char *path, Baker_resource resource=BAKE_ON_CPU, Uint32 gpu_device_id=0) const =0 |
| Creates a baker for texture baking. More... | |
| virtual Size | get_required_module_count (const char *target) const =0 |
| Returns the number of required MDL modules for the given target. More... | |
| virtual const char * | get_required_module_name (const char *target, Size index) const =0 |
| Returns the MDL name of the required MDL module with the given index for the given target. More... | |
| virtual const char * | get_required_module_code (const char *target, Size index) const =0 |
| Returns the MDL source code of the required MDL module with the given index for the given target. More... | |
Public Member Functions inherited from mi::base::IInterface | |
| virtual Uint32 | retain () const =0 |
| Increments the reference count. More... | |
| virtual Uint32 | release () const =0 |
| Decrements the reference count. More... | |
| virtual const IInterface * | get_interface (const Uuid &interface_id) const =0 |
| Acquires a const interface from another. More... | |
| template<class T> | |
| const T * | get_interface () const |
| Acquires a const interface from another. More... | |
| virtual IInterface * | get_interface (const Uuid &interface_id)=0 |
| Acquires a mutable interface from another. More... | |
| template<class T> | |
| T * | get_interface () |
| Acquires a mutable interface from another. More... | |
| virtual Uuid | get_iid () const =0 |
| Returns the interface ID of the most derived interface. More... | |
Additional Inherited Members | |
Public Types inherited from mi::base::Interface_declare< 0x074709ef, ... > | |
| using | Self = Interface_declare< id1, ... > |
| Own type. More... | |
| using | IID = Uuid_t< id1, ... > |
| Declares the interface ID (IID) of this interface. More... | |
Public Types inherited from mi::base::IInterface | |
| using | IID = Uuid_t<0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0> |
| Declares the interface ID (IID) of this interface. More... | |
Static Public Member Functions inherited from mi::base::Interface_declare< 0x074709ef, ... > | |
| static bool | compare_iid (const Uuid &iid) |
Compares the interface ID iid against the interface ID of this interface and of its ancestors. More... | |
Static Public Member Functions inherited from mi::base::IInterface | |
| static bool | compare_iid (const Uuid &iid) |
Compares the interface ID iid against the interface ID of this interface. More... | |
Provides access to various functionality related to MDL distilling.
|
pure virtual |
Creates a baker for texture baking.
| material | The material of which a subexpression is to be baked. |
| path | The path from the material root to the expression that should be baked, e.g., "surface.scattering.tint". The supported expression types are
|
| resource | The resource to be used for baking. |
| gpu_device_id | The device ID of the GPU to be used for baking (as identified by the CUDA runtime or driver API). Ignored if resource is BAKE_ON_CPU. |
path, or nullptr in case of failure. Note that the returned baker depends on the transaction that was used to access the material.
|
pure virtual |
Distills a material.
Material distilling refers to the translation of an arbitrary input material to a predefined target model. Supported target models are
Depending on the structure of the input material and the complexity of the target model the resulting material can be as simple as a single bsdf or a set of bsdfs combined using layerers and mixes as illustrated in the table below using a pseudo-mdl notation.
| diffuse | surface.scattering = diffuse_reflection_bsdf geometry.normal = () |
| specular_glossy | surface.scattering = custom_curve_layer(layer: bsdf_glossy_ggx_vcavities,
base: diffuse_reflection_bsdf) geometry.normal = () |
| surface.scattering = bsdf_glossy_ggx_vcavities geometry.normal = () | |
| surface.scattering = diffuse_reflection_bsdf geometry.normal = () | |
| ue4 | surface.scattering = custom_curve_layer( // clearcoat layer: bsdf_glossy_ggx_vcavities, base: weighted_layer( layer: normalized_mix( bsdf_glossy_ggx_vcavities, custom_curve_layer( layer: bsdf_glossy_ggx_vcavities, base: diffuse_reflection_bsdf ), ), normal: () // under-clearcoat normal ), normal: () // clearcoat normal ) |
| A weighted_layer of any subset of the above construct with an optional clearcoat on top. | |
| transmissive_pbr | surface.scattering = custom_curve_layer( // clearcoat layer: bsdf_glossy_ggx_vcavities, base: weighted_layer( layer: normalized_mix( bsdf_glossy_ggx_vcavities, custom_curve_layer( layer: bsdf_glossy_ggx_vcavities, base: normalized_mix( bsdf_glossy_ggx_vcavities(scatter_transmit) diffuse_reflection_bsdf ), ), ), normal: () // under-clearcoat normal ), normal: () // clearcoat normal ) |
| A weighted_layer of any subset of the above construct with an optional clearcoat on top. |
| material | The material to be distilled. |
| target | The target model. See get_target_count() and get_target_name(). |
| distiller_options | Options for the distiller. Supported options are:
|
| errors | An optional pointer to an mi::Sint32 to which an error code will be written. The error codes have the following meaning:
|
nullptr in case of failure.
|
pure virtual |
Returns the MDL source code of the required MDL module with the given index for the given target.
| target | The target material model to distill to. |
| index | The index of the required module for the given target. |
|
pure virtual |
Returns the number of required MDL modules for the given target.
If a target reports any required modules, the integrating application must query the name and MDL code for each of them using get_required_module_name() and get_required_module_code() and load them using mi::neuraylib::IMdl_impexp_api::load_module_from_string() before distilling any material to that target, otherwise distilling will fail.
| target | The target material model to distill to. |
|
pure virtual |
Returns the MDL name of the required MDL module with the given index for the given target.
| target | The target material model to distill to. |
| index | The index of the required module for the given target. |
|
pure virtual |
Returns the number of targets supported for distilling.
|
pure virtual |
Returns the index -th target name supported for distilling, or nullptr if index is out of bounds.