@gltf-transform/extensions
Version:
Adds extension support to @gltf-transform/core
51 lines (50 loc) • 2.28 kB
TypeScript
import { Extension, type ReaderContext, type WriterContext } from '@gltf-transform/core';
import { KHR_MATERIALS_DIFFUSE_TRANSMISSION } from '../constants.js';
import { DiffuseTransmission } from './diffuse-transmission.js';
/**
* [KHR_materials_diffuse_transmission](https://github.com/KhronosGroup/gltf/blob/main/extensions/2.0/Khronos/KHR_materials_diffuse_transmission/)
* defines diffuse transmission on a glTF PBR material.
*
* 
*
* > _**Figure:** Sphere using `KHR_materials_diffuse_transmission` with varying roughness (0.0, 0.2, 0.4).
* > Source: Khronos Group._
*
* Adds a Lambertian diffuse transmission BSDF to the metallic-roughness
* material. Thin, dielectric objects like leaves or paper diffusely transmit
* incoming light to the opposite side of the surface. For optically thick
* media (volumes) with short scattering distances and therefore dense
* scattering behavior, a diffuse transmission lobe is a phenomenological
* plausible and cheap approximation.
*
* Properties:
* - {@link DiffuseTransmission}
*
* ### Example
*
* ```typescript
* import { KHRMaterialsDiffuseTransmission, DiffuseTransmission } from '@gltf-transform/extensions';
*
* // Create an Extension attached to the Document.
* const diffuseTransmissionExtension = document.createExtension(KHRMaterialsDiffuseTransmission);
*
* // Create DiffuseTransmission property.
* const diffuseTransmission = diffuseTransmission.createDiffuseTransmission()
* .setDiffuseTransmissionFactor(1.0);
*
* // Assign to a Material.
* material.setExtension('KHR_materials_diffuse_transmission', diffuseTransmission);
* ```
*
* @experimental KHR_materials_diffuse_transmission is not yet ratified by the Khronos Group.
*/
export declare class KHRMaterialsDiffuseTransmission extends Extension {
readonly extensionName: typeof KHR_MATERIALS_DIFFUSE_TRANSMISSION;
static readonly EXTENSION_NAME: typeof KHR_MATERIALS_DIFFUSE_TRANSMISSION;
/** Creates a new DiffuseTransmission property for use on a {@link Material}. */
createDiffuseTransmission(): DiffuseTransmission;
/** @hidden */
read(context: ReaderContext): this;
/** @hidden */
write(context: WriterContext): this;
}