gpu-curtains
Version:
gpu-curtains is a 3D WebGPU rendering engine. It can be used as a standalone 3D engine, but also includes extra classes focused on mapping 3d objects to DOM elements; It allows users to synchronize values such as position, sizing, or scale between them.
31 lines (30 loc) • 1.31 kB
JavaScript
//#region src/core/shaders/chunks/fragment/body/get-IBL-clearcoat-indirect-radiance.ts
/**
* Get the environment map clearcoat indirect radiance (specular) contribution as `clearcoatRadiance` (`vec3f`).
*
* @param parameters - Parameters used to create the shader chunk.
* @param parameters.extensionsUsed - {@link PBRFragmentShaderInputParams.extensionsUsed | extensionsUsed} to check if clearcoat is enabled.
* @param parameters.environmentMap - {@link extras/environmentMap/EnvironmentMap.EnvironmentMap | EnvironmentMap} to use for indirect irradiance if any.
* @returns - String with the `clearcoatRadiance` (`vec3f`) value set.
*/
const getIBLClearcoatIndirectRadiance = ({ extensionsUsed = [], environmentMap = null }) => {
let iblClearcoatIndirectSpecular = "";
if (extensionsUsed.includes("KHR_materials_clearcoat")) {
iblClearcoatIndirectSpecular += `
var clearcoatRadiance = vec3(0.0);
`;
if (environmentMap) iblClearcoatIndirectSpecular += `
clearcoatRadiance += getIBLIndirectRadiance(
clearcoatNormal,
viewDirection,
clearcoatRoughness,
${environmentMap.sampler.name},
${environmentMap.specularTexture.options.name},
envRotation,
envSpecularIntensity,
);`;
}
return iblClearcoatIndirectSpecular;
};
//#endregion
export { getIBLClearcoatIndirectRadiance };