UNPKG

playcanvas

Version:

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

3 lines (2 loc) 1.28 kB
declare const _default: "\n#ifndef ENV_ATLAS\n #define ENV_ATLAS\n var texture_envAtlas: texture_2d<f32>;\n var texture_envAtlasSampler: sampler;\n#endif\n\nvar texture_cubeMap: texture_cube<f32>;\nvar texture_cubeMapSampler: sampler;\nuniform material_reflectivity: f32;\n\nfn calcReflection(reflDir: vec3f, gloss: f32) -> vec3f {\n let dir: vec3f = cubeMapProject(reflDir) * vec3f(-1.0, 1.0, 1.0);\n let uv: vec2f = toSphericalUv(dir);\n\n // calculate roughness level\n let level: f32 = saturate(1.0 - gloss) * 5.0;\n let ilevel: f32 = floor(level);\n let flevel: f32 = level - ilevel;\n\n let sharp: vec3f = {reflectionCubemapDecode}(textureSample(texture_cubeMap, texture_cubeMapSampler, dir));\n let roughA: vec3f = {reflectionDecode}(textureSample(texture_envAtlas, texture_envAtlasSampler, mapRoughnessUv(uv, ilevel)));\n let roughB: vec3f = {reflectionDecode}(textureSample(texture_envAtlas, texture_envAtlasSampler, mapRoughnessUv(uv, ilevel + 1.0)));\n\n return processEnvironment(mix(sharp, mix(roughA, roughB, flevel), min(level, 1.0)));\n}\n\nfn addReflection(reflDir: vec3f, gloss: f32) {\n dReflection = dReflection + vec4f(calcReflection(reflDir, gloss), uniform.material_reflectivity);\n}\n"; export default _default;