@vived/component-abb-6700 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/.todo.md +13 -0
  2. package/README.md +122 -0
  3. package/dist/.gitkeep +0 -0
  4. package/dist/Adapters/aBB6700PMAdapter.d.ts +10 -0
  5. package/dist/Adapters/aBB6700PMAdapter.d.ts.map +1 -0
  6. package/dist/Controllers/createABB6700.d.ts +12 -0
  7. package/dist/Controllers/createABB6700.d.ts.map +1 -0
  8. package/dist/Controllers/getPose.d.ts +11 -0
  9. package/dist/Controllers/getPose.d.ts.map +1 -0
  10. package/dist/Controllers/setJointAngle.d.ts +12 -0
  11. package/dist/Controllers/setJointAngle.d.ts.map +1 -0
  12. package/dist/Controllers/setPose.d.ts +11 -0
  13. package/dist/Controllers/setPose.d.ts.map +1 -0
  14. package/dist/Entities/ABB6700Entity.d.ts +35 -0
  15. package/dist/Entities/ABB6700Entity.d.ts.map +1 -0
  16. package/dist/Entities/ABB6700Repo.d.ts +32 -0
  17. package/dist/Entities/ABB6700Repo.d.ts.map +1 -0
  18. package/dist/Factory/ABB6700FeatureFactory.d.ts +26 -0
  19. package/dist/Factory/ABB6700FeatureFactory.d.ts.map +1 -0
  20. package/dist/Mocks/MockABB6700PM.d.ts +11 -0
  21. package/dist/Mocks/MockABB6700PM.d.ts.map +1 -0
  22. package/dist/Mocks/MockSetJointAngleUC.d.ts +7 -0
  23. package/dist/Mocks/MockSetJointAngleUC.d.ts.map +1 -0
  24. package/dist/Mocks/MockSetPoseUC.d.ts +7 -0
  25. package/dist/Mocks/MockSetPoseUC.d.ts.map +1 -0
  26. package/dist/PMs/ABB6700PM.d.ts +32 -0
  27. package/dist/PMs/ABB6700PM.d.ts.map +1 -0
  28. package/dist/UCs/CalcStabilizerUC.d.ts +7 -0
  29. package/dist/UCs/CalcStabilizerUC.d.ts.map +1 -0
  30. package/dist/UCs/SetJointAngleUC.d.ts +15 -0
  31. package/dist/UCs/SetJointAngleUC.d.ts.map +1 -0
  32. package/dist/UCs/SetPoseUC.d.ts +22 -0
  33. package/dist/UCs/SetPoseUC.d.ts.map +1 -0
  34. package/dist/Views/ABB6700BabylonView.d.ts +27 -0
  35. package/dist/Views/ABB6700BabylonView.d.ts.map +1 -0
  36. package/dist/abb_6700.glb +0 -0
  37. package/dist/abstractAudioBus-CyBWsmuN.js +14 -0
  38. package/dist/animationGroup-BhNThqQe.js +1454 -0
  39. package/dist/basisTextureLoader-BT391BsV.js +310 -0
  40. package/dist/brdfTextureTools-DUyKBAXf.js +79 -0
  41. package/dist/bumpFragment-Dd-ojPA1.js +134 -0
  42. package/dist/bumpFragment-KE1_PuMl.js +287 -0
  43. package/dist/bumpVertex-BcdvVFVx.js +8 -0
  44. package/dist/bumpVertexDeclaration-B5Uvs-RS.js +8 -0
  45. package/dist/bumpVertexDeclaration-ixSg-yGI.js +8 -0
  46. package/dist/clipPlaneFragment-DJwQynjA.js +136 -0
  47. package/dist/clipPlaneVertex-D4Wk50XG.js +376 -0
  48. package/dist/clipPlaneVertex-eQ147Tn2.js +350 -0
  49. package/dist/component.config.d.ts +17 -0
  50. package/dist/component.config.d.ts.map +1 -0
  51. package/dist/ddsTextureLoader-DeoF3iGO.js +331 -0
  52. package/dist/default.fragment-DKnTR9nY.js +548 -0
  53. package/dist/default.fragment-rIGWrUS5.js +486 -0
  54. package/dist/default.vertex-Bt5y1VyA.js +212 -0
  55. package/dist/default.vertex-Dext1liJ.js +224 -0
  56. package/dist/defaultUboDeclaration-BwslQZX8.js +11 -0
  57. package/dist/defaultUboDeclaration-DSXACgip.js +9 -0
  58. package/dist/easing-BAt0SO-B.js +163 -0
  59. package/dist/envTextureLoader-CBiW_Q-U.js +40 -0
  60. package/dist/exrTextureLoader-5SC6PKIA.js +740 -0
  61. package/dist/flowGraphApplyForceBlock-6e8-wcaw.js +32 -0
  62. package/dist/flowGraphApplyImpulseBlock-B27EZQow.js +32 -0
  63. package/dist/flowGraphArrayIndexBlock-DIUn5e4i.js +31 -0
  64. package/dist/flowGraphBezierCurveEasingBlock-BJmiHk40.js +25 -0
  65. package/dist/flowGraphBinaryOperationBlock-Bj7TANCc.js +25 -0
  66. package/dist/flowGraphBranchBlock-7CRvIKWc.js +19 -0
  67. package/dist/flowGraphCachedOperationBlock-CP1ZiuIB.js +26 -0
  68. package/dist/flowGraphCancelDelayBlock-DqtgzBGm.js +20 -0
  69. package/dist/flowGraphCodeExecutionBlock-CaYXCGqo.js +23 -0
  70. package/dist/flowGraphConditionalDataBlock-DJ7evX8_.js +28 -0
  71. package/dist/flowGraphConsoleLogBlock-cMkpqLzO.js +68 -0
  72. package/dist/flowGraphConstantBlock-JWybwT0A.js +28 -0
  73. package/dist/flowGraphContextBlock-CFDXHcbn.js +19 -0
  74. package/dist/flowGraphCounterBlock-B0uPkgw9.js +24 -0
  75. package/dist/flowGraphDataSwitchBlock-B0GSifvJ.js +27 -0
  76. package/dist/flowGraphDebounceBlock-CSw8zKym.js +24 -0
  77. package/dist/flowGraphDebugBlock-DiSR6Ahn.js +65 -0
  78. package/dist/flowGraphDoNBlock-C-48oQ2H.js +24 -0
  79. package/dist/flowGraphEasingBlock-DKUaE7Rp.js +50 -0
  80. package/dist/flowGraphFlipFlopBlock-DX5BGhMV.js +20 -0
  81. package/dist/flowGraphForLoopBlock-Di-Qwg23.js +27 -0
  82. package/dist/flowGraphFunctionReferenceBlock-D8X5TFsO.js +20 -0
  83. package/dist/flowGraphGLTFDataProvider-C4j7nPQv.js +16 -0
  84. package/dist/flowGraphGetAngularVelocityBlock-Cq-yTQ4D.js +31 -0
  85. package/dist/flowGraphGetAssetBlock-B36eioor.js +21 -0
  86. package/dist/flowGraphGetLinearVelocityBlock-MdrV0eUD.js +31 -0
  87. package/dist/flowGraphGetPhysicsMassPropertiesBlock-wXDZP1wM.js +30 -0
  88. package/dist/flowGraphGetPropertyBlock-eP0badwf.js +46 -0
  89. package/dist/flowGraphGetSoundVolumeBlock-D3gXGHXa.js +29 -0
  90. package/dist/flowGraphGetVariableBlock-C7-qZAec.js +31 -0
  91. package/dist/flowGraphIndexOfBlock-CC5l9n9P.js +31 -0
  92. package/dist/flowGraphInterpolationBlock-B6922jzt.js +50 -0
  93. package/dist/flowGraphIsKeyPressedBlock-X_iuiUOX.js +31 -0
  94. package/dist/flowGraphIsSoundPlayingBlock-DONQX8N8.js +29 -0
  95. package/dist/flowGraphJsonPointerParserBlock-DBH_gN8I.js +95 -0
  96. package/dist/flowGraphKeyDownEventBlock-D5T1Uyfv.js +26 -0
  97. package/dist/flowGraphKeyUpEventBlock-BPY_Kgkm.js +21 -0
  98. package/dist/flowGraphKeyboardEventBlock-C49fx3TC.js +20 -0
  99. package/dist/flowGraphMathBlocks-CkvrN3VJ.js +864 -0
  100. package/dist/flowGraphMathCombineExtractBlocks-QSjGlnoz.js +248 -0
  101. package/dist/flowGraphMatrixMathBlocks-B3D7Cz9p.js +117 -0
  102. package/dist/flowGraphMeshPickEventBlock-BBTz-taa.js +35 -0
  103. package/dist/flowGraphMultiGateBlock-BhY1y5BG.js +50 -0
  104. package/dist/flowGraphPauseAnimationBlock-CHZZXMbg.js +19 -0
  105. package/dist/flowGraphPauseSoundBlock-B7hMmJ0c.js +31 -0
  106. package/dist/flowGraphPhysicsCollisionEventBlock-CxoPpT-q.js +56 -0
  107. package/dist/flowGraphPlayAnimationBlock-DVAvIFux.js +99 -0
  108. package/dist/flowGraphPlaySoundBlock-DjHGrqbC.js +32 -0
  109. package/dist/flowGraphPointerDownEventBlock-qI-H0JST.js +31 -0
  110. package/dist/flowGraphPointerMoveEventBlock-DAi4VUyy.js +31 -0
  111. package/dist/flowGraphPointerOutEventBlock-CFtj68aC.js +21 -0
  112. package/dist/flowGraphPointerOverEventBlock-VxdHhFuu.js +23 -0
  113. package/dist/flowGraphPointerUpEventBlock-DRR1f07q.js +31 -0
  114. package/dist/flowGraphReceiveCustomEventBlock-B3bwdB66.js +52 -0
  115. package/dist/flowGraphSceneReadyEventBlock-Dy6lDT3j.js +23 -0
  116. package/dist/flowGraphSceneTickEventBlock-Bl9BF_Xw.js +32 -0
  117. package/dist/flowGraphSendCustomEventBlock-BAR4PGFq.js +35 -0
  118. package/dist/flowGraphSequenceBlock-veqU32ZZ.js +32 -0
  119. package/dist/flowGraphSetAngularVelocityBlock-Dj9b-zu6.js +31 -0
  120. package/dist/flowGraphSetDelayBlock-CMjudtvk.js +131 -0
  121. package/dist/flowGraphSetLinearVelocityBlock-DVDhhJBd.js +31 -0
  122. package/dist/flowGraphSetPhysicsMotionTypeBlock-CL3cxNCO.js +36 -0
  123. package/dist/flowGraphSetPropertyBlock-D3sWL3Ss.js +47 -0
  124. package/dist/flowGraphSetSoundVolumeBlock-CxVk45yR.js +32 -0
  125. package/dist/flowGraphSetVariableBlock-D1oJiwLj.js +47 -0
  126. package/dist/flowGraphSoundEndedEventBlock-CubEwii0.js +47 -0
  127. package/dist/flowGraphStopAnimationBlock-B9inwIQx.js +48 -0
  128. package/dist/flowGraphStopSoundBlock-BijIX2jC.js +31 -0
  129. package/dist/flowGraphSwitchBlock-BMhPb4OX.js +54 -0
  130. package/dist/flowGraphThrottleBlock-C7vrnkb1.js +37 -0
  131. package/dist/flowGraphTransformCoordinatesSystemBlock-DoISqaUG.js +29 -0
  132. package/dist/flowGraphTypeToTypeBlocks-CSML6QWx.js +57 -0
  133. package/dist/flowGraphUnaryOperationBlock-B0Shf-lJ.js +24 -0
  134. package/dist/flowGraphVectorMathBlocks-DoTRR_E0.js +178 -0
  135. package/dist/flowGraphWaitAllBlock-BvmDMc24.js +54 -0
  136. package/dist/flowGraphWhileLoopBlock-BaIq4-K2.js +27 -0
  137. package/dist/geometry.fragment-Bsis3UG2.js +275 -0
  138. package/dist/geometry.vertex-DskQ5b8j.js +222 -0
  139. package/dist/harmonicsFunctions-CtNrRfir.js +193 -0
  140. package/dist/harmonicsFunctions-PEz6APC7.js +18 -0
  141. package/dist/hdrTextureLoader-D9rYxJ9q.js +112 -0
  142. package/dist/helperFunctions-Bt7Zfkrp.js +89 -0
  143. package/dist/helperFunctions-CPmRxd37.js +121 -0
  144. package/dist/iesTextureLoader-BGUFjVhI.js +93 -0
  145. package/dist/index-CS3Icp_r.js +67657 -0
  146. package/dist/index.d.ts +23 -0
  147. package/dist/index.d.ts.map +1 -0
  148. package/dist/index.js +27 -0
  149. package/dist/ktxTextureLoader-cUaGg9_L.js +459 -0
  150. package/dist/lightFragment-BRDibDKG.js +404 -0
  151. package/dist/lightFragment-DCqtGMp_.js +402 -0
  152. package/dist/logDepthDeclaration-Bwm-3KyB.js +16 -0
  153. package/dist/logDepthDeclaration-gUfeSnXX.js +20 -0
  154. package/dist/logDepthVertex-CKeuJ6ae.js +213 -0
  155. package/dist/logDepthVertex-CXkmZels.js +459 -0
  156. package/dist/mesh.vertexData.functions-Bc9lJlrU.js +74 -0
  157. package/dist/oitFragment-B8zuQigp.js +792 -0
  158. package/dist/oitFragment-DH3h3T6x.js +657 -0
  159. package/dist/openpbr.fragment-BglYS6LA.js +1405 -0
  160. package/dist/openpbr.fragment-DrOTZs4m.js +1553 -0
  161. package/dist/openpbr.vertex-B-PaLFOR.js +384 -0
  162. package/dist/openpbr.vertex-DMdFRTnX.js +268 -0
  163. package/dist/openpbrMaterial-HCU0aOca.js +2880 -0
  164. package/dist/openpbrMaterialLoadingAdapter-CWRAa-7S.js +1122 -0
  165. package/dist/openpbrTransmissionLayerData-CfDVObj5.js +352 -0
  166. package/dist/openpbrUboDeclaration-CA2pvSbt.js +9 -0
  167. package/dist/openpbrUboDeclaration-xU8VOaib.js +10 -0
  168. package/dist/pass.fragment-1mMP54bb.js +10 -0
  169. package/dist/pass.fragment-DzaUp_jk.js +10 -0
  170. package/dist/passCube.fragment-CQaXS7g3.js +29 -0
  171. package/dist/passCube.fragment-QJGPwAXI.js +29 -0
  172. package/dist/pbr.fragment-BnaAAGxb.js +2775 -0
  173. package/dist/pbr.fragment-CYZk_EGU.js +2619 -0
  174. package/dist/pbr.vertex-CyvdCw91.js +372 -0
  175. package/dist/pbr.vertex-DJMAkDxs.js +270 -0
  176. package/dist/pbrBRDFFunctions-EugoWm6O.js +175 -0
  177. package/dist/pbrDebug-Bk3sPoEG.js +719 -0
  178. package/dist/pbrDebug-Cdalzb1I.js +614 -0
  179. package/dist/pbrIBLFunctions-B0bVAXCF.js +47 -0
  180. package/dist/pbrIBLFunctions-C06z-ouZ.js +51 -0
  181. package/dist/pbrMaterial-C4FCKBZQ.js +1660 -0
  182. package/dist/pbrMaterialLoadingAdapter-BGHlS_ZN.js +1032 -0
  183. package/dist/pbrUboDeclaration-1lN5_-Bw.js +9 -0
  184. package/dist/pbrUboDeclaration-BJOUUOZ2.js +10 -0
  185. package/dist/procedural.vertex-CFPKczKj.js +14 -0
  186. package/dist/procedural.vertex-DUW7bYZt.js +13 -0
  187. package/dist/rgbdDecode.fragment-CEGgE4tL.js +8 -0
  188. package/dist/rgbdDecode.fragment-FT0wkgah.js +8 -0
  189. package/dist/rgbdEncode.fragment-CLnJJf6E.js +8 -0
  190. package/dist/rgbdEncode.fragment-CaAcMsY9.js +8 -0
  191. package/dist/sceneUboDeclaration-B6oxsfcj.js +8 -0
  192. package/dist/sceneUboDeclaration-JByfVKik.js +13 -0
  193. package/dist/setupABB6700InstanceFactory.d.ts +7 -0
  194. package/dist/setupABB6700InstanceFactory.d.ts.map +1 -0
  195. package/dist/studio.env +0 -0
  196. package/dist/textureProcessor.fragment-BYPw6SMQ.js +152 -0
  197. package/dist/textureProcessor.fragment-Ciw9-F3w.js +157 -0
  198. package/dist/textureTools-Cct_bGgp.js +40 -0
  199. package/dist/tgaTextureLoader-BJOIdnFr.js +198 -0
  200. package/dist/thinEngine-Bt9FW4dD.js +2425 -0
  201. package/dist/webAudioBus-BUzRHSxr.js +88 -0
  202. package/dist/webAudioMainBus-Dds1TgJG.js +49 -0
  203. package/package.json +49 -0
