12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- // Do not edit.
- import { ShaderStore } from "../../Engines/shaderStore.js";
- const name = "pbrBlockIridescence";
- const shader = `struct iridescenceOutParams
- {float iridescenceIntensity;float iridescenceIOR;float iridescenceThickness;vec3 specularEnvironmentR0;};
- #ifdef IRIDESCENCE
- #define pbr_inline
- #define inline
- void iridescenceBlock(
- in vec4 vIridescenceParams,
- in float viewAngle,
- in vec3 specularEnvironmentR0,
- #ifdef IRIDESCENCE_TEXTURE
- in vec2 iridescenceMapData,
- #endif
- #ifdef IRIDESCENCE_THICKNESS_TEXTURE
- in vec2 iridescenceThicknessMapData,
- #endif
- #ifdef CLEARCOAT
- in float NdotVUnclamped,
- #ifdef CLEARCOAT_TEXTURE
- in vec2 clearCoatMapData,
- #endif
- #endif
- out iridescenceOutParams outParams
- )
- {float iridescenceIntensity=vIridescenceParams.x;float iridescenceIOR=vIridescenceParams.y;float iridescenceThicknessMin=vIridescenceParams.z;float iridescenceThicknessMax=vIridescenceParams.w;float iridescenceThicknessWeight=1.;
- #ifdef IRIDESCENCE_TEXTURE
- iridescenceIntensity*=iridescenceMapData.x;
- #endif
- #if defined(IRIDESCENCE_THICKNESS_TEXTURE)
- iridescenceThicknessWeight=iridescenceThicknessMapData.g;
- #endif
- float iridescenceThickness=mix(iridescenceThicknessMin,iridescenceThicknessMax,iridescenceThicknessWeight);float topIor=1.;
- #ifdef CLEARCOAT
- float clearCoatIntensity=vClearCoatParams.x;
- #ifdef CLEARCOAT_TEXTURE
- clearCoatIntensity*=clearCoatMapData.x;
- #endif
- topIor=mix(1.0,vClearCoatRefractionParams.w-1.,clearCoatIntensity);viewAngle=sqrt(1.0+square(1.0/topIor)*(square(NdotVUnclamped)-1.0));
- #endif
- vec3 iridescenceFresnel=evalIridescence(topIor,iridescenceIOR,viewAngle,iridescenceThickness,specularEnvironmentR0);outParams.specularEnvironmentR0=mix(specularEnvironmentR0,iridescenceFresnel,iridescenceIntensity);outParams.iridescenceIntensity=iridescenceIntensity;outParams.iridescenceThickness=iridescenceThickness;outParams.iridescenceIOR=iridescenceIOR;}
- #endif
- `;
- // Sideeffect
- ShaderStore.IncludesShadersStore[name] = shader;
- /** @internal */
- export const pbrBlockIridescence = { name, shader };
- //# sourceMappingURL=pbrBlockIridescence.js.map
|