UNPKG

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.

40 lines (35 loc) 1.09 kB
const getIBLVolumeRefraction = ({ transmissionBackgroundTexture = null, extensionsUsed = [] }) => { const hasDispersion = extensionsUsed.includes("KHR_materials_dispersion"); const iblVolumeRefractionFunction = hasDispersion ? "getIBLVolumeRefractionWithDispersion" : "getIBLVolumeRefraction"; return transmissionBackgroundTexture ? ( /* wgsl */ ` var transmissionAlpha: f32 = 1.0; var transmitted: vec4f = ${iblVolumeRefractionFunction}( normal, normalize(viewDirection), roughness, baseDiffuseColor, specularColor, specularF90, worldPosition, modelScale, camera.view, camera.projection, dispersion, ior, thickness, attenuationColor, attenuationDistance, ${transmissionBackgroundTexture.texture.options.name}, ${transmissionBackgroundTexture.sampler.name}, ); transmissionAlpha = mix( transmissionAlpha, transmitted.a, transmission ); totalDiffuse = mix(totalDiffuse, transmitted.rgb, transmission); outputColor.a *= transmissionAlpha;` ) : ""; }; export { getIBLVolumeRefraction };