playcanvas
Version:
Open-source WebGL/WebGPU 3D engine for the web
42 lines (41 loc) • 1.59 kB
JavaScript
import { extractTextureTransform } from "./khr-texture-transform.js";
const KHR_materials_clearcoat = {
apply(data, material, textures) {
if (data.hasOwnProperty("clearcoatFactor")) {
material.clearCoat = data.clearcoatFactor * 0.25;
} else {
material.clearCoat = 0;
}
if (data.hasOwnProperty("clearcoatTexture")) {
const clearcoatTexture = data.clearcoatTexture;
material.clearCoatMap = textures[clearcoatTexture.index];
material.clearCoatMapChannel = "r";
extractTextureTransform(clearcoatTexture, material, ["clearCoat"]);
}
if (data.hasOwnProperty("clearcoatRoughnessFactor")) {
material.clearCoatGloss = data.clearcoatRoughnessFactor;
} else {
material.clearCoatGloss = 0;
}
if (data.hasOwnProperty("clearcoatRoughnessTexture")) {
const clearcoatRoughnessTexture = data.clearcoatRoughnessTexture;
material.clearCoatGlossMap = textures[clearcoatRoughnessTexture.index];
material.clearCoatGlossMapChannel = "g";
extractTextureTransform(clearcoatRoughnessTexture, material, ["clearCoatGloss"]);
}
if (data.hasOwnProperty("clearcoatNormalTexture")) {
const clearcoatNormalTexture = data.clearcoatNormalTexture;
material.clearCoatNormalMap = textures[clearcoatNormalTexture.index];
extractTextureTransform(clearcoatNormalTexture, material, ["clearCoatNormal"]);
if (clearcoatNormalTexture.hasOwnProperty("scale")) {
material.clearCoatBumpiness = clearcoatNormalTexture.scale;
} else {
material.clearCoatBumpiness = 1;
}
}
material.clearCoatGlossInvert = true;
}
};
export {
KHR_materials_clearcoat
};