@@ -0,0 +1,614 @@
1
+ import { b0 as e } from "./index-CS3Icp_r.js";
2
+ import "./logDepthDeclaration-gUfeSnXX.js";
3
+ import "./oitFragment-B8zuQigp.js";
4
+ const t = "pbrFragmentExtraDeclaration", g = `varying vec3 vPositionW;
5
+ #if DEBUGMODE>0
6
+ varying vec4 vClipSpacePosition;
7
+ #endif
8
+ #include<mainUVVaryingDeclaration>[1..7]
9
+ #ifdef NORMAL
10
+ varying vec3 vNormalW;
11
+ #if defined(USESPHERICALFROMREFLECTIONMAP) && defined(USESPHERICALINVERTEX)
12
+ varying vec3 vEnvironmentIrradiance;
13
+ #endif
14
+ #endif
15
+ #if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES)
16
+ varying vec4 vColor;
17
+ #endif
18
+ #if defined(CLUSTLIGHT_BATCH) && CLUSTLIGHT_BATCH>0
19
+ varying float vViewDepth;
20
+ #endif
21
+ `;
22
+ e.IncludesShadersStore[t] || (e.IncludesShadersStore[t] = g);
23
+ const i = "subSurfaceScatteringFunctions", u = `bool testLightingForSSS(float diffusionProfile)
24
+ {return diffusionProfile<1.;}`;
25
+ e.IncludesShadersStore[i] || (e.IncludesShadersStore[i] = u);
26
+ const o = "importanceSampling", E = `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);}
27
+ vec3 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);}
28
+ vec3 hemisphereImportanceSampleDggxAnisotropic(vec2 Xi,float alphaTangent,float alphaBitangent)
29
+ {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;
30
+ float cosPhi=cos(phi);float sinPhi=sin(phi);float alpha2=(cosPhi*cosPhi)/(alphaTangent*alphaTangent) +
31
+ (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);}
32
+ vec3 hemisphereImportanceSampleDCharlie(vec2 u,float a) {
33
+ float 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);}`;
34
+ e.IncludesShadersStore[o] || (e.IncludesShadersStore[o] = E);
35
+ const a = "pbrHelperFunctions", h = `#define MINIMUMVARIANCE 0.0005
36
+ #ifndef TEXRD_DEFINED
37
+ #define TEXRD(s,uv) texture2D(s,uv)
38
+ #define TEXRD_DEFINED
39
+ #endif
40
+ float convertRoughnessToAverageSlope(float roughness)
41
+ {return square(roughness)+MINIMUMVARIANCE;}
42
+ float fresnelGrazingReflectance(float reflectance0) {float reflectance90=saturate(reflectance0*25.0);return reflectance90;}
43
+ vec2 getAARoughnessFactors(vec3 normalVector) {
44
+ #ifdef SPECULARAA
45
+ vec3 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);
46
+ #else
47
+ return vec2(0.);
48
+ #endif
49
+ }
50
+ #ifdef ANISOTROPIC
51
+ #ifdef ANISOTROPIC_LEGACY
52
+ vec2 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);}
53
+ vec3 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;}
54
+ vec3 anisotropicFrameTangent=cross(normalize(anisotropicFrameDirection),V);vec3 anisotropicFrameNormal=cross(anisotropicFrameTangent,anisotropicFrameDirection);vec3 anisotropicNormal=normalize(mix(N,anisotropicFrameNormal,abs(anisotropy)));return anisotropicNormal;}
55
+ #elif ANISOTROPIC_OPENPBR
56
+ vec2 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);}
57
+ #else
58
+ vec2 getAnisotropicRoughness(float alphaG,float anisotropy) {float alphaT=max(mix(alphaG,1.0,anisotropy*anisotropy),MINIMUMVARIANCE);float alphaB=max(alphaG,MINIMUMVARIANCE);return vec2(alphaT,alphaB);}
59
+ vec3 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;}
60
+ #endif
61
+ #endif
62
+ #if defined(CLEARCOAT) || defined(SS_REFRACTION)
63
+ vec3 cocaLambert(vec3 alpha,float distance) {return exp(-alpha*distance);}
64
+ vec3 cocaLambert(float NdotVRefract,float NdotLRefract,vec3 alpha,float thickness) {return cocaLambert(alpha,(thickness*((NdotLRefract+NdotVRefract)/(NdotLRefract*NdotVRefract))));}
65
+ vec3 computeColorAtDistanceInMedia(vec3 color,float distance) {return -log(color)/distance;}
66
+ vec3 computeClearCoatAbsorption(float NdotVRefract,float NdotLRefract,vec3 clearCoatColor,float clearCoatThickness,float clearCoatIntensity) {vec3 clearCoatAbsorption=mix(vec3(1.0),
67
+ cocaLambert(NdotVRefract,NdotLRefract,clearCoatColor,clearCoatThickness),
68
+ clearCoatIntensity);return clearCoatAbsorption;}
69
+ #endif
70
+ #ifdef MICROSURFACEAUTOMATIC
71
+ float computeDefaultMicroSurface(float microSurface,vec3 reflectivityColor)
72
+ {const float kReflectivityNoAlphaWorkflow_SmoothnessMax=0.95;float reflectivityLuminance=getLuminance(reflectivityColor);float reflectivityLuma=sqrt(reflectivityLuminance);microSurface=reflectivityLuma*kReflectivityNoAlphaWorkflow_SmoothnessMax;return microSurface;}
73
+ #endif
74
+ `;
75
+ e.IncludesShadersStore[a] || (e.IncludesShadersStore[a] = h);
76
+ const r = "pbrDirectLightingSetupFunctions", L = `struct preLightingInfo
77
+ {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;
78
+ #ifdef IRIDESCENCE
79
+ float iridescenceIntensity;
80
+ #endif
81
+ #if defined(AREALIGHTUSED) && defined(AREALIGHTSUPPORTED)
82
+ vec3 areaLightDiffuse;
83
+ #ifdef SPECULARTERM
84
+ vec3 areaLightSpecular;vec4 areaLightFresnel;
85
+ #endif
86
+ #endif
87
+ };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;}
88
+ preLightingInfo 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;}
89
+ preLightingInfo 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;
90
+ #ifdef SPECULARTERM
91
+ result.L=normalize(lightData.xyz);result.H=normalize(V+result.L);result.VdotH=saturate(dot(V,result.H));
92
+ #endif
93
+ result.LdotV=0.;result.roughness=0.;result.diffuseRoughness=0.;result.surfaceAlbedo=vec3(0.);return result;}
94
+ #if defined(AREALIGHTUSED) && defined(AREALIGHTSUPPORTED)
95
+ #include<ltcHelperFunctions>
96
+ uniform 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 )
97
+ {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);
98
+ #ifdef SPECULARTERM
99
+ result.areaLightFresnel=data.Fresnel;result.areaLightSpecular=data.Specular;
100
+ #endif
101
+ result.areaLightDiffuse=data.Diffuse;result.LdotV=0.;result.roughness=0.;result.diffuseRoughness=0.;result.surfaceAlbedo=vec3(0.);return result;}
102
+ preLightingInfo computeAreaPreLightingInfoWithTexture(sampler2D ltc1,sampler2D ltc2,sampler2D emissionTexture,vec3 viewDirectionW,vec3 vNormal,vec3 vPosition,vec4 lightData,vec3 halfWidth,vec3 halfHeight,float roughness )
103
+ {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);
104
+ #ifdef SPECULARTERM
105
+ result.areaLightFresnel=data.Fresnel;result.areaLightSpecular=data.Specular;
106
+ #endif
107
+ result.areaLightDiffuse=data.Diffuse;result.LdotV=0.;result.roughness=0.;result.diffuseRoughness=0.;result.surfaceAlbedo=vec3(0.);return result;}
108
+ #endif
109
+ `;
110
+ e.IncludesShadersStore[r] || (e.IncludesShadersStore[r] = L);
111
+ const n = "pbrDirectLightingFalloffFunctions", p = `float computeDistanceLightFalloff_Standard(vec3 lightOffset,float range)
112
+ {return max(0.,1.0-length(lightOffset)/range);}
113
+ float computeDistanceLightFalloff_Physical(float lightDistanceSquared)
114
+ {return 1.0/maxEps(lightDistanceSquared);}
115
+ float computeDistanceLightFalloff_GLTF(float lightDistanceSquared,float inverseSquaredRange)
116
+ {float lightDistanceFalloff=1.0/maxEps(lightDistanceSquared);float factor=lightDistanceSquared*inverseSquaredRange;float attenuation=saturate(1.0-factor*factor);attenuation*=attenuation;lightDistanceFalloff*=attenuation;return lightDistanceFalloff;}
117
+ float computeDistanceLightFalloff(vec3 lightOffset,float lightDistanceSquared,float range,float inverseSquaredRange)
118
+ {
119
+ #ifdef USEPHYSICALLIGHTFALLOFF
120
+ return computeDistanceLightFalloff_Physical(lightDistanceSquared);
121
+ #elif defined(USEGLTFLIGHTFALLOFF)
122
+ return computeDistanceLightFalloff_GLTF(lightDistanceSquared,inverseSquaredRange);
123
+ #else
124
+ return computeDistanceLightFalloff_Standard(lightOffset,range);
125
+ #endif
126
+ }
127
+ float computeDirectionalLightFalloff_Standard(vec3 lightDirection,vec3 directionToLightCenterW,float cosHalfAngle,float exponent)
128
+ {float falloff=0.0;float cosAngle=maxEps(dot(-lightDirection,directionToLightCenterW));if (cosAngle>=cosHalfAngle)
129
+ {falloff=max(0.,pow(cosAngle,exponent));}
130
+ return falloff;}
131
+ float computeDirectionalLightFalloff_IES(vec3 lightDirection,vec3 directionToLightCenterW,sampler2D iesLightSampler)
132
+ {float cosAngle=dot(-lightDirection,directionToLightCenterW);float angle=acos(cosAngle)/PI;return texture2D(iesLightSampler,vec2(angle,0.)).r;}
133
+ float computeDirectionalLightFalloff_Physical(vec3 lightDirection,vec3 directionToLightCenterW,float cosHalfAngle)
134
+ {const float kMinusLog2ConeAngleIntensityRatio=6.64385618977;
135
+ float concentrationKappa=kMinusLog2ConeAngleIntensityRatio/(1.0-cosHalfAngle);vec4 lightDirectionSpreadSG=vec4(-lightDirection*concentrationKappa,-concentrationKappa);float falloff=exp2(dot(vec4(directionToLightCenterW,1.0),lightDirectionSpreadSG));return falloff;}
136
+ float computeDirectionalLightFalloff_GLTF(vec3 lightDirection,vec3 directionToLightCenterW,float lightAngleScale,float lightAngleOffset)
137
+ {float cd=dot(-lightDirection,directionToLightCenterW);float falloff=saturate(cd*lightAngleScale+lightAngleOffset);falloff*=falloff;return falloff;}
138
+ float computeDirectionalLightFalloff(vec3 lightDirection,vec3 directionToLightCenterW,float cosHalfAngle,float exponent,float lightAngleScale,float lightAngleOffset)
139
+ {
140
+ #ifdef USEPHYSICALLIGHTFALLOFF
141
+ return computeDirectionalLightFalloff_Physical(lightDirection,directionToLightCenterW,cosHalfAngle);
142
+ #elif defined(USEGLTFLIGHTFALLOFF)
143
+ return computeDirectionalLightFalloff_GLTF(lightDirection,directionToLightCenterW,lightAngleScale,lightAngleOffset);
144
+ #else
145
+ return computeDirectionalLightFalloff_Standard(lightDirection,directionToLightCenterW,cosHalfAngle,exponent);
146
+ #endif
147
+ }`;
148
+ e.IncludesShadersStore[n] || (e.IncludesShadersStore[n] = p);
149
+ const l = "hdrFilteringFunctions", D = `#if NUM_SAMPLES
150
+ #if NUM_SAMPLES>0
151
+ #if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
152
+ float radicalInverse_VdC(uint bits)
153
+ {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; }
154
+ vec2 hammersley(uint i,uint N)
155
+ {return vec2(float(i)/float(N),radicalInverse_VdC(i));}
156
+ #else
157
+ float vanDerCorpus(int n,int base)
158
+ {float invBase=1.0/float(base);float denom =1.0;float result =0.0;for(int i=0; i<32; ++i)
159
+ {if(n>0)
160
+ {denom =mod(float(n),2.0);result+=denom*invBase;invBase=invBase/2.0;n =int(float(n)/2.0);}}
161
+ return result;}
162
+ vec2 hammersley(int i,int N)
163
+ {return vec2(float(i)/float(N),vanDerCorpus(i,2));}
164
+ #endif
165
+ float log4(float x) {return log2(x)/2.;}
166
+ vec3 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;}
167
+ const float NUM_SAMPLES_FLOAT=float(NUM_SAMPLES);const float NUM_SAMPLES_FLOAT_INVERSED=1./NUM_SAMPLES_FLOAT;const float K=4.;
168
+ #define inline
169
+ vec3 irradiance(
170
+ #ifdef CUSTOM_IRRADIANCE_FILTERING_INPUT
171
+ CUSTOM_IRRADIANCE_FILTERING_INPUT
172
+ #else
173
+ samplerCube inputTexture,
174
+ #endif
175
+ vec3 inputN,vec2 filteringInfo,
176
+ float diffuseRoughness,
177
+ vec3 surfaceAlbedo,
178
+ vec3 inputV
179
+ #if IBL_CDF_FILTERING
180
+ ,sampler2D icdfSampler
181
+ #endif
182
+ )
183
+ {vec3 n=normalize(inputN);vec3 result=vec3(0.);
184
+ #ifndef IBL_CDF_FILTERING
185
+ 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);mat3 tbnInverse=mat3(tangent.x,bitangent.x,n.x,tangent.y,bitangent.y,n.y,tangent.z,bitangent.z,n.z);
186
+ #endif
187
+ float maxLevel=filteringInfo.y;float dim0=filteringInfo.x;float omegaP=(4.*PI)/(6.*dim0*dim0);vec3 clampedAlbedo=clamp(surfaceAlbedo,vec3(0.1),vec3(1.0));
188
+ #if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
189
+ for(uint i=0u; i<NUM_SAMPLES; ++i)
190
+ #else
191
+ for(int i=0; i<NUM_SAMPLES; ++i)
192
+ #endif
193
+ {vec2 Xi=hammersley(i,NUM_SAMPLES);
194
+ #if IBL_CDF_FILTERING
195
+ vec2 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);
196
+ #if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
197
+ float LoV=dot (Ls,inputV);
198
+ #elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY
199
+ vec3 H=(inputV+Ls)*0.5;float VoH=dot(inputV,H);
200
+ #endif
201
+ #else
202
+ vec3 Ls=hemisphereCosSample(Xi);Ls=normalize(Ls);float NoL=Ls.z;
203
+ vec3 V=tbnInverse*inputV;float NoV=V.z;
204
+ #if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
205
+ float LoV=dot (Ls,V);
206
+ #elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY
207
+ vec3 H=(V+Ls)*0.5;float VoH=dot(V,H);
208
+ #endif
209
+ #endif
210
+ if (NoL>0.) {
211
+ #if IBL_CDF_FILTERING
212
+ float pdf=texture2D(icdfSampler,T).z;vec3 c=textureCubeLodEXT(inputTexture,Ls,0.).rgb;
213
+ #else
214
+ float 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);
215
+ #ifdef CUSTOM_IRRADIANCE_FILTERING_FUNCTION
216
+ CUSTOM_IRRADIANCE_FILTERING_FUNCTION
217
+ #else
218
+ vec3 c=textureCubeLodEXT(inputTexture,tbn*Ls,mipLevel).rgb;
219
+ #endif
220
+ #endif
221
+ #if GAMMA_INPUT
222
+ c=toLinearSpace(c);
223
+ #endif
224
+ vec3 diffuseRoughnessTerm=vec3(1.0);
225
+ #if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
226
+ diffuseRoughnessTerm=diffuseBRDF_EON(clampedAlbedo,diffuseRoughness,NoL,NoV,LoV)*PI;
227
+ #elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY
228
+ diffuseRoughnessTerm=vec3(diffuseBRDF_Burley(NoL,NoV,VoH,diffuseRoughness)*PI);
229
+ #endif
230
+ #if IBL_CDF_FILTERING
231
+ vec3 light=pdf<1e-6 ? vec3(0.0) : vec3(1.0)/vec3(pdf)*c;result+=NoL*diffuseRoughnessTerm*light;
232
+ #else
233
+ result+=c*diffuseRoughnessTerm;
234
+ #endif
235
+ }}
236
+ result=result*NUM_SAMPLES_FLOAT_INVERSED;
237
+ #if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
238
+ result=result/clampedAlbedo;
239
+ #endif
240
+ return result;}
241
+ #define inline
242
+ vec3 radiance(float alphaG,samplerCube inputTexture,vec3 inputN,vec2 filteringInfo)
243
+ {vec3 n=normalize(inputN);vec3 c=textureCubeLodEXT(inputTexture,n,0.).rgb;
244
+ if (alphaG==0.) {
245
+ #if GAMMA_INPUT
246
+ c=toLinearSpace(c);
247
+ #endif
248
+ return 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.;
249
+ #if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
250
+ for(uint i=0u; i<NUM_SAMPLES; ++i)
251
+ #else
252
+ for(int i=0; i<NUM_SAMPLES; ++i)
253
+ #endif
254
+ {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,alphaG);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;
255
+ #if GAMMA_INPUT
256
+ c=toLinearSpace(c);
257
+ #endif
258
+ result+=c*NoL;}}
259
+ result=result/weight;return result;}}
260
+ #ifdef ANISOTROPIC
261
+ #define inline
262
+ vec3 radianceAnisotropic(
263
+ float alphaTangent,
264
+ float alphaBitangent,
265
+ samplerCube inputTexture,
266
+ vec3 inputView,
267
+ vec3 inputTangent,
268
+ vec3 inputBitangent,
269
+ vec3 inputNormal,
270
+ vec2 filteringInfo,
271
+ vec2 noiseInput,
272
+ bool isRefraction,
273
+ float ior
274
+ )
275
+ {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.;
276
+ #if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
277
+ for(uint i=0u; i<NUM_SAMPLES; ++i)
278
+ #else
279
+ for(int i=0; i<NUM_SAMPLES; ++i)
280
+ #endif
281
+ {vec2 Xi=hammersley(i,NUM_SAMPLES);Xi=fract(Xi+noiseInput*mix(0.5f,0.015f,noiseScale));
282
+ vec3 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);}
283
+ float 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(
284
+ H_tangent.z,H_tangent.x,H_tangent.y,vec2(clampedAlphaT,clampedAlphaB)
285
+ );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;
286
+ #if GAMMA_INPUT
287
+ c=toLinearSpace(c);
288
+ #endif
289
+ result+=c*NoL;}}
290
+ result=result/weight;return result;}
291
+ #endif
292
+ #endif
293
+ #endif
294
+ `;
295
+ e.IncludesShadersStore[l] || (e.IncludesShadersStore[l] = D);
296
+ const f = "pbrDirectLightingFunctions", v = `#define CLEARCOATREFLECTANCE90 1.0
297
+ struct lightingInfo
298
+ {vec3 diffuse;
299
+ #ifdef SS_TRANSLUCENCY
300
+ vec3 diffuseTransmission;
301
+ #endif
302
+ #ifdef SPECULARTERM
303
+ vec3 specular;
304
+ #endif
305
+ #ifdef CLEARCOAT
306
+ vec4 clearCoat;
307
+ #endif
308
+ #ifdef SHEEN
309
+ vec3 sheen;
310
+ #endif
311
+ };float adjustRoughnessFromLightProperties(float roughness,float lightRadius,float lightDistance) {
312
+ #if defined(USEPHYSICALLIGHTFALLOFF) || defined(USEGLTFLIGHTFALLOFF)
313
+ float lightRoughness=lightRadius/lightDistance;float totalRoughness=saturate(lightRoughness+roughness);return totalRoughness;
314
+ #else
315
+ return roughness;
316
+ #endif
317
+ }
318
+ vec3 computeHemisphericDiffuseLighting(preLightingInfo info,vec3 lightColor,vec3 groundColor) {return mix(groundColor,lightColor,info.NdotL);}
319
+ #if defined(AREALIGHTUSED) && defined(AREALIGHTSUPPORTED)
320
+ vec3 computeAreaDiffuseLighting(preLightingInfo info,vec3 lightColor) {return info.areaLightDiffuse*lightColor;}
321
+ #endif
322
+ vec3 computeDiffuseLighting(preLightingInfo info,vec3 lightColor) {vec3 diffuseTerm=vec3(1.0/PI);
323
+ #if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_LEGACY
324
+ diffuseTerm=vec3(diffuseBRDF_Burley(info.NdotL,info.NdotV,info.VdotH,info.roughness));
325
+ #elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY
326
+ diffuseTerm=vec3(diffuseBRDF_Burley(info.NdotL,info.NdotV,info.VdotH,info.diffuseRoughness));
327
+ #elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
328
+ vec3 clampedAlbedo=clamp(info.surfaceAlbedo,vec3(0.1),vec3(1.0));diffuseTerm=diffuseBRDF_EON(clampedAlbedo,info.diffuseRoughness,info.NdotL,info.NdotV,info.LdotV);diffuseTerm/=clampedAlbedo;
329
+ #endif
330
+ return diffuseTerm*info.attenuation*info.NdotL*lightColor;}
331
+ #define inline
332
+ vec3 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);}
333
+ #ifdef SS_TRANSLUCENCY
334
+ vec3 computeDiffuseTransmittedLighting(preLightingInfo info,vec3 lightColor,vec3 transmittance) {vec3 transmittanceNdotL=vec3(0.);float NdotL=absEps(info.NdotLUnclamped);
335
+ #ifndef SS_TRANSLUCENCY_LEGACY
336
+ if (info.NdotLUnclamped<0.0) {
337
+ #endif
338
+ float wrapNdotL=computeWrappedDiffuseNdotL(NdotL,0.02);float trAdapt=step(0.,info.NdotLUnclamped);transmittanceNdotL=mix(transmittance*wrapNdotL,vec3(wrapNdotL),trAdapt);
339
+ #ifndef SS_TRANSLUCENCY_LEGACY
340
+ }
341
+ vec3 diffuseTerm=vec3(1.0/PI);
342
+ #if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_LEGACY
343
+ diffuseTerm=vec3(diffuseBRDF_Burley(info.NdotL,info.NdotV,info.VdotH,info.roughness));
344
+ #elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY
345
+ diffuseTerm=vec3(diffuseBRDF_Burley(info.NdotL,info.NdotV,info.VdotH,info.diffuseRoughness));
346
+ #elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
347
+ vec3 clampedAlbedo=clamp(info.surfaceAlbedo,vec3(0.1),vec3(1.0));diffuseTerm=diffuseBRDF_EON(clampedAlbedo,info.diffuseRoughness,info.NdotL,info.NdotV,info.LdotV);diffuseTerm/=clampedAlbedo;
348
+ #endif
349
+ #else
350
+ float diffuseTerm=diffuseBRDF_Burley(NdotL,info.NdotV,info.VdotH,info.roughness);
351
+ #endif
352
+ return diffuseTerm*transmittanceNdotL*info.attenuation*lightColor;}
353
+ #endif
354
+ #ifdef SPECULARTERM
355
+ vec3 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);
356
+ #ifdef IRIDESCENCE
357
+ fresnel=mix(fresnel,reflectance0,info.iridescenceIntensity);
358
+ #endif
359
+ float distribution=normalDistributionFunction_TrowbridgeReitzGGX(NdotH,alphaG);
360
+ #ifdef BRDF_V_HEIGHT_CORRELATED
361
+ float smithVisibility=smithVisibility_GGXCorrelated(info.NdotL,info.NdotV,alphaG);
362
+ #else
363
+ float smithVisibility=smithVisibility_TrowbridgeReitzGGXFast(info.NdotL,info.NdotV,alphaG);
364
+ #endif
365
+ vec3 specTerm=fresnel*distribution*smithVisibility;return specTerm*info.attenuation*info.NdotL*lightColor;}
366
+ #if defined(AREALIGHTUSED) && defined(AREALIGHTSUPPORTED)
367
+ vec3 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;}
368
+ #endif
369
+ #endif
370
+ #ifdef FUZZ
371
+ float evalFuzz(vec3 L,float NdotL,float NdotV,vec3 T,vec3 B,vec3 ltcLut)
372
+ {if (NdotL<=0.0 || NdotV<=0.0)
373
+ return 0.0;mat3 M=mat3(
374
+ vec3(ltcLut.r,0.0,0.0),
375
+ vec3(ltcLut.g,1.0,0.0),
376
+ vec3(0.0,0.0,1.0)
377
+ );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;}
378
+ #endif
379
+ #if defined(ANISOTROPIC) && defined(ANISOTROPIC_OPENPBR)
380
+ vec3 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;}
381
+ #elif defined(ANISOTROPIC)
382
+ vec3 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);
383
+ #ifdef IRIDESCENCE
384
+ fresnel=mix(fresnel,reflectance0,info.iridescenceIntensity);
385
+ #endif
386
+ 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=fresnel*distribution*smithVisibility;return specTerm*info.attenuation*info.NdotL*lightColor;}
387
+ #endif
388
+ #ifdef CLEARCOAT
389
+ vec4 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(
390
+ clearCoatTerm*info.attenuation*NccdotL*lightColor,
391
+ 1.0-fresnel
392
+ );}
393
+ vec3 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;}
394
+ #endif
395
+ #ifdef SHEEN
396
+ vec3 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
397
+ float visibility=visibility_CharlieSheen(info.NdotL,info.NdotV,alphaG);
398
+ #else */
399
+ float visibility=visibility_Ashikhmin(info.NdotL,info.NdotV);/* #endif */
400
+ float sheenTerm=fresnel*distribution*visibility;return sheenTerm*info.attenuation*info.NdotL*lightColor;}
401
+ #endif
402
+ `;
403
+ e.IncludesShadersStore[f] || (e.IncludesShadersStore[f] = v);
404
+ const s = "pbrBlockNormalGeometric", m = `vec3 viewDirectionW=normalize(vEyePosition.xyz-vPositionW);
405
+ #ifdef NORMAL
406
+ vec3 normalW=normalize(vNormalW);
407
+ #else
408
+ vec3 normalW=normalize(cross(dFdx(vPositionW),dFdy(vPositionW)))*vEyePosition.w;
409
+ #endif
410
+ vec3 geometricNormalW=normalW;
411
+ #if defined(TWOSIDEDLIGHTING) && defined(NORMAL)
412
+ geometricNormalW=gl_FrontFacing ? geometricNormalW : -geometricNormalW;
413
+ #endif
414
+ `;
415
+ e.IncludesShadersStore[s] || (e.IncludesShadersStore[s] = m);
416
+ const c = "pbrBlockImageProcessing", A = `#if defined(IMAGEPROCESSINGPOSTPROCESS) || defined(SS_SCATTERING)
417
+ #if !defined(SKIPFINALCOLORCLAMP)
418
+ finalColor.rgb=clamp(finalColor.rgb,0.,30.0);
419
+ #endif
420
+ #else
421
+ finalColor=applyImageProcessing(finalColor);
422
+ #endif
423
+ finalColor.a*=visibility;
424
+ #ifdef PREMULTIPLYALPHA
425
+ finalColor.rgb*=finalColor.a;
426
+ #endif
427
+ `;
428
+ e.IncludesShadersStore[c] || (e.IncludesShadersStore[c] = A);
429
+ const d = "pbrDebug", C = `#if DEBUGMODE>0
430
+ if (vClipSpacePosition.x/vClipSpacePosition.w>=vDebugMode.x) {
431
+ #if DEBUGMODE==1
432
+ gl_FragColor.rgb=vPositionW.rgb;
433
+ #define DEBUGMODE_NORMALIZE
434
+ #elif DEBUGMODE==2 && defined(NORMAL)
435
+ gl_FragColor.rgb=vNormalW.rgb;
436
+ #define DEBUGMODE_NORMALIZE
437
+ #elif DEBUGMODE==3 && defined(BUMP) || DEBUGMODE==3 && defined(PARALLAX) || DEBUGMODE==3 && defined(ANISOTROPIC)
438
+ gl_FragColor.rgb=TBN[0];
439
+ #define DEBUGMODE_NORMALIZE
440
+ #elif DEBUGMODE==4 && defined(BUMP) || DEBUGMODE==4 && defined(PARALLAX) || DEBUGMODE==4 && defined(ANISOTROPIC)
441
+ gl_FragColor.rgb=TBN[1];
442
+ #define DEBUGMODE_NORMALIZE
443
+ #elif DEBUGMODE==5
444
+ gl_FragColor.rgb=normalW;
445
+ #define DEBUGMODE_NORMALIZE
446
+ #elif DEBUGMODE==6 && defined(MAINUV1)
447
+ gl_FragColor.rgb=vec3(vMainUV1,0.0);
448
+ #elif DEBUGMODE==7 && defined(MAINUV2)
449
+ gl_FragColor.rgb=vec3(vMainUV2,0.0);
450
+ #elif DEBUGMODE==8 && defined(CLEARCOAT) && defined(CLEARCOAT_BUMP)
451
+ gl_FragColor.rgb=clearcoatOut.TBNClearCoat[0];
452
+ #define DEBUGMODE_NORMALIZE
453
+ #elif DEBUGMODE==9 && defined(CLEARCOAT) && defined(CLEARCOAT_BUMP)
454
+ gl_FragColor.rgb=clearcoatOut.TBNClearCoat[1];
455
+ #define DEBUGMODE_NORMALIZE
456
+ #elif DEBUGMODE==10 && defined(CLEARCOAT)
457
+ gl_FragColor.rgb=clearcoatOut.clearCoatNormalW;
458
+ #define DEBUGMODE_NORMALIZE
459
+ #elif DEBUGMODE==11 && defined(ANISOTROPIC)
460
+ gl_FragColor.rgb=anisotropicOut.anisotropicNormal;
461
+ #define DEBUGMODE_NORMALIZE
462
+ #elif DEBUGMODE==12 && defined(ANISOTROPIC)
463
+ gl_FragColor.rgb=anisotropicOut.anisotropicTangent;
464
+ #define DEBUGMODE_NORMALIZE
465
+ #elif DEBUGMODE==13 && defined(ANISOTROPIC)
466
+ gl_FragColor.rgb=anisotropicOut.anisotropicBitangent;
467
+ #define DEBUGMODE_NORMALIZE
468
+ #elif DEBUGMODE==20 && defined(ALBEDO)
469
+ gl_FragColor.rgb=albedoTexture.rgb;
470
+ #ifndef GAMMAALBEDO
471
+ #define DEBUGMODE_GAMMA
472
+ #endif
473
+ #elif DEBUGMODE==21 && defined(AMBIENT)
474
+ gl_FragColor.rgb=aoOut.ambientOcclusionColorMap.rgb;
475
+ #elif DEBUGMODE==22 && defined(OPACITY)
476
+ gl_FragColor.rgb=opacityMap.rgb;
477
+ #elif DEBUGMODE==23 && defined(EMISSIVE)
478
+ gl_FragColor.rgb=emissiveColorTex.rgb;
479
+ #ifndef GAMMAEMISSIVE
480
+ #define DEBUGMODE_GAMMA
481
+ #endif
482
+ #elif DEBUGMODE==24 && defined(LIGHTMAP)
483
+ gl_FragColor.rgb=lightmapColor.rgb;
484
+ #ifndef GAMMALIGHTMAP
485
+ #define DEBUGMODE_GAMMA
486
+ #endif
487
+ #elif DEBUGMODE==25 && defined(REFLECTIVITY) && defined(METALLICWORKFLOW)
488
+ gl_FragColor.rgb=reflectivityOut.surfaceMetallicColorMap.rgb;
489
+ #elif DEBUGMODE==26 && defined(REFLECTIVITY) && !defined(METALLICWORKFLOW)
490
+ gl_FragColor.rgb=reflectivityOut.surfaceReflectivityColorMap.rgb;
491
+ #define DEBUGMODE_GAMMA
492
+ #elif DEBUGMODE==27 && defined(CLEARCOAT) && defined(CLEARCOAT_TEXTURE)
493
+ gl_FragColor.rgb=vec3(clearcoatOut.clearCoatMapData.rg,0.0);
494
+ #elif DEBUGMODE==28 && defined(CLEARCOAT) && defined(CLEARCOAT_TINT) && defined(CLEARCOAT_TINT_TEXTURE)
495
+ gl_FragColor.rgb=clearcoatOut.clearCoatTintMapData.rgb;
496
+ #elif DEBUGMODE==29 && defined(SHEEN) && defined(SHEEN_TEXTURE)
497
+ gl_FragColor.rgb=sheenOut.sheenMapData.rgb;
498
+ #elif DEBUGMODE==30 && defined(ANISOTROPIC) && defined(ANISOTROPIC_TEXTURE)
499
+ gl_FragColor.rgb=anisotropicOut.anisotropyMapData.rgb;
500
+ #elif DEBUGMODE==31 && defined(SUBSURFACE) && defined(SS_THICKNESSANDMASK_TEXTURE)
501
+ gl_FragColor.rgb=subSurfaceOut.thicknessMap.rgb;
502
+ #elif DEBUGMODE==32 && defined(BUMP)
503
+ gl_FragColor.rgb=texture2D(bumpSampler,vBumpUV).rgb;
504
+ #elif DEBUGMODE==40 && defined(SS_REFRACTION)
505
+ gl_FragColor.rgb=subSurfaceOut.environmentRefraction.rgb;
506
+ #define DEBUGMODE_GAMMA
507
+ #elif DEBUGMODE==41 && defined(REFLECTION)
508
+ gl_FragColor.rgb=reflectionOut.environmentRadiance.rgb;
509
+ #ifndef GAMMAREFLECTION
510
+ #define DEBUGMODE_GAMMA
511
+ #endif
512
+ #elif DEBUGMODE==42 && defined(CLEARCOAT) && defined(REFLECTION)
513
+ gl_FragColor.rgb=clearcoatOut.environmentClearCoatRadiance.rgb;
514
+ #define DEBUGMODE_GAMMA
515
+ #elif DEBUGMODE==50
516
+ gl_FragColor.rgb=diffuseBase.rgb;
517
+ #define DEBUGMODE_GAMMA
518
+ #elif DEBUGMODE==51 && defined(SPECULARTERM)
519
+ gl_FragColor.rgb=specularBase.rgb;
520
+ #define DEBUGMODE_GAMMA
521
+ #elif DEBUGMODE==52 && defined(CLEARCOAT)
522
+ gl_FragColor.rgb=clearCoatBase.rgb;
523
+ #define DEBUGMODE_GAMMA
524
+ #elif DEBUGMODE==53 && defined(SHEEN)
525
+ gl_FragColor.rgb=sheenBase.rgb;
526
+ #define DEBUGMODE_GAMMA
527
+ #elif DEBUGMODE==54 && defined(REFLECTION)
528
+ gl_FragColor.rgb=reflectionOut.environmentIrradiance.rgb;
529
+ #ifndef GAMMAREFLECTION
530
+ #define DEBUGMODE_GAMMA
531
+ #endif
532
+ #elif DEBUGMODE==60
533
+ gl_FragColor.rgb=surfaceAlbedo.rgb;
534
+ #define DEBUGMODE_GAMMA
535
+ #elif DEBUGMODE==61
536
+ gl_FragColor.rgb=clearcoatOut.specularEnvironmentR0;
537
+ #define DEBUGMODE_GAMMA
538
+ #elif DEBUGMODE==62 && defined(METALLICWORKFLOW)
539
+ gl_FragColor.rgb=vec3(reflectivityOut.metallic);
540
+ #elif DEBUGMODE==71 && defined(METALLICWORKFLOW)
541
+ gl_FragColor.rgb=reflectivityOut.metallicF0;
542
+ #elif DEBUGMODE==63
543
+ gl_FragColor.rgb=vec3(roughness);
544
+ #elif DEBUGMODE==64
545
+ gl_FragColor.rgb=vec3(alphaG);
546
+ #elif DEBUGMODE==65
547
+ gl_FragColor.rgb=vec3(NdotV);
548
+ #elif DEBUGMODE==66 && defined(CLEARCOAT) && defined(CLEARCOAT_TINT)
549
+ gl_FragColor.rgb=clearcoatOut.clearCoatColor.rgb;
550
+ #define DEBUGMODE_GAMMA
551
+ #elif DEBUGMODE==67 && defined(CLEARCOAT)
552
+ gl_FragColor.rgb=vec3(clearcoatOut.clearCoatRoughness);
553
+ #elif DEBUGMODE==68 && defined(CLEARCOAT)
554
+ gl_FragColor.rgb=vec3(clearcoatOut.clearCoatNdotV);
555
+ #elif DEBUGMODE==69 && defined(SUBSURFACE) && defined(SS_TRANSLUCENCY)
556
+ gl_FragColor.rgb=subSurfaceOut.transmittance;
557
+ #elif DEBUGMODE==70 && defined(SUBSURFACE) && defined(SS_REFRACTION)
558
+ gl_FragColor.rgb=subSurfaceOut.refractionTransmittance;
559
+ #elif DEBUGMODE==72
560
+ gl_FragColor.rgb=vec3(microSurface);
561
+ #elif DEBUGMODE==73
562
+ gl_FragColor.rgb=vAlbedoColor.rgb;
563
+ #define DEBUGMODE_GAMMA
564
+ #elif DEBUGMODE==74 && !defined(METALLICWORKFLOW)
565
+ gl_FragColor.rgb=vReflectivityColor.rgb;
566
+ #define DEBUGMODE_GAMMA
567
+ #elif DEBUGMODE==75
568
+ gl_FragColor.rgb=vEmissiveColor.rgb;
569
+ #define DEBUGMODE_GAMMA
570
+ #elif DEBUGMODE==80 && defined(RADIANCEOCCLUSION)
571
+ gl_FragColor.rgb=vec3(seo);
572
+ #elif DEBUGMODE==81 && defined(HORIZONOCCLUSION) && defined(BUMP) && defined(REFLECTIONMAP_3D)
573
+ gl_FragColor.rgb=vec3(eho);
574
+ #elif DEBUGMODE==82 && defined(MS_BRDF_ENERGY_CONSERVATION)
575
+ gl_FragColor.rgb=vec3(energyConservationFactor);
576
+ #elif DEBUGMODE==83 && defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)
577
+ gl_FragColor.rgb=baseSpecularEnvironmentReflectance;
578
+ #define DEBUGMODE_GAMMA
579
+ #elif DEBUGMODE==84 && defined(CLEARCOAT) && defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)
580
+ gl_FragColor.rgb=clearcoatOut.clearCoatEnvironmentReflectance;
581
+ #define DEBUGMODE_GAMMA
582
+ #elif DEBUGMODE==85 && defined(SHEEN) && defined(REFLECTION)
583
+ gl_FragColor.rgb=sheenOut.sheenEnvironmentReflectance;
584
+ #define DEBUGMODE_GAMMA
585
+ #elif DEBUGMODE==86 && defined(ALPHABLEND)
586
+ gl_FragColor.rgb=vec3(luminanceOverAlpha);
587
+ #elif DEBUGMODE==87
588
+ gl_FragColor.rgb=vec3(alpha);
589
+ #elif DEBUGMODE==88 && defined(ALBEDO)
590
+ gl_FragColor.rgb=vec3(albedoTexture.a);
591
+ #elif DEBUGMODE==89
592
+ gl_FragColor.rgb=aoOut.ambientOcclusionColor.rgb;
593
+ #else
594
+ float 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);
595
+ #endif
596
+ gl_FragColor.rgb*=vDebugMode.y;
597
+ #ifdef DEBUGMODE_NORMALIZE
598
+ gl_FragColor.rgb=normalize(gl_FragColor.rgb)*0.5+0.5;
599
+ #endif
600
+ #ifdef DEBUGMODE_GAMMA
601
+ gl_FragColor.rgb=toGammaSpace(gl_FragColor.rgb);
602
+ #endif
603
+ gl_FragColor.a=1.0;
604
+ #ifdef PREPASS
605
+ gl_FragData[0]=toLinearSpace(gl_FragColor);
606
+ gl_FragData[1]=vec4(0.,0.,0.,0.);
607
+ #endif
608
+ #ifdef DEBUGMODE_FORCERETURN
609
+ return;
610
+ #endif
611
+ }
612
+ #endif
613
+ `;
614
+ e.IncludesShadersStore[d] || (e.IncludesShadersStore[d] = C);
@@ -0,0 +1,47 @@
1
+ import { b0 as e } from "./index-CS3Icp_r.js";
2
+ const r = "pbrFragmentReflectionDeclaration", i = `#ifdef REFLECTION
3
+ #ifdef REFLECTIONMAP_3D
4
+ var reflectionSamplerSampler: sampler;var reflectionSampler: texture_cube<f32>;
5
+ #ifdef LODBASEDMICROSFURACE
6
+ #else
7
+ var reflectionLowSamplerSampler: sampler;var reflectionLowSampler: texture_cube<f32>;var reflectionHighSamplerSampler: sampler;var reflectionHighSampler: texture_cube<f32>;
8
+ #endif
9
+ #ifdef USEIRRADIANCEMAP
10
+ var irradianceSamplerSampler: sampler;var irradianceSampler: texture_cube<f32>;
11
+ #endif
12
+ #else
13
+ var reflectionSamplerSampler: sampler;var reflectionSampler: texture_2d<f32>;
14
+ #ifdef LODBASEDMICROSFURACE
15
+ #else
16
+ var reflectionLowSamplerSampler: sampler;var reflectionLowSampler: texture_2d<f32>;var reflectionHighSamplerSampler: sampler;var reflectionHighSampler: texture_2d<f32>;
17
+ #endif
18
+ #ifdef USEIRRADIANCEMAP
19
+ var irradianceSamplerSampler: sampler;var irradianceSampler: texture_2d<f32>;
20
+ #endif
21
+ #endif
22
+ #ifdef REFLECTIONMAP_SKYBOX
23
+ varying vPositionUVW: vec3f;
24
+ #else
25
+ #if defined(REFLECTIONMAP_EQUIRECTANGULAR_FIXED) || defined(REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED)
26
+ varying vDirectionW: vec3f;
27
+ #endif
28
+ #endif
29
+ #endif
30
+ `;
31
+ e.IncludesShadersStoreWGSL[r] || (e.IncludesShadersStoreWGSL[r] = i);
32
+ const a = "pbrIBLFunctions", f = `#if defined(REFLECTION) || defined(SS_REFRACTION)
33
+ fn getLodFromAlphaG(cubeMapDimensionPixels: f32,microsurfaceAverageSlope: f32)->f32 {var microsurfaceAverageSlopeTexels: f32=cubeMapDimensionPixels*microsurfaceAverageSlope;var lod: f32=log2(microsurfaceAverageSlopeTexels);return lod;}
34
+ fn getLinearLodFromRoughness(cubeMapDimensionPixels: f32,roughness: f32)->f32 {var lod: f32=log2(cubeMapDimensionPixels)*roughness;return lod;}
35
+ #endif
36
+ #if defined(ENVIRONMENTBRDF) && defined(RADIANCEOCCLUSION)
37
+ fn environmentRadianceOcclusion(ambientOcclusion: f32,NdotVUnclamped: f32)->f32 {var temp: f32=NdotVUnclamped+ambientOcclusion;return saturate(temp*temp-1.0+ambientOcclusion);}
38
+ #endif
39
+ #if defined(ENVIRONMENTBRDF) && defined(HORIZONOCCLUSION)
40
+ fn environmentHorizonOcclusion(view: vec3f,normal: vec3f,geometricNormal: vec3f)->f32 {var reflection: vec3f=reflect(view,normal);var temp: f32=saturate(1.0+1.1*dot(reflection,geometricNormal));return temp*temp;}
41
+ #endif
42
+ #if defined(LODINREFLECTIONALPHA) || defined(SS_LODINREFRACTIONALPHA)
43
+ fn UNPACK_LOD(x: f32)->f32 {return (1.0-x)*255.0;}
44
+ fn getLodFromAlphaGNdotV(cubeMapDimensionPixels: f32,alphaG: f32,NdotV: f32)->f32 {var microsurfaceAverageSlope: f32=alphaG;microsurfaceAverageSlope*=sqrt(abs(NdotV));return getLodFromAlphaG(cubeMapDimensionPixels,microsurfaceAverageSlope);}
45
+ #endif
46
+ `;
47
+ e.IncludesShadersStoreWGSL[a] || (e.IncludesShadersStoreWGSL[a] = f);