UNPKG

playcanvas

Version:

Open-source WebGL/WebGPU 3D engine for the web

19 lines (18 loc) 911 B
var reflDirAniso_default = ` fn getReflDir(worldNormal: vec3f, viewDir: vec3f, gloss: f32, tbn: mat3x3f) { let roughness: f32 = sqrt(1.0 - min(gloss, 1.0)); let direction: vec2f = dAnisotropyRotation; let anisotropicT: vec3f = normalize(tbn * vec3f(direction, 0.0)); let anisotropicB: vec3f = normalize(cross(tbn[2], anisotropicT)); let anisotropy: f32 = dAnisotropy; let anisotropicDirection: vec3f = anisotropicB; let anisotropicTangent: vec3f = cross(anisotropicDirection, viewDir); let anisotropicNormal: vec3f = cross(anisotropicTangent, anisotropicDirection); let bendFactor: f32 = 1.0 - anisotropy * (1.0 - roughness); let bendFactor4: f32 = bendFactor * bendFactor * bendFactor * bendFactor; let bentNormal: vec3f = normalize(mix(normalize(anisotropicNormal), normalize(worldNormal), bendFactor4)); dReflDirW = reflect(-viewDir, bentNormal); }`; export { reflDirAniso_default as default };