@babylonjs/viewer
Version:
The Babylon Viewer aims to simplify a specific but common Babylon.js use case: loading, viewing, and interacting with a 3D model.
34 lines (32 loc) • 1.37 kB
JavaScript
const ext = {
id: "KHR_materials_diffuse_transmission",
async applyMaterial(mat, ctx) {
const e = mat._rawMatDef?.extensions?.KHR_materials_diffuse_transmission;
if (!e) {
return null;
}
const intensity = typeof e.diffuseTransmissionFactor === "number" ? e.diffuseTransmissionFactor : 0;
const [colorTex, intensityTex] = await Promise.all([ctx._texture(e.diffuseTransmissionColorTexture, true), ctx._texture(e.diffuseTransmissionTexture, false)]);
if (intensity <= 0 && !colorTex && !intensityTex) {
return null;
}
const cf = Array.isArray(e.diffuseTransmissionColorFactor) && e.diffuseTransmissionColorFactor.length === 3 ? e.diffuseTransmissionColorFactor : [1, 1, 1];
const out = {
subsurface: {
translucency: {
intensity,
color: [cf[0], cf[1], cf[2]],
...colorTex ? { colorTexture: colorTex } : void 0,
...intensityTex ? { intensityTexture: intensityTex } : void 0
},
// Thin-surface diffuse transmission has no volume: BJS sets
// min = max = 0 so the Burley transmittance collapses to exactly
// the tint color (thickness clamps to epsilon, temp → 1).
thickness: { min: 0, max: 0 }
}
};
return out;
}
};
export { ext as default };
//# sourceMappingURL=gltf-ext-diffuse-transmission-B6LFJcNz.esm.js.map