PageSourceSearch

https://www.envirofone.com/_next/static/chunks/34719.b7aee0c5aa0f6594.js

js envirofone.com collected 2026-10-03 23:28:30 UTC 52,797 bytes, 824 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[34719],{10732:(e,t,o)=>{o.d(t,{I:()=>n});var i=o(52019);let a="pbrDebug",r=`#if DEBUGMODE>0
2if (vClipSpacePosition.x/vClipSpacePosition.w>=vDebugMode.x) {
3#if DEBUGMODE==1
4gl_FragColor.rgb=vPositionW.rgb;
5#define DEBUGMODE_NORMALIZE
6#elif DEBUGMODE==2 && defined(NORMAL)
7gl_FragColor.rgb=vNormalW.rgb;
8#define DEBUGMODE_NORMALIZE
9#elif DEBUGMODE==3 && defined(BUMP) || DEBUGMODE==3 && defined(PARALLAX) || DEBUGMODE==3 && defined(ANISOTROPIC)
10gl_FragColor.rgb=TBN[0];
11#define DEBUGMODE_NORMALIZE
12#elif DEBUGMODE==4 && defined(BUMP) || DEBUGMODE==4 && defined(PARALLAX) || DEBUGMODE==4 && defined(ANISOTROPIC)
13gl_FragColor.rgb=TBN[1];
14#define DEBUGMODE_NORMALIZE
15#elif DEBUGMODE==5
16gl_FragColor.rgb=normalW;
17#define DEBUGMODE_NORMALIZE
18#elif DEBUGMODE==6 && defined(MAINUV1)
19gl_FragColor.rgb=vec3(vMainUV1,0.0);
20#elif DEBUGMODE==7 && defined(MAINUV2)
21gl_FragColor.rgb=vec3(vMainUV2,0.0);
22#elif DEBUGMODE==8 && defined(CLEARCOAT) && defined(CLEARCOAT_BUMP)
23gl_FragColor.rgb=clearcoatOut.TBNClearCoat[0];
24#define DEBUGMODE_NORMALIZE
25#elif DEBUGMODE==9 && defined(CLEARCOAT) && defined(CLEARCOAT_BUMP)
26gl_FragColor.rgb=clearcoatOut.TBNClearCoat[1];
27#define DEBUGMODE_NORMALIZE
28#elif DEBUGMODE==10 && defined(CLEARCOAT)
29gl_FragColor.rgb=clearcoatOut.clearCoatNormalW;
30#define DEBUGMODE_NORMALIZE
31#elif DEBUGMODE==11 && defined(ANISOTROPIC)
32gl_FragColor.rgb=anisotropicOut.anisotropicNormal;
33#define DEBUGMODE_NORMALIZE
34#elif DEBUGMODE==12 && defined(ANISOTROPIC)
35gl_FragColor.rgb=anisotropicOut.anisotropicTangent;
36#define DEBUGMODE_NORMALIZE
37#elif DEBUGMODE==13 && defined(ANISOTROPIC)
38gl_FragColor.rgb=anisotropicOut.anisotropicBitangent;
39#define DEBUGMODE_NORMALIZE
40#elif DEBUGMODE==20 && defined(ALBEDO)
41gl_FragColor.rgb=albedoTexture.rgb;
42#ifndef GAMMAALBEDO
43#define DEBUGMODE_GAMMA
44#endif
45#elif DEBUGMODE==21 && defined(AMBIENT)
46gl_FragColor.rgb=aoOut.ambientOcclusionColorMap.rgb;
47#elif DEBUGMODE==22 && defined(OPACITY)
48gl_FragColor.rgb=opacityMap.rgb;
49#elif DEBUGMODE==23 && defined(EMISSIVE)
50gl_FragColor.rgb=emissiveColorTex.rgb;
51#ifndef GAMMAEMISSIVE
52#define DEBUGMODE_GAMMA
53#endif
54#elif DEBUGMODE==24 && defined(LIGHTMAP)
55gl_FragColor.rgb=lightmapColor.rgb;
56#ifndef GAMMALIGHTMAP
57#define DEBUGMODE_GAMMA
58#endif
59#elif DEBUGMODE==25 && defined(REFLECTIVITY) && defined(METALLICWORKFLOW)
60gl_FragColor.rgb=reflectivityOut.surfaceMetallicColorMap.rgb;
61#elif DEBUGMODE==26 && defined(REFLECTIVITY) && !defined(METALLICWORKFLOW)
62gl_FragColor.rgb=reflectivityOut.surfaceReflectivityColorMap.rgb;
63#define DEBUGMODE_GAMMA
64#elif DEBUGMODE==27 && defined(CLEARCOAT) && defined(CLEARCOAT_TEXTURE)
65gl_FragColor.rgb=vec3(clearcoatOut.clearCoatMapData.rg,0.0);
66#elif DEBUGMODE==28 && defined(CLEARCOAT) && defined(CLEARCOAT_TINT) && defined(CLEARCOAT_TINT_TEXTURE)
67gl_FragColor.rgb=clearcoatOut.clearCoatTintMapData.rgb;
68#elif DEBUGMODE==29 && defined(SHEEN) && defined(SHEEN_TEXTURE)
69gl_FragColor.rgb=sheenOut.sheenMapData.rgb;
70#elif DEBUGMODE==30 && defined(ANISOTROPIC) && defined(ANISOTROPIC_TEXTURE)
71gl_FragColor.rgb=anisotropicOut.anisotropyMapData.rgb;
72#elif DEBUGMODE==31 && defined(SUBSURFACE) && defined(SS_THICKNESSANDMASK_TEXTURE)
73gl_FragColor.rgb=subSurfaceOut.thicknessMap.rgb;
74#elif DEBUGMODE==32 && defined(BUMP)
75gl_FragColor.rgb=texture2D(bumpSampler,vBumpUV).rgb;
76#elif DEBUGMODE==40 && defined(SS_REFRACTION)
77gl_FragColor.rgb=subSurfaceOut.environmentRefraction.rgb;
78#define DEBUGMODE_GAMMA
79#elif DEBUGMODE==41 && defined(REFLECTION)
80gl_FragColor.rgb=reflectionOut.environmentRadiance.rgb;
81#ifndef GAMMAREFLECTION
82#define DEBUGMODE_GAMMA
83#endif
84#elif DEBUGMODE==42 && defined(CLEARCOAT) && defined(REFLECTION)
85gl_FragColor.rgb=clearcoatOut.environmentClearCoatRadiance.rgb;
86#define DEBUGMODE_GAMMA
87#elif DEBUGMODE==50
88gl_FragColor.rgb=diffuseBase.rgb;
89#define DEBUGMODE_GAMMA
90#elif DEBUGMODE==51 && defined(SPECULARTERM)
91gl_FragColor.rgb=specularBase.rgb;
92#define DEBUGMODE_GAMMA
93#elif DEBUGMODE==52 && defined(CLEARCOAT)
94gl_FragColor.rgb=clearCoatBase.rgb;
95#define DEBUGMODE_GAMMA
96#elif DEBUGMODE==53 && defined(SHEEN)
97gl_FragColor.rgb=sheenBase.rgb;
98#define DEBUGMODE_GAMMA
99#elif DEBUGMODE==54 && defined(REFLECTION)
100gl_FragColor.rgb=reflectionOut.environmentIrradiance.rgb;
101#ifndef GAMMAREFLECTION
102#define DEBUGMODE_GAMMA
103#endif
104#elif DEBUGMODE==60
105gl_FragColor.rgb=surfaceAlbedo.rgb;
106#define DEBUGMODE_GAMMA
107#elif DEBUGMODE==61
108gl_FragColor.rgb=clearcoatOut.specularEnvironmentR0;
109#define DEBUGMODE_GAMMA
110#elif DEBUGMODE==62 && defined(METALLICWORKFLOW)
111gl_FragColor.rgb=vec3(reflectivityOut.metallic);
112#elif DEBUGMODE==71 && defined(METALLICWORKFLOW)
113gl_FragColor.rgb=reflectivityOut.metallicF0;
114#elif DEBUGMODE==63
115gl_FragColor.rgb=vec3(roughness);
116#elif DEBUGMODE==64
117gl_FragColor.rgb=vec3(alphaG);
118#elif DEBUGMODE==65
119gl_FragColor.rgb=vec3(NdotV);
120#elif DEBUGMODE==66 && defined(CLEARCOAT) && defined(CLEARCOAT_TINT)
121gl_FragColor.rgb=clearcoatOut.clearCoatColor.rgb;
122#define DEBUGMODE_GAMMA
123#elif DEBUGMODE==67 && defined(CLEARCOAT)
124gl_FragColor.rgb=vec3(clearcoatOut.clearCoatRoughness);
125#elif DEBUGMODE==68 && defined(CLEARCOAT)
126gl_FragColor.rgb=vec3(clearcoatOut.clearCoatNdotV);
127#elif DEBUGMODE==69 && defined(SUBSURFACE) && defined(SS_TRANSLUCENCY)
128gl_FragColor.rgb=subSurfaceOut.transmittance;
129#elif DEBUGMODE==70 && defined(SUBSURFACE) && defined(SS_REFRACTION)
130gl_FragColor.rgb=subSurfaceOut.refractionTransmittance;
131#elif DEBUGMODE==72
132gl_FragColor.rgb=vec3(microSurface);
133#elif DEBUGMODE==73
134gl_FragColor.rgb=vAlbedoColor.rgb;
135#define DEBUGMODE_GAMMA
136#elif DEBUGMODE==74 && !defined(METALLICWORKFLOW)
137gl_FragColor.rgb=vReflectivityColor.rgb;
138#define DEBUGMODE_GAMMA
139#elif DEBUGMODE==75
140gl_FragColor.rgb=vEmissiveColor.rgb;
141#define DEBUGMODE_GAMMA
142#elif DEBUGMODE==80 && defined(RADIANCEOCCLUSION)
143gl_FragColor.rgb=vec3(seo);
144#elif DEBUGMODE==81 && defined(HORIZONOCCLUSION) && defined(BUMP) && defined(REFLECTIONMAP_3D)
145gl_FragColor.rgb=vec3(eho);
146#elif DEBUGMODE==82 && defined(MS_BRDF_ENERGY_CONSERVATION)
147gl_FragColor.rgb=vec3(energyConservationFactor);
148#elif DEBUGMODE==83 && defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)
149gl_FragColor.rgb=baseSpecularEnvironmentReflectance;
150#define DEBUGMODE_GAMMA
151#elif DEBUGMODE==84 && defined(CLEARCOAT) && defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)
152gl_FragColor.rgb=clearcoatOut.clearCoatEnvironmentReflectance;
153#define DEBUGMODE_GAMMA
154#elif DEBUGMODE==85 && defined(SHEEN) && defined(REFLECTION)
155gl_FragColor.rgb=sheenOut.sheenEnvironmentReflectance;
156#define DEBUGMODE_GAMMA
157#elif DEBUGMODE==86 && defined(ALPHABLEND)
158gl_FragColor.rgb=vec3(luminanceOverAlpha);
159#elif DEBUGMODE==87
160gl_FragColor.rgb=vec3(alpha);
161#elif DEBUGMODE==88 && defined(ALBEDO)
162gl_FragColor.rgb=vec3(albedoTexture.a);
163#elif DEBUGMODE==89
164gl_FragColor.rgb=aoOut.ambientOcclusionColor.rgb;
165#else
166float stripeWidth=30.;float stripePos=floor(gl_FragCoord.x/stripeWidth);float whichColor=mod(stripePos,2.);vec3 color1=vec3(.6,.2,.2);vec3 color2=vec3(.3,.1,.1);gl_FragColor.rgb=mix(color1,color2,whichColor);
167#endif
168gl_FragColor.rgb*=vDebugMode.y;
169#ifdef DEBUGMODE_NORMALIZE
170gl_FragColor.rgb=normalize(gl_FragColor.rgb)*0.5+0.5;
171#endif
172#ifdef DEBUGMODE_GAMMA
173gl_FragColor.rgb=toGammaSpace(gl_FragColor.rgb);
174#endif
175gl_FragColor.a=1.0;
176#ifdef PREPASS
177gl_FragData[0]=toLinearSpace(gl_FragColor); 
178gl_FragData[1]=vec4(0.,0.,0.,0.); 
179#endif
180#ifdef DEBUGMODE_FORCERETURN
181return;
182#endif
183}
184#endif
185`;i.l.IncludesShadersStore[a]||(i.l.IncludesShadersStore[a]=r);let n={name:a,shader:r}},17890:(e,t,o)=>{o.d(t,{k:()=>n});var i=o(52019);let a="pbrHelperFunctions",r=`#define MINIMUMVARIANCE 0.0005
186#ifndef TEXRD_DEFINED
187#define TEXRD(s,uv) texture2D(s,uv)
188#define TEXRD_DEFINED
189#endif
190float convertRoughnessToAverageSlope(float roughness)
191{return square(roughness)+MINIMUMVARIANCE;}
192float fresnelGrazingReflectance(float reflectance0) {float reflectance90=saturate(reflectance0*25.0);return reflectance90;}
193vec2 getAARoughnessFactors(vec3 normalVector) {
194#ifdef SPECULARAA
195vec3 nDfdx=dFdx(normalVector.xyz);vec3 nDfdy=dFdy(normalVector.xyz);float slopeSquare=max(dot(nDfdx,nDfdx),dot(nDfdy,nDfdy));float geometricRoughnessFactor=pow(saturate(slopeSquare),0.333);float geometricAlphaGFactor=sqrt(slopeSquare);geometricAlphaGFactor*=0.75;return vec2(geometricRoughnessFactor,geometricAlphaGFactor);
196#else
197return vec2(0.);
198#endif
199}
200#ifdef ANISOTROPIC
201#ifdef ANISOTROPIC_LEGACY
202vec2 getAnisotropicRoughness(float alphaG,float anisotropy) {float alphaT=max(alphaG*(1.0+anisotropy),MINIMUMVARIANCE);float alphaB=max(alphaG*(1.0-anisotropy),MINIMUMVARIANCE);return vec2(alphaT,alphaB);}
203vec3 getAnisotropicBentNormals(const vec3 T,const vec3 B,const vec3 N,const vec3 V,float anisotropy,float roughness) {vec3 anisotropicFrameDirection;if (anisotropy>=0.0) {anisotropicFrameDirection=B;} else {anisotropicFrameDirection=T;}
204vec3 anisotropicFrameTangent=cross(normalize(anisotropicFrameDirection),V);vec3 anisotropicFrameNormal=cross(anisotropicFrameTangent,anisotropicFrameDirection);vec3 anisotropicNormal=normalize(mix(N,anisotropicFrameNormal,abs(anisotropy)));return anisotropicNormal;}
205#elif ANISOTROPIC_OPENPBR
206vec2 getAnisotropicRoughness(float alphaG,float anisotropy) {float alphaT=max(alphaG*alphaG*sqrt(2.0/(1.0+(1.0-anisotropy)*(1.0-anisotropy))),MINIMUMVARIANCE);float alphaB=max(alphaT*(1.0-anisotropy),MINIMUMVARIANCE);return vec2(alphaT,alphaB);}
207#else
208vec2 getAnisotropicRoughness(float alphaG,float anisotropy) {float alphaT=max(mix(alphaG,1.0,anisotropy*anisotropy),MINIMUMVARIANCE);float alphaB=max(alphaG,MINIMUMVARIANCE);return vec2(alphaT,alphaB);}
209vec3 getAnisotropicBentNormals(const vec3 T,const vec3 B,const vec3 N,const vec3 V,float anisotropy,float roughness) {vec3 bentNormal=cross(B,V);bentNormal=normalize(cross(bentNormal,B));float a=square(square(1.0-anisotropy*(1.0-roughness)));bentNormal=normalize(mix(bentNormal,N,a));return bentNormal;}
210#endif
211#endif
212#if defined(CLEARCOAT) || defined(SS_REFRACTION)
213vec3 cocaLambert(vec3 alpha,float distance) {return exp(-alpha*distance);}
214vec3 cocaLambert(float NdotVRefract,float NdotLRefract,vec3 alpha,float thickness) {return cocaLambert(alpha,(thickness*((NdotLRefract+NdotVRefract)/(NdotLRefract*NdotVRefract))));}
215vec3 computeColorAtDistanceInMedia(vec3 color,float distance) {return -log(color)/distance;}
216vec3 computeClearCoatAbsorption(float NdotVRefract,float NdotLRefract,vec3 clearCoatColor,float clearCoatThickness,float clearCoatIntensity) {vec3 clearCoatAbsorption=mix(vec3(1.0),
217cocaLambert(NdotVRefract,NdotLRefract,clearCoatColor,clearCoatThickness),
218clearCoatIntensity);return clearCoatAbsorption;}
219#endif
220#ifdef MICROSURFACEAUTOMATIC
221float computeDefaultMicroSurface(float microSurface,vec3 reflectivityColor)
222{const float kReflectivityNoAlphaWorkflow_SmoothnessMax=0.95;float reflectivityLuminance=getLuminance(reflectivityColor);float reflectivityLuma=sqrt(reflectivityLuminance);microSurface=reflectivityLuma*kReflectivityNoAlphaWorkflow_SmoothnessMax;return microSurface;}
223#endif
224`;i.l.IncludesShadersStore[a]||(i.l.IncludesShadersStore[a]=r);let n={name:a,shader:r}},26604:(e,t,o)=>{o.d(t,{o:()=>n});var i=o(52019);let a="importanceSampling",r=`vec3 hemisphereCosSample(vec2 u) {float phi=2.*PI*u.x;float cosTheta2=1.-u.y;float cosTheta=sqrt(cosTheta2);float sinTheta=sqrt(1.-cosTheta2);return vec3(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);}
225vec3 hemisphereImportanceSampleDggx(vec2 u,float a) {float phi=2.*PI*u.x;float cosTheta2=(1.-u.y)/(1.+(a+1.)*((a-1.)*u.y));float cosTheta=sqrt(cosTheta2);float sinTheta=sqrt(1.-cosTheta2);return vec3(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);}
226vec3 hemisphereImportanceSampleDggxAnisotropic(vec2 Xi,float alphaTangent,float alphaBitangent)
227{alphaTangent=max(alphaTangent,0.0001);alphaBitangent=max(alphaBitangent,0.0001);float phi=atan(alphaBitangent/alphaTangent*tan(2.0*3.14159265*Xi.x));if (Xi.x>0.5) phi+=3.14159265; 
228float cosPhi=cos(phi);float sinPhi=sin(phi);float alpha2=(cosPhi*cosPhi)/(alphaTangent*alphaTangent) +
229(sinPhi*sinPhi)/(alphaBitangent*alphaBitangent);float tanTheta2=Xi.y/(1.0-Xi.y)/alpha2;float cosTheta=1.0/sqrt(1.0+tanTheta2);float sinTheta=sqrt(max(0.0,1.0-cosTheta*cosTheta));return vec3(sinTheta*cosPhi,sinTheta*sinPhi,cosTheta);}
230vec3 hemisphereImportanceSampleDCharlie(vec2 u,float a) { 
231float phi=2.*PI*u.x;float sinTheta=pow(u.y,a/(2.*a+1.));float cosTheta=sqrt(1.-sinTheta*sinTheta);return vec3(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);}`;i.l.IncludesShadersStore[a]||(i.l.IncludesShadersStore[a]=r);let n={name:a,shader:r}},34882:(e,t,o)=>{o.d(t,{s:()=>n});var i=o(52019);o(27973);let a="pbrDirectLightingSetupFunctions",r=`struct preLightingInfo
232{vec3 lightOffset;float lightDistanceSquared;float lightDistance;float attenuation;vec3 L;vec3 H;float NdotV;float NdotLUnclamped;float NdotL;float VdotH;float LdotV;float roughness;float diffuseRoughness;vec3 surfaceAlbedo;
233#ifdef IRIDESCENCE
234float iridescenceIntensity;
235#endif
236#if defined(AREALIGHTUSED) && defined(AREALIGHTSUPPORTED)
237vec3 areaLightDiffuse;
238#ifdef SPECULARTERM
239vec3 areaLightSpecular;vec4 areaLightFresnel;
240#endif
241#endif
242};preLightingInfo computePointAndSpotPreLightingInfo(vec4 lightData,vec3 V,vec3 N,vec3 posW) {preLightingInfo result;result.lightOffset=lightData.xyz-posW;result.lightDistanceSquared=dot(result.lightOffset,result.lightOffset);result.lightDistance=sqrt(result.lightDistanceSquared);result.L=normalize(result.lightOffset);result.H=normalize(V+result.L);result.VdotH=saturate(dot(V,result.H));result.NdotLUnclamped=dot(N,result.L);result.NdotL=saturateEps(result.NdotLUnclamped);result.LdotV=0.;result.roughness=0.;result.diffuseRoughness=0.;result.surfaceAlbedo=vec3(0.);return result;}
243preLightingInfo computeDirectionalPreLightingInfo(vec4 lightData,vec3 V,vec3 N) {preLightingInfo result;result.lightDistance=length(-lightData.xyz);result.L=normalize(-lightData.xyz);result.H=normalize(V+result.L);result.VdotH=saturate(dot(V,result.H));result.NdotLUnclamped=dot(N,result.L);result.NdotL=saturateEps(result.NdotLUnclamped);result.LdotV=dot(result.L,V);result.roughness=0.;result.diffuseRoughness=0.;result.surfaceAlbedo=vec3(0.);return result;}
244preLightingInfo computeHemisphericPreLightingInfo(vec4 lightData,vec3 V,vec3 N) {preLightingInfo result;result.NdotL=dot(N,lightData.xyz)*0.5+0.5;result.NdotL=saturateEps(result.NdotL);result.NdotLUnclamped=result.NdotL;
245#ifdef SPECULARTERM
246result.L=normalize(lightData.xyz);result.H=normalize(V+result.L);result.VdotH=saturate(dot(V,result.H));
247#endif
248result.LdotV=0.;result.roughness=0.;result.diffuseRoughness=0.;result.surfaceAlbedo=vec3(0.);return result;}
249#if defined(AREALIGHTUSED) && defined(AREALIGHTSUPPORTED)
250#include<ltcHelperFunctions>
251uniform sampler2D areaLightsLTC1Sampler;uniform sampler2D areaLightsLTC2Sampler;preLightingInfo computeAreaPreLightingInfo(sampler2D ltc1,sampler2D ltc2,vec3 viewDirectionW,vec3 vNormal,vec3 vPosition,vec4 lightData,vec3 halfWidth,vec3 halfHeight,float roughness )
252{preLightingInfo result;result.lightOffset=lightData.xyz-vPosition;result.lightDistanceSquared=dot(result.lightOffset,result.lightOffset);result.lightDistance=sqrt(result.lightDistanceSquared);areaLightData data=computeAreaLightSpecularDiffuseFresnel(ltc1,ltc2,viewDirectionW,vNormal,vPosition,lightData.xyz,halfWidth,halfHeight,roughness);
253#ifdef SPECULARTERM
254result.areaLightFresnel=data.Fresnel;result.areaLightSpecular=data.Specular;
255#endif
256result.areaLightDiffuse=data.Diffuse;result.LdotV=0.;result.roughness=0.;result.diffuseRoughness=0.;result.surfaceAlbedo=vec3(0.);return result;}
257preLightingInfo computeAreaPreLightingInfoWithTexture(sampler2D ltc1,sampler2D ltc2,sampler2D emissionTexture,vec3 viewDirectionW,vec3 vNormal,vec3 vPosition,vec4 lightData,vec3 halfWidth,vec3 halfHeight,float roughness )
258{preLightingInfo result;result.lightOffset=lightData.xyz-vPosition;result.lightDistanceSquared=dot(result.lightOffset,result.lightOffset);result.lightDistance=sqrt(result.lightDistanceSquared);areaLightData data=computeAreaLightSpecularDiffuseFresnelWithEmission(ltc1,ltc2,emissionTexture,viewDirectionW,vNormal,vPosition,lightData.xyz,halfWidth,halfHeight,roughness);
259#ifdef SPECULARTERM
260result.areaLightFresnel=data.Fresnel;result.areaLightSpecular=data.Specular;
261#endif
262result.areaLightDiffuse=data.Diffuse;result.LdotV=0.;result.roughness=0.;result.diffuseRoughness=0.;result.surfaceAlbedo=vec3(0.);return result;}
263#endif
264`;i.l.IncludesShadersStore[a]||(i.l.IncludesShadersStore[a]=r);let n={name:a,shader:r}},35735:(e,t,o)=>{o.d(t,{D:()=>n});var i=o(52019);let a="pbrDirectLightingFalloffFunctions",r=`float computeDistanceLightFalloff_Standard(vec3 lightOffset,float range)
265{return max(0.,1.0-length(lightOffset)/range);}
266float computeDistanceLightFalloff_Physical(float lightDistanceSquared)
267{return 1.0/maxEps(lightDistanceSquared);}
268float computeDistanceLightFalloff_GLTF(float lightDistanceSquared,float inverseSquaredRange)
269{float lightDistanceFalloff=1.0/maxEps(lightDistanceSquared);float factor=lightDistanceSquared*inverseSquaredRange;
269float attenuation=saturate(1.0-factor*factor);attenuation*=attenuation;lightDistanceFalloff*=attenuation;return lightDistanceFalloff;}
270float computeDistanceLightFalloff(vec3 lightOffset,float lightDistanceSquared,float range,float inverseSquaredRange)
271{
272#ifdef USEPHYSICALLIGHTFALLOFF
273return computeDistanceLightFalloff_Physical(lightDistanceSquared);
274#elif defined(USEGLTFLIGHTFALLOFF)
275return computeDistanceLightFalloff_GLTF(lightDistanceSquared,inverseSquaredRange);
276#else
277return computeDistanceLightFalloff_Standard(lightOffset,range);
278#endif
279}
280float computeDirectionalLightFalloff_Standard(vec3 lightDirection,vec3 directionToLightCenterW,float cosHalfAngle,float exponent)
281{float falloff=0.0;float cosAngle=maxEps(dot(-lightDirection,directionToLightCenterW));if (cosAngle>=cosHalfAngle)
282{falloff=max(0.,pow(cosAngle,exponent));}
283return falloff;}
284float computeDirectionalLightFalloff_IES(vec3 lightDirection,vec3 directionToLightCenterW,sampler2D iesLightSampler)
285{float cosAngle=dot(-lightDirection,directionToLightCenterW);float angle=acos(cosAngle)/PI;return texture2D(iesLightSampler,vec2(angle,0.)).r;}
286float computeDirectionalLightFalloff_Physical(vec3 lightDirection,vec3 directionToLightCenterW,float cosHalfAngle)
287{const float kMinusLog2ConeAngleIntensityRatio=6.64385618977; 
288float concentrationKappa=kMinusLog2ConeAngleIntensityRatio/(1.0-cosHalfAngle);vec4 lightDirectionSpreadSG=vec4(-lightDirection*concentrationKappa,-concentrationKappa);float falloff=exp2(dot(vec4(directionToLightCenterW,1.0),lightDirectionSpreadSG));return falloff;}
289float computeDirectionalLightFalloff_GLTF(vec3 lightDirection,vec3 directionToLightCenterW,float lightAngleScale,float lightAngleOffset)
290{float cd=dot(-lightDirection,directionToLightCenterW);float falloff=saturate(cd*lightAngleScale+lightAngleOffset);falloff*=falloff;return falloff;}
291float computeDirectionalLightFalloff(vec3 lightDirection,vec3 directionToLightCenterW,float cosHalfAngle,float exponent,float lightAngleScale,float lightAngleOffset)
292{
293#ifdef USEPHYSICALLIGHTFALLOFF
294return computeDirectionalLightFalloff_Physical(lightDirection,directionToLightCenterW,cosHalfAngle);
295#elif defined(USEGLTFLIGHTFALLOFF)
296return computeDirectionalLightFalloff_GLTF(lightDirection,directionToLightCenterW,lightAngleScale,lightAngleOffset);
297#else
298return computeDirectionalLightFalloff_Standard(lightDirection,directionToLightCenterW,cosHalfAngle,exponent);
299#endif
300}`;i.l.IncludesShadersStore[a]||(i.l.IncludesShadersStore[a]=r);let n={name:a,shader:r}},36358:(e,t,o)=>{o.d(t,{S:()=>n});var i=o(52019);let a="harmonicsFunctions",r=`#ifdef USESPHERICALFROMREFLECTIONMAP
301#ifdef SPHERICAL_HARMONICS
302vec3 computeEnvironmentIrradiance(vec3 normal) {return vSphericalL00
303+ vSphericalL1_1*(normal.y)
304+ vSphericalL10*(normal.z)
305+ vSphericalL11*(normal.x)
306+ vSphericalL2_2*(normal.y*normal.x)
307+ vSphericalL2_1*(normal.y*normal.z)
308+ vSphericalL20*((3.0*normal.z*normal.z)-1.0)
309+ vSphericalL21*(normal.z*normal.x)
310+ vSphericalL22*(normal.x*normal.x-(normal.y*normal.y));}
311#else
312vec3 computeEnvironmentIrradiance(vec3 normal) {float Nx=normal.x;float Ny=normal.y;float Nz=normal.z;vec3 C1=vSphericalZZ.rgb;vec3 Cx=vSphericalX.rgb;vec3 Cy=vSphericalY.rgb;vec3 Cz=vSphericalZ.rgb;vec3 Cxx_zz=vSphericalXX_ZZ.rgb;vec3 Cyy_zz=vSphericalYY_ZZ.rgb;vec3 Cxy=vSphericalXY.rgb;vec3 Cyz=vSphericalYZ.rgb;vec3 Czx=vSphericalZX.rgb;vec3 a1=Cyy_zz*Ny+Cy;vec3 a2=Cyz*Nz+a1;vec3 b1=Czx*Nz+Cx;vec3 b2=Cxy*Ny+b1;vec3 b3=Cxx_zz*Nx+b2;vec3 t1=Cz *Nz+C1;vec3 t2=a2 *Ny+t1;vec3 t3=b3 *Nx+t2;return t3;}
313#endif
314#endif
315`;i.l.IncludesShadersStore[a]||(i.l.IncludesShadersStore[a]=r);let n={name:a,shader:r}},50060:(e,t,o)=>{o.d(t,{E:()=>n});var i=o(52019);let a="hdrFilteringFunctions",r=`#if NUM_SAMPLES
316#if NUM_SAMPLES>0
317#if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
318float radicalInverse_VdC(uint bits) 
319{bits=(bits<<16u) | (bits>>16u);bits=((bits & 0x55555555u)<<1u) | ((bits & 0xAAAAAAAAu)>>1u);bits=((bits & 0x33333333u)<<2u) | ((bits & 0xCCCCCCCCu)>>2u);bits=((bits & 0x0F0F0F0Fu)<<4u) | ((bits & 0xF0F0F0F0u)>>4u);bits=((bits & 0x00FF00FFu)<<8u) | ((bits & 0xFF00FF00u)>>8u);return float(bits)*2.3283064365386963e-10; }
320vec2 hammersley(uint i,uint N)
321{return vec2(float(i)/float(N),radicalInverse_VdC(i));}
322#else
323float vanDerCorpus(int n,int base)
324{float invBase=1.0/float(base);float denom =1.0;float result =0.0;for(int i=0; i<32; ++i)
325{if(n>0)
326{denom =mod(float(n),2.0);result+=denom*invBase;invBase=invBase/2.0;n =int(float(n)/2.0);}}
327return result;}
328vec2 hammersley(int i,int N)
329{return vec2(float(i)/float(N),vanDerCorpus(i,2));}
330#endif
331float log4(float x) {return log2(x)/2.;}
332vec3 uv_to_normal(vec2 uv) {vec3 N;vec2 uvRange=uv;float theta=uvRange.x*2.*PI;float phi=uvRange.y*PI;float sinPhi=sin(phi);N.x=cos(theta)*sinPhi;N.z=sin(theta)*sinPhi;N.y=cos(phi);return N;}
333const float NUM_SAMPLES_FLOAT=float(NUM_SAMPLES);const float NUM_SAMPLES_FLOAT_INVERSED=1./NUM_SAMPLES_FLOAT;const float K=4.;
334#define inline
335vec3 irradiance(
336#ifdef CUSTOM_IRRADIANCE_FILTERING_INPUT
337CUSTOM_IRRADIANCE_FILTERING_INPUT
338#else
339samplerCube inputTexture,
340#endif
341vec3 inputN,vec2 filteringInfo,
342float diffuseRoughness,
343vec3 surfaceAlbedo,
344vec3 inputV
345#if IBL_CDF_FILTERING
346,sampler2D icdfSampler
347#endif
348)
349{vec3 n=normalize(inputN);vec3 result=vec3(0.);
350#ifndef IBL_CDF_FILTERING
351vec3 tangent=abs(n.z)<0.999 ? vec3(0.,0.,1.) : vec3(1.,0.,0.);tangent=normalize(cross(tangent,n));vec3 bitangent=cross(n,tangent);mat3 tbn=mat3(tangent,bitangent,n);mat3 tbnInverse=mat3(tangent.x,bitangent.x,n.x,tangent.y,bitangent.y,n.y,tangent.z,bitangent.z,n.z);
352#endif
353float maxLevel=filteringInfo.y;float dim0=filteringInfo.x;float omegaP=(4.*PI)/(6.*dim0*dim0);vec3 clampedAlbedo=clamp(surfaceAlbedo,vec3(0.1),vec3(1.0));
354#if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
355for(uint i=0u; i<NUM_SAMPLES; ++i)
356#else
357for(int i=0; i<NUM_SAMPLES; ++i)
358#endif
359{vec2 Xi=hammersley(i,NUM_SAMPLES);
360#if IBL_CDF_FILTERING
361vec2 T;T.x=texture2D(icdfSampler,vec2(Xi.x,0.)).x;T.y=texture2D(icdfSampler,vec2(T.x,Xi.y)).y;vec3 Ls=uv_to_normal(vec2(1.0-fract(T.x+0.25),T.y));float NoL=dot(n,Ls);float NoV=dot(n,inputV);
362#if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
363float LoV=dot (Ls,inputV);
364#elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY
365vec3 H=(inputV+Ls)*0.5;float VoH=dot(inputV,H);
366#endif
367#else
368vec3 Ls=hemisphereCosSample(Xi);Ls=normalize(Ls);float NoL=Ls.z; 
369vec3 V=tbnInverse*inputV;float NoV=V.z; 
370#if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
371float LoV=dot (Ls,V);
372#elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY
373vec3 H=(V+Ls)*0.5;float VoH=dot(V,H);
374#endif
375#endif
376if (NoL>0.) {
377#if IBL_CDF_FILTERING
378float pdf=texture2D(icdfSampler,T).z;vec3 c=textureCubeLodEXT(inputTexture,Ls,0.).rgb;
379#else
380float pdf_inversed=PI/NoL;float omegaS=NUM_SAMPLES_FLOAT_INVERSED*pdf_inversed;float l=log4(omegaS)-log4(omegaP)+log4(K);float mipLevel=clamp(l,0.,maxLevel);
381#ifdef CUSTOM_IRRADIANCE_FILTERING_FUNCTION
382CUSTOM_IRRADIANCE_FILTERING_FUNCTION
383#else
384vec3 c=textureCubeLodEXT(inputTexture,tbn*Ls,mipLevel).rgb;
385#endif
386#endif
387#if GAMMA_INPUT
388c=toLinearSpace(c);
389#endif
390vec3 diffuseRoughnessTerm=vec3(1.0);
391#if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
392diffuseRoughnessTerm=diffuseBRDF_EON(clampedAlbedo,diffuseRoughness,NoL,NoV,LoV)*PI;
393#elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY
394diffuseRoughnessTerm=vec3(diffuseBRDF_Burley(NoL,NoV,VoH,diffuseRoughness)*PI);
395#endif
396#if IBL_CDF_FILTERING
397vec3 light=pdf<1e-6 ? vec3(0.0) : vec3(1.0)/vec3(pdf)*c;result+=NoL*diffuseRoughnessTerm*light;
398#else
399result+=c*diffuseRoughnessTerm;
400#endif
401}}
402result=result*NUM_SAMPLES_FLOAT_INVERSED;
403#if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
404result=result/clampedAlbedo;
405#endif
406return result;}
407#define inline
408vec3 radiance(float alphaG,samplerCube inputTexture,vec3 inputN,vec2 filteringInfo)
409{vec3 n=normalize(inputN);vec3 c=textureCubeLodEXT(inputTexture,n,0.).rgb; 
410if (alphaG==0.) {
411#if GAMMA_INPUT
412c=toLinearSpace(c);
413#endif
414return c;} else {vec3 result=vec3(0.);vec3 tangent=abs(n.z)<0.999 ? vec3(0.,0.,1.) : vec3(1.,0.,0.);tangent=normalize(cross(tangent,n));vec3 bitangent=cross(n,tangent);mat3 tbn=mat3(tangent,bitangent,n);float maxLevel=filteringInfo.y;float dim0=filteringInfo.x;float omegaP=(4.*PI)/(6.*dim0*dim0);float weight=0.;
415#if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
416for(uint i=0u; i<NUM_SAMPLES; ++i)
417#else
418for(int i=0; i<NUM_SAMPLES; ++i)
419#endif
420{vec2 Xi=hammersley(i,NUM_SAMPLES);vec3 H=hemisphereImportanceSampleDggx(Xi,alphaG);float NoV=1.;float NoH=H.z;float NoH2=H.z*H.z;float NoL=2.*NoH2-1.;vec3 L=vec3(2.*NoH*H.x,2.*NoH*H.y,NoL);L=normalize(L);if (NoL>0.) {float pdf_inversed=4./normalDistributionFunction_TrowbridgeReitzGGX(NoH,alph
420aG);float omegaS=NUM_SAMPLES_FLOAT_INVERSED*pdf_inversed;float l=log4(omegaS)-log4(omegaP)+log4(K);float mipLevel=clamp(float(l),0.0,maxLevel);weight+=NoL;vec3 c=textureCubeLodEXT(inputTexture,tbn*L,mipLevel).rgb;
421#if GAMMA_INPUT
422c=toLinearSpace(c);
423#endif
424result+=c*NoL;}}
425result=result/weight;return result;}}
426#ifdef ANISOTROPIC
427#define inline
428vec3 radianceAnisotropic(
429float alphaTangent, 
430float alphaBitangent, 
431samplerCube inputTexture,
432vec3 inputView, 
433vec3 inputTangent, 
434vec3 inputBitangent, 
435vec3 inputNormal, 
436vec2 filteringInfo,
437vec2 noiseInput, 
438bool isRefraction,
439float ior 
440)
441{vec3 V=inputView;vec3 N=inputNormal;vec3 T=inputTangent;vec3 B=inputBitangent;vec3 result=vec3(0.);float maxLevel=filteringInfo.y;float dim0=filteringInfo.x;float clampedAlphaT=max(alphaTangent,MINIMUMVARIANCE);float clampedAlphaB=max(alphaBitangent,MINIMUMVARIANCE);float effectiveDim=dim0*sqrt(clampedAlphaT*clampedAlphaB);float omegaP=(4.*PI)/(6.*effectiveDim*effectiveDim);const float noiseScale=clamp(log2(float(NUM_SAMPLES))/12.0f,0.0f,1.0f);float weight=0.;
442#if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
443for(uint i=0u; i<NUM_SAMPLES; ++i)
444#else
445for(int i=0; i<NUM_SAMPLES; ++i)
446#endif
447{vec2 Xi=hammersley(i,NUM_SAMPLES);Xi=fract(Xi+noiseInput*mix(0.5f,0.015f,noiseScale)); 
448vec3 H_tangent=hemisphereImportanceSampleDggxAnisotropic(Xi,clampedAlphaT,clampedAlphaB);vec3 H=normalize(H_tangent.x*T+H_tangent.y*B+H_tangent.z*N);vec3 L;if (isRefraction) {L=refract(-V,H,1.0/ior);} else {L=reflect(-V,H);}
449float NoH=max(dot(N,H),0.001);float VoH=max(dot(V,H),0.001);float NoL=max(dot(N,L),0.001);if (NoL>0.) {float pdf_inversed=4./normalDistributionFunction_BurleyGGX_Anisotropic(
450H_tangent.z,H_tangent.x,H_tangent.y,vec2(clampedAlphaT,clampedAlphaB)
451);float omegaS=NUM_SAMPLES_FLOAT_INVERSED*pdf_inversed;float l=log4(omegaS)-log4(omegaP)+log4(K);float mipLevel=clamp(float(l),0.0,maxLevel);weight+=NoL;vec3 c=textureCubeLodEXT(inputTexture,L,mipLevel).rgb;
452#if GAMMA_INPUT
453c=toLinearSpace(c);
454#endif
455result+=c*NoL;}}
456result=result/weight;return result;}
457#endif
458#endif
459#endif
460`;i.l.IncludesShadersStore[a]||(i.l.IncludesShadersStore[a]=r);let n={name:a,shader:r}},53948:(e,t,o)=>{o.d(t,{G:()=>n});var i=o(52019);let a="pbrBRDFFunctions",r=`#define FRESNEL_MAXIMUM_ON_ROUGH 0.25
461#define BRDF_DIFFUSE_MODEL_EON 0
462#define BRDF_DIFFUSE_MODEL_BURLEY 1
463#define BRDF_DIFFUSE_MODEL_LAMBERT 2
464#define BRDF_DIFFUSE_MODEL_LEGACY 3
465#define DIELECTRIC_SPECULAR_MODEL_GLTF 0
466#define DIELECTRIC_SPECULAR_MODEL_OPENPBR 1
467#define CONDUCTOR_SPECULAR_MODEL_GLTF 0
468#define CONDUCTOR_SPECULAR_MODEL_OPENPBR 1
469#if !defined(PBR_VERTEX_SHADER) && !defined(OPENPBR_VERTEX_SHADER)
470#ifdef MS_BRDF_ENERGY_CONSERVATION
471vec3 getEnergyConservationFactor(const vec3 specularEnvironmentR0,const vec3 environmentBrdf) {return 1.0+specularEnvironmentR0*(1.0/environmentBrdf.y-1.0);}
472#endif
473#if CONDUCTOR_SPECULAR_MODEL==CONDUCTOR_SPECULAR_MODEL_OPENPBR
474#define F82_COS_THETA_MAX 0.142857143
475#define F82_ONE_MINUS_CTM_POW5 0.462664366 
476#define F82_ONE_MINUS_CTM_POW6 0.396569457 
477#define F82_B_DENOMINATOR_RECIP 17.6512785 
478#define BRDF_Z_SCALE 16.0
479vec3 getF82Specular(float NdotV,vec3 F0,vec3 edgeTint,float roughness) {vec3 white_minus_F0=vec3(1.0)-F0;vec3 b=(F0+white_minus_F0*F82_ONE_MINUS_CTM_POW5)*(vec3(1.0)-edgeTint)*F82_B_DENOMINATOR_RECIP;float cos_theta=max(roughness,NdotV);float one_minus_cos_theta=1.0-cos_theta;vec3 offset_from_F0=(white_minus_F0-b*cos_theta*one_minus_cos_theta)*pow(one_minus_cos_theta,5.0);return clamp(F0+offset_from_F0,0.0,1.0);}
480vec3 getF82B(vec3 F0,vec3 edgeTint) {return (F0+(vec3(1.0)-F0)*F82_ONE_MINUS_CTM_POW5)*(vec3(1.0)-edgeTint)*F82_B_DENOMINATOR_RECIP;}
481vec3 getF82DirectionalAlbedo(vec3 F0,vec3 F90,vec3 b,vec3 environmentBrdf) {return (F90-F0)*environmentBrdf.x+F0*environmentBrdf.y-b*environmentBrdf.z;}
482vec3 getF82AverageFresnel(vec3 F0,vec3 b) {return F0+(vec3(1.0)-F0)/21.0-b/126.0;}
483#endif
484#ifdef FUZZENVIRONMENTBRDF
485vec3 getFuzzBRDFLookup(float NdotV,float perceptualRoughness) {vec2 UV=vec2(perceptualRoughness,NdotV);vec4 brdfLookup=texture2D(environmentFuzzBrdfSampler,UV);const vec2 RiRange=vec2(0.0,0.75);const vec2 ARange =vec2(0.005,0.88);const vec2 BRange =vec2(-0.18,0.002);brdfLookup.r=mix(ARange.x, ARange.y, brdfLookup.r);brdfLookup.g=mix(BRange.x, BRange.y, brdfLookup.g);brdfLookup.b=mix(RiRange.x,RiRange.y,brdfLookup.b);return brdfLookup.rgb;}
486#endif
487#ifdef ENVIRONMENTBRDF
488vec3 getBRDFLookup(float NdotV,float perceptualRoughness) {vec2 UV=vec2(NdotV,perceptualRoughness);vec4 brdfLookup=texture2D(environmentBrdfSampler,UV);
489#ifdef ENVIRONMENTBRDF_RGBD
490brdfLookup.rgb=fromRGBD(brdfLookup.rgba);
491#endif
492return brdfLookup.rgb;}
493vec3 getReflectanceFromBRDFLookup(const vec3 specularEnvironmentR0,const vec3 specularEnvironmentR90,const vec3 environmentBrdf) {
494#ifdef BRDF_V_HEIGHT_CORRELATED
495vec3 reflectance=(specularEnvironmentR90-specularEnvironmentR0)*environmentBrdf.x+specularEnvironmentR0*environmentBrdf.y;
496#else
497vec3 reflectance=specularEnvironmentR0*environmentBrdf.x+specularEnvironmentR90*environmentBrdf.y;
498#endif
499return reflectance;}
500vec3 getReflectanceFromBRDFLookup(const vec3 specularEnvironmentR0,const vec3 environmentBrdf) {
501#ifdef BRDF_V_HEIGHT_CORRELATED
502vec3 reflectance=mix(environmentBrdf.xxx,environmentBrdf.yyy,specularEnvironmentR0);
503#else
504vec3 reflectance=specularEnvironmentR0*environmentBrdf.x+environmentBrdf.y;
505#endif
506return reflectance;}
507#endif
508/* NOT USED
509#if defined(SHEEN) && defined(SHEEN_SOFTER)
510float getBRDFLookupCharlieSheen(float NdotV,float perceptualRoughness)
511{float c=1.0-NdotV;float c3=c*c*c;return 0.65584461*c3+1.0/(4.16526551+exp(-7.97291361*perceptualRoughness+6.33516894));}
512#endif
513*/
514#if !defined(ENVIRONMENTBRDF) || defined(REFLECTIONMAP_SKYBOX) || defined(ALPHAFRESNEL)
515vec3 getReflectanceFromAnalyticalBRDFLookup_Jones(float VdotN,vec3 reflectance0,vec3 reflectance90,float smoothness)
516{float weight=mix(FRESNEL_MAXIMUM_ON_ROUGH,1.0,smoothness);return reflectance0+weight*(reflectance90-reflectance0)*pow5(saturate(1.0-VdotN));}
517#endif
518#if defined(SHEEN) && defined(ENVIRONMENTBRDF)
519/**
520* The sheen BRDF not containing F can be easily stored in the blue channel of the BRDF texture.
521* The blue channel contains DCharlie*VAshikhmin*NdotL as a lokkup table
522*/
523vec3 getSheenReflectanceFromBRDFLookup(const vec3 reflectance0,const vec3 environmentBrdf) {vec3 sheenEnvironmentReflectance=reflectance0*environmentBrdf.b;return sheenEnvironmentReflectance;}
524#endif
525vec3 fresnelSchlickGGX(float VdotH,vec3 reflectance0,vec3 reflectance90)
526{return reflectance0+(reflectance90-reflectance0)*pow5(1.0-VdotH);}
527float fresnelSchlickGGX(float VdotH,float reflectance0,float reflectance90)
528{return reflectance0+(reflectance90-reflectance0)*pow5(1.0-VdotH);}
529#ifdef CLEARCOAT
530vec3 getR0RemappedForClearCoat(vec3 f0) {
531#ifdef CLEARCOAT_DEFAULTIOR
532#ifdef MOBILE
533return saturate(f0*(f0*0.526868+0.529324)-0.0482256);
534#else
535return saturate(f0*(f0*(0.941892-0.263008*f0)+0.346479)-0.0285998);
536#endif
537#else
538vec3 s=sqrt(f0);vec3 t=(vClearCoatRefractionParams.z+vClearCoatRefractionParams.w*s)/(vClearCoatRefractionParams.w+vClearCoatRefractionParams.z*s);return square(t);
539#endif
540}
541#endif
542#ifdef IRIDESCENCE
543const mat3 XYZ_TO_REC709=mat3(
5443.2404542,-0.9692660, 0.0556434,
545-1.5371385, 1.8760108,-0.2040259,
546-0.4985314, 0.0415560, 1.0572252
547);vec3 getIORTfromAirToSurfaceR0(vec3 f0) {vec3 sqrtF0=sqrt(f0);return (1.+sqrtF0)/(1.-sqrtF0);}
548vec3 getR0fromIORs(vec3 iorT,float iorI) {return square((iorT-vec3(iorI))/(iorT+vec3(iorI)));}
549float getR0fromIORs(float iorT,float iorI) {return square((iorT-iorI)/(iorT+iorI));}
550vec3 evalSensitivity(float opd,vec3 shift) {float phase=2.0*PI*opd*1.0e-9;const vec3 val=vec3(5.4856e-13,4.4201e-13,5.2481e-13);const vec3 pos=vec3(1.6810e+06,1.7953e+06,2.2084e+06);const vec3 var=vec3(4.3278e+09,9.3046e+09,6.6121e+09);vec3 xyz=val*sqrt(2.0*PI*var)*cos(pos*phase+shift)*exp(-square(phase)*var);xyz.x+=9.7470e-14*sqrt(2.0*PI*4.5282e+09)*cos(2.2399e+06*phase+shift[0])*exp(-4.5282e+09*square(phase));xyz/=1.0685e-7;vec3 srgb=XYZ_TO_REC709*xyz;return srgb;}
551vec3 evalIridescence(float outsideIOR,float eta2,float cosTheta1,float thinFilmThickness,vec3 baseF0) {vec3 I=vec3(1.0);float iridescenceIOR=mix(outsideIOR,eta2,smoothstep(0.0,0.03,thinFilmThickness));float sinTheta2Sq=square(outsideIOR/iridescenceIOR)*(1.0-square(cosTheta1));float cosTheta2Sq=1.0-sinTheta2Sq;if (cosTheta2Sq<0.0) {return I;}
552float cosTheta2=sqrt(cosTheta2Sq);float R0=getR0fromIORs(iridescenceIOR,outsideIOR);float R12=fresnelSchlickGGX(cosTheta1,R0,1.);float R21=R12;float T121=1.0-R12;float phi12=0.0;if (iridescenceIOR<outsideIOR) phi12=PI;float phi21=PI-phi12;vec3 baseIOR=getIORTfromAirToSurfaceR0(clamp(baseF0,0.0,0.9999)); 
553vec3 R1=getR0fromIORs(baseIOR,iridescenceIOR);float maxR1=max(R1.r,max(R1.g,R1.b));if (maxR1<1e-6) {return max(vec3(R12),vec3(0.0));}
554vec3 R23=fresnelSchlickGGX(cosTheta2,R1,vec3(1.));vec3 phi23=vec3(0.0);if (baseIOR[0]<iridescenceIOR) phi23[0]=PI;if (baseIOR[1]<iridescenceIOR) phi23[1]=PI;if (baseIOR[2]<iridescenceIOR) phi23[2]=PI;float opd=2.0*iridescenceIOR*thinFilmThickness*cosTheta2;vec3 phi=vec3(phi21)+phi23;vec3 R123=clamp(R12*R23,1e-5,0.9999);vec3 r123=sqrt(R123);vec3 Rs=square(T121)*R23/(vec3(1.0)-R123);vec3 C0=R12+Rs;I=C0;vec3 Cm=Rs-T121;for (int m=1; m<=2; ++m)
555{Cm*=r123;vec3 Sm=2.0*evalSensitivity(float(m)*opd,float(m)*phi);I+=Cm*Sm;}
556return max(I,vec3(0.0));}
557#endif
558float normalDistributionFunction_TrowbridgeReitzGGX(float NdotH,float alphaG)
559{float a2=square(alphaG);float d=NdotH*NdotH*(a2-1.0)+1.0;return a2/(PI*d*d);}
560#ifdef SHEEN
561float normalDistributionFunction_CharlieSheen(float NdotH,float alphaG)
562{float invR=1./alphaG;float cos2h=NdotH*NdotH;float sin2h=1.-cos2h;return (2.+invR)*pow(sin2h,invR*.5)/(2.*PI);}
563#endif
564#ifdef ANISOTROPIC
565float normalDistributionFunction_BurleyGGX_Anisotropic(float NdotH,float TdotH,float BdotH,const vec2 alphaTB) {float a2=alphaTB.x*alphaTB.y;vec3 v=vec3(alphaTB.y*TdotH,alphaTB.x *BdotH,a2*NdotH);float v2=dot(v,v);float w2=a2/v2;return a2*w2*w2*RECIPROCAL_PI;}
566#endif
567#ifdef BRDF_V_HEIGHT_CORRELATED
568float smithVisibility_GGXCorrelated(float NdotL,float NdotV,float alphaG) {
569#ifdef MOBILE
570float GGXV=NdotL*(NdotV*(1.0-alphaG)+alphaG);float GGXL=NdotV*(NdotL*(1.0-alphaG)+alphaG);return 0.5/(GGXV+GGXL);
571#else
572float a2=alphaG*alphaG;float GGXV=NdotL*sqrt(NdotV*(NdotV-a2*NdotV)+a2);float GGXL=NdotV*sqrt(NdotL*(NdotL-a2*NdotL)+a2);return 0.5/(GGXV+GGXL);
573#endif
574}
575#else
576float smithVisibilityG1_TrowbridgeReitzGGXFast(float dot,float alphaG)
577{
578#ifdef MOBILE
579return 1.0/(dot+alphaG+(1.0-alphaG)*dot ));
580#else
581float alphaSquared=alphaG*alphaG;return 1.0/(dot+sqrt(alphaSquared+(1.0-alphaSquared)*dot*dot));
582#endif
583}
584float smithVisibility_TrowbridgeReitzGGXFast(float NdotL,float NdotV,float alphaG)
585{float visibility=smithVisibilityG1_TrowbridgeReitzGGXFast(NdotL,alphaG)*smithVisibilityG1_TrowbridgeReitzGGXFast(NdotV,alphaG);return visibility;}
586#endif
587#ifdef ANISOTROPIC
588float smithVisibility_GGXCorrelated_Anisotropic(float NdotL,float NdotV,float TdotV,float BdotV,float TdotL,float BdotL,const vec2 alphaTB) {float lambdaV=NdotL*length(vec3(alphaTB.x*TdotV,alphaTB.y*BdotV,NdotV));float lambdaL=NdotV*length(vec3(alphaTB.x*TdotL,alphaTB.y*BdotL,NdotL));float v=0.5/(lambdaV+lambdaL);return v;}
589#endif
590#ifdef CLEARCOAT
591float visibility_Kelemen(float VdotH) {return 0.25/(VdotH*VdotH); }
592#endif
593#ifdef SHEEN
594float visibility_Ashikhmin(float NdotL,float NdotV)
595{return 1./(4.*(NdotL+NdotV-NdotL*NdotV));}
596/* NOT USED
597#ifdef SHEEN_SOFTER
598float l(float x,float alphaG)
599{float oneMinusAlphaSq=(1.0-alphaG)*(1.0-alphaG);float a=mix(21.5473,25.3245,oneMinusAlphaSq);float b=mix(3.82987,3.32435,oneMinusAlphaSq);float c=mix(0.19823,0.16801,oneMinusAlphaSq);float d=mix(-1.97760,-1.27393,oneMinusAlphaSq);float e=mix(-4.32054,-4.85967,oneMinusAlphaSq);return a/(1.0+b*pow(x,c))+d*x+e;}
600float lambdaSheen(float cosTheta,float alphaG)
601{return abs(cosTheta)<0.5 ? exp(l(cosTheta,alphaG)) : exp(2.0*l(0.5,alphaG)-l(1.0-cosTheta,alphaG));}
602float visibility_CharlieSheen(float NdotL,float NdotV,float alphaG)
603{float G=1.0/(1.0+lambdaSheen(NdotV,alphaG)+lambdaSheen(NdotL,alphaG));return G/(4.0*NdotV*NdotL);}
604#endif
605*/
606#endif
607float diffuseBRDF_Burley(float NdotL,float NdotV,float VdotH,float roughness) {float diffuseFresnelNV=pow5(saturateEps(1.0-NdotL));float diffuseFresnelNL=pow5(saturateEps(1.0-NdotV));float diffuseFresnel90=0.5+2.0*VdotH*VdotH*roughness;float fresnel =
608(1.0+(diffuseFresnel90-1.0)*diffuseFresnelNL) *
609(1.0+(diffuseFresnel90-1.0)*diffuseFresnelNV);return fresnel/PI;}
610const float constant1_FON=0.5-2.0/(3.0*PI);const float constant2_FON=2.0/3.0-28.0/(15.0*PI);float E_FON_approx(float mu,float roughness)
611{float sigma=roughness; 
612float mucomp=1.0-mu;float mucomp2=mucomp*mucomp;const mat2 Gcoeffs=mat2(0.0571085289,-0.332181442,
6130.491881867,0.0714429953);
613float GoverPi=dot(Gcoeffs*vec2(mucomp,mucomp2),vec2(1.0,mucomp2));return (1.0+sigma*GoverPi)/(1.0+constant1_FON*sigma);}
614vec3 diffuseBRDF_EON(vec3 albedo,float roughness,float NdotL,float NdotV,float LdotV)
615{vec3 rho=albedo;float sigma=roughness; 
616float mu_i=NdotL; 
617float mu_o=NdotV; 
618float s=LdotV-mu_i*mu_o; 
619float sovertF=s>0.0 ? s/max(mu_i,mu_o) : s; 
620float AF=1.0/(1.0+constant1_FON*sigma); 
621vec3 f_ss=(rho*RECIPROCAL_PI)*AF*(1.0+sigma*sovertF); 
622float EFo=E_FON_approx(mu_o,sigma); 
623float EFi=E_FON_approx(mu_i,sigma); 
624float avgEF=AF*(1.0+constant2_FON*sigma); 
625vec3 rho_ms=(rho*rho)*avgEF/(vec3(1.0)-rho*(1.0-avgEF));const float eps=1.0e-7;vec3 f_ms=(rho_ms*RECIPROCAL_PI)*max(eps,1.0-EFo) 
626* max(eps,1.0-EFi)
627/ max(eps,1.0-avgEF);return (f_ss+f_ms);}
628#ifdef SS_TRANSLUCENCY
629vec3 transmittanceBRDF_Burley(const vec3 tintColor,const vec3 diffusionDistance,float thickness) {vec3 S=1./maxEps(diffusionDistance);vec3 temp=exp((-0.333333333*thickness)*S);return tintColor.rgb*0.25*(temp*temp*temp+3.0*temp);}
630float computeWrappedDiffuseNdotL(float NdotL,float w) {float t=1.0+w;float invt2=1.0/square(t);return saturate((NdotL+w)*invt2);}
631#endif
632#endif 
633`;i.l.IncludesShadersStore[a]||(i.l.IncludesShadersStore[a]=r);let n={name:a,shader:r}},65964:(e,t,o)=>{o.d(t,{U:()=>n});var i=o(52019);let a="pbrBlockImageProcessing",r=`#if defined(IMAGEPROCESSINGPOSTPROCESS) || defined(SS_SCATTERING)
634#if !defined(SKIPFINALCOLORCLAMP)
635finalColor.rgb=clamp(finalColor.rgb,0.,30.0);
636#endif
637#else
638finalColor=applyImageProcessing(finalColor);
639#endif
640finalColor.a*=visibility;
641#ifdef PREMULTIPLYALPHA
642finalColor.rgb*=finalColor.a;
643#endif
644`;i.l.IncludesShadersStore[a]||(i.l.IncludesShadersStore[a]=r);let n={name:a,shader:r}},72162:(e,t,o)=>{o.d(t,{A:()=>n});var i=o(52019);let a="pbrBlockNormalGeometric",r=`vec3 viewDirectionW=normalize(vEyePosition.xyz-vPositionW);
645#ifdef NORMAL
646vec3 normalW=normalize(vNormalW);
647#else
648vec3 normalW=normalize(cross(dFdx(vPositionW),dFdy(vPositionW)))*vEyePosition.w;
649#endif
650vec3 geometricNormalW=normalW;
651#if defined(TWOSIDEDLIGHTING) && defined(NORMAL)
652geometricNormalW=gl_FrontFacing ? geometricNormalW : -geometricNormalW;
653#endif
654`;i.l.IncludesShadersStore[a]||(i.l.IncludesShadersStore[a]=r);let n={name:a,shader:r}},77571:(e,t,o)=>{o.d(t,{N:()=>n});var i=o(52019);o(39445);let a="pbrFragmentExtraDeclaration",r=`varying vec3 vPositionW;
655#if DEBUGMODE>0
656varying vec4 vClipSpacePosition;
657#endif
658#include<mainUVVaryingDeclaration>[1..7]
659#ifdef NORMAL
660varying vec3 vNormalW;
661#if defined(USESPHERICALFROMREFLECTIONMAP) && defined(USESPHERICALINVERTEX)
662varying vec3 vEnvironmentIrradiance;
663#endif
664#endif
665#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES)
666varying vec4 vColor;
667#endif
668#if defined(CLUSTLIGHT_BATCH) && CLUSTLIGHT_BATCH>0
669varying float vViewDepth;
670#endif
671`;i.l.IncludesShadersStore[a]||(i.l.IncludesShadersStore[a]=r);let n={name:a,shader:r}},82483:(e,t,o)=>{o.d(t,{r:()=>n});var i=o(52019);let a="pbrIBLFunctions",r=`#if defined(REFLECTION) || defined(SS_REFRACTION)
672float getLodFromAlphaG(float cubeMapDimensionPixels,float microsurfaceAverageSlope) {float microsurfaceAverageSlopeTexels=cubeMapDimensionPixels*microsurfaceAverageSlope;float lod=log2(microsurfaceAverageSlopeTexels);return lod;}
673float getLinearLodFromRoughness(float cubeMapDimensionPixels,float roughness) {float lod=log2(cubeMapDimensionPixels)*roughness;return lod;}
674#endif
675#if defined(ENVIRONMENTBRDF) && defined(RADIANCEOCCLUSION)
676float environmentRadianceOcclusion(float ambientOcclusion,float NdotVUnclamped) {float temp=NdotVUnclamped+ambientOcclusion;return saturate(square(temp)-1.0+ambientOcclusion);}
677#endif
678#if defined(ENVIRONMENTBRDF) && defined(HORIZONOCCLUSION)
679float environmentHorizonOcclusion(vec3 view,vec3 normal,vec3 geometricNormal) {vec3 reflection=reflect(view,normal);float temp=saturate(1.0+1.1*dot(reflection,geometricNormal));return square(temp);}
680#endif
681#if defined(LODINREFLECTIONALPHA) || defined(SS_LODINREFRACTIONALPHA)
682#define UNPACK_LOD(x) (1.0-x)*255.0
683float getLodFromAlphaG(float cubeMapDimensionPixels,float alphaG,float NdotV) {float microsurfaceAverageSlope=alphaG;microsurfaceAverageSlope*=sqrt(abs(NdotV));return getLodFromAlphaG(cubeMapDimensionPixels,microsurfaceAverageSlope);}
684#endif
685`;i.l.IncludesShadersStore[a]||(i.l.IncludesShadersStore[a]=r);let n={name:a,shader:r}},83480:(e,t,o)=>{o.d(t,{a:()=>n});var i=o(52019);let a="pbrFragmentReflectionDeclaration",r=`#ifdef REFLECTION
686#ifdef REFLECTIONMAP_3D
687#define sampleReflection(s,c) textureCube(s,c)
688uniform samplerCube reflectionSampler;
689#ifdef LODBASEDMICROSFURACE
690#define sampleReflectionLod(s,c,l) textureCubeLodEXT(s,c,l)
691#else
692uniform samplerCube reflectionSamplerLow;uniform samplerCube reflectionSamplerHigh;
693#endif
694#ifdef USEIRRADIANCEMAP
695uniform samplerCube irradianceSampler;
696#endif
697#else
698#define sampleReflection(s,c) texture2D(s,c)
699uniform sampler2D reflectionSampler;
700#ifdef LODBASEDMICROSFURACE
701#define sampleReflectionLod(s,c,l) texture2DLodEXT(s,c,l)
702#else
703uniform sampler2D reflectionSamplerLow;uniform sampler2D reflectionSamplerHigh;
704#endif
705#ifdef USEIRRADIANCEMAP
706uniform sampler2D irradianceSampler;
707#endif
708#endif
709#ifdef REFLECTIONMAP_SKYBOX
710varying vec3 vPositionUVW;
711#else
712#if defined(REFLECTIONMAP_EQUIRECTANGULAR_FIXED) || defined(REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED)
713varying vec3 vDirectionW;
714#endif
715#endif
716#endif
717`;i.l.IncludesShadersStore[a]||(i.l.IncludesShadersStore[a]=r);let n={name:a,shader:r}},92149:(e,t,o)=>{o.d(t,{R:()=>n});var i=o(52019);let a="subSurfaceScatteringFunctions",r=`bool testLightingForSSS(float diffusionProfile)
718{return diffusionProfile<1.;}`;i.l.IncludesShadersStore[a]||(i.l.IncludesShadersStore[a]=r);let n={name:a,shader:r}},96741:(e,t,o)=>{o.d(t,{v:()=>n});var i=o(52019);let a="pbrDirectLightingFunctions",r=`#define CLEARCOATREFLECTANCE90 1.0
719struct lightingInfo
720{vec3 diffuse;
721#ifdef SS_TRANSLUCENCY
722vec3 diffuseTransmission;
723#endif
724#ifdef SPECULARTERM
725vec3 specular;
726#endif
727#ifdef CLEARCOAT
728vec4 clearCoat;
729#endif
730#ifdef SHEEN
731vec3 sheen;
732#endif
733};
733float adjustRoughnessFromLightProperties(float roughness,float lightRadius,float lightDistance) {
734#if defined(USEPHYSICALLIGHTFALLOFF) || defined(USEGLTFLIGHTFALLOFF)
735float lightRoughness=lightRadius/lightDistance;float totalRoughness=saturate(lightRoughness+roughness);return totalRoughness;
736#else
737return roughness;
738#endif
739}
740vec3 computeHemisphericDiffuseLighting(preLightingInfo info,vec3 lightColor,vec3 groundColor) {return mix(groundColor,lightColor,info.NdotL);}
741#if defined(AREALIGHTUSED) && defined(AREALIGHTSUPPORTED)
742vec3 computeAreaDiffuseLighting(preLightingInfo info,vec3 lightColor) {return info.areaLightDiffuse*lightColor;}
743#endif
744vec3 computeDiffuseLighting(preLightingInfo info,vec3 lightColor) {vec3 diffuseTerm=vec3(1.0/PI);
745#if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_LEGACY
746diffuseTerm=vec3(diffuseBRDF_Burley(info.NdotL,info.NdotV,info.VdotH,info.roughness));
747#elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY
748diffuseTerm=vec3(diffuseBRDF_Burley(info.NdotL,info.NdotV,info.VdotH,info.diffuseRoughness));
749#elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
750vec3 clampedAlbedo=clamp(info.surfaceAlbedo,vec3(0.1),vec3(1.0));diffuseTerm=diffuseBRDF_EON(clampedAlbedo,info.diffuseRoughness,info.NdotL,info.NdotV,info.LdotV);diffuseTerm/=clampedAlbedo;
751#endif
752return diffuseTerm*info.attenuation*info.NdotL*lightColor;}
753#define inline
754vec3 computeProjectionTextureDiffuseLighting(sampler2D projectionLightSampler,mat4 textureProjectionMatrix,vec3 posW){vec4 strq=textureProjectionMatrix*vec4(posW,1.0);strq/=strq.w;vec3 textureColor=texture2D(projectionLightSampler,strq.xy).rgb;return toLinearSpace(textureColor);}
755#ifdef SS_TRANSLUCENCY
756vec3 computeDiffuseTransmittedLighting(preLightingInfo info,vec3 lightColor,vec3 transmittance) {vec3 transmittanceNdotL=vec3(0.);float NdotL=absEps(info.NdotLUnclamped);
757#ifndef SS_TRANSLUCENCY_LEGACY
758if (info.NdotLUnclamped<0.0) {
759#endif
760float wrapNdotL=computeWrappedDiffuseNdotL(NdotL,0.02);float trAdapt=step(0.,info.NdotLUnclamped);transmittanceNdotL=mix(transmittance*wrapNdotL,vec3(wrapNdotL),trAdapt);
761#ifndef SS_TRANSLUCENCY_LEGACY
762}
763vec3 diffuseTerm=vec3(1.0/PI);
764#if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_LEGACY
765diffuseTerm=vec3(diffuseBRDF_Burley(info.NdotL,info.NdotV,info.VdotH,info.roughness));
766#elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY
767diffuseTerm=vec3(diffuseBRDF_Burley(info.NdotL,info.NdotV,info.VdotH,info.diffuseRoughness));
768#elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
769vec3 clampedAlbedo=clamp(info.surfaceAlbedo,vec3(0.1),vec3(1.0));diffuseTerm=diffuseBRDF_EON(clampedAlbedo,info.diffuseRoughness,info.NdotL,info.NdotV,info.LdotV);diffuseTerm/=clampedAlbedo;
770#endif
771#else
772float diffuseTerm=diffuseBRDF_Burley(NdotL,info.NdotV,info.VdotH,info.roughness);
773#endif
774return diffuseTerm*transmittanceNdotL*info.attenuation*lightColor;}
775#endif
776#ifdef SPECULARTERM
777vec3 computeSpecularLighting(preLightingInfo info,vec3 N,vec3 reflectance0,vec3 fresnel,float geometricRoughnessFactor,vec3 lightColor) {float NdotH=saturateEps(dot(N,info.H));float roughness=max(info.roughness,geometricRoughnessFactor);float alphaG=convertRoughnessToAverageSlope(roughness);
778#ifdef IRIDESCENCE
779fresnel=mix(fresnel,reflectance0,info.iridescenceIntensity);
780#endif
781float distribution=normalDistributionFunction_TrowbridgeReitzGGX(NdotH,alphaG);
782#ifdef BRDF_V_HEIGHT_CORRELATED
783float smithVisibility=smithVisibility_GGXCorrelated(info.NdotL,info.NdotV,alphaG);
784#else
785float smithVisibility=smithVisibility_TrowbridgeReitzGGXFast(info.NdotL,info.NdotV,alphaG);
786#endif
787vec3 specTerm=fresnel*distribution*smithVisibility;return specTerm*info.attenuation*info.NdotL*lightColor;}
788#if defined(AREALIGHTUSED) && defined(AREALIGHTSUPPORTED)
789vec3 computeAreaSpecularLighting(preLightingInfo info,vec3 specularColor,vec3 reflectance0,vec3 reflectance90) {vec3 fresnel=specularColor*info.areaLightFresnel.x*reflectance0+( vec3( 1.0 )-specularColor )*info.areaLightFresnel.y*reflectance90;return specularColor*fresnel*info.areaLightSpecular;}
790#endif
791#endif
792#ifdef FUZZ
793float evalFuzz(vec3 L,float NdotL,float NdotV,vec3 T,vec3 B,vec3 ltcLut)
794{if (NdotL<=0.0 || NdotV<=0.0)
795return 0.0;mat3 M=mat3(
796vec3(ltcLut.r,0.0,0.0),
797vec3(ltcLut.g,1.0,0.0),
798vec3(0.0,0.0,1.0)
799);vec3 Llocal=vec3(dot(L,T),dot(L,B),NdotL);vec3 Lwarp=normalize(M*Llocal);float cosThetaWarp=max(Lwarp.z,0.0);return cosThetaWarp*NdotL;}
800#endif
801#if defined(ANISOTROPIC) && defined(ANISOTROPIC_OPENPBR)
802vec3 computeAnisotropicSpecularLighting(preLightingInfo info,vec3 V,vec3 N,vec3 T,vec3 B,float anisotropy,float geometricRoughnessFactor,vec3 lightColor) {float NdotH=saturateEps(dot(N,info.H));float TdotH=dot(T,info.H);float BdotH=dot(B,info.H);float TdotV=dot(T,V);float BdotV=dot(B,V);float TdotL=dot(T,info.L);float BdotL=dot(B,info.L);float alphaG=convertRoughnessToAverageSlope(info.roughness);vec2 alphaTB=getAnisotropicRoughness(alphaG,anisotropy);float distribution=normalDistributionFunction_BurleyGGX_Anisotropic(NdotH,TdotH,BdotH,alphaTB);float smithVisibility=smithVisibility_GGXCorrelated_Anisotropic(info.NdotL,info.NdotV,TdotV,BdotV,TdotL,BdotL,alphaTB);vec3 specTerm=vec3(distribution*smithVisibility);return specTerm*info.attenuation*info.NdotL*lightColor;}
803#elif defined(ANISOTROPIC)
804vec3 computeAnisotropicSpecularLighting(preLightingInfo info,vec3 V,vec3 N,vec3 T,vec3 B,float anisotropy,vec3 reflectance0,vec3 reflectance90,float geometricRoughnessFactor,vec3 lightColor) {float NdotH=saturateEps(dot(N,info.H));float TdotH=dot(T,info.H);float BdotH=dot(B,info.H);float TdotV=dot(T,V);float BdotV=dot(B,V);float TdotL=dot(T,info.L);float BdotL=dot(B,info.L);float alphaG=convertRoughnessToAverageSlope(info.roughness);vec2 alphaTB=getAnisotropicRoughness(alphaG,anisotropy);alphaTB=max(alphaTB,square(geometricRoughnessFactor));vec3 fresnel=fresnelSchlickGGX(info.VdotH,reflectance0,reflectance90);
805#ifdef IRIDESCENCE
806fresnel=mix(fresnel,reflectance0,info.iridescenceIntensity);
807#endif
808float distribution=normalDistributionFunction_BurleyGGX_Anisotropic(NdotH,TdotH,BdotH,alphaTB);float smithVisibility=smithVisibility_GGXCorrelated_Anisotropic(info.NdotL,info.NdotV,TdotV,BdotV,TdotL,BdotL,alphaTB);vec3 specTerm=fresnel*distribution*smithVisibility;return specTerm*info.attenuation*info.NdotL*lightColor;}
809#endif
810#ifdef CLEARCOAT
811vec4 computeClearCoatLighting(preLightingInfo info,vec3 Ncc,float geometricRoughnessFactor,float clearCoatIntensity,vec3 lightColor) {float NccdotL=saturateEps(dot(Ncc,info.L));float NccdotH=saturateEps(dot(Ncc,info.H));float clearCoatRoughness=max(info.roughness,geometricRoughnessFactor);float alphaG=convertRoughnessToAverageSlope(clearCoatRoughness);float fresnel=fresnelSchlickGGX(info.VdotH,vClearCoatRefractionParams.x,CLEARCOATREFLECTANCE90);fresnel*=clearCoatIntensity;float distribution=normalDistributionFunction_TrowbridgeReitzGGX(NccdotH,alphaG);float kelemenVisibility=visibility_Kelemen(info.VdotH);float clearCoatTerm=fresnel*distribution*kelemenVisibility;return vec4(
812clearCoatTerm*info.attenuation*NccdotL*lightColor,
8131.0-fresnel
814);}
815vec3 computeClearCoatLightingAbsorption(float NdotVRefract,vec3 L,vec3 Ncc,vec3 clearCoatColor,float clearCoatThickness,float clearCoatIntensity) {vec3 LRefract=-refract(L,Ncc,vClearCoatRefractionParams.y);float NdotLRefract=saturateEps(dot(Ncc,LRefract));vec3 absorption=computeClearCoatAbsorption(NdotVRefract,NdotLRefract,clearCoatColor,clearCoatThickness,clearCoatIntensity);return absorption;}
816#endif
817#ifdef SHEEN
818vec3 computeSheenLighting(preLightingInfo info,vec3 N,vec3 reflectance0,vec3 reflectance90,float geometricRoughnessFactor,vec3 lightColor) {float NdotH=saturateEps(dot(N,info.H));float roughness=max(info.roughness,geometricRoughnessFactor);float alphaG=convertRoughnessToAverageSlope(roughness);float fresnel=1.;float distribution=normalDistributionFunction_CharlieSheen(NdotH,alphaG);/*#ifdef SHEEN_SOFTER
819float visibility=visibility_CharlieSheen(info.NdotL,info.NdotV,alphaG);
820#else */
821float visibility=visibility_Ashikhmin(info.NdotL,info.NdotV);/* #endif */
822float sheenTerm=fresnel*distribution*visibility;return sheenTerm*info.attenuation*info.NdotL*lightColor;}
823#endif
824`;i.l.IncludesShadersStore[a]||(i.l.IncludesShadersStore[a]=r);let n={name:a,shader:r}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.