// Do not edit. import { ShaderStore } from "../../Engines/shaderStore.js"; const name = "reflectionFunction"; const shader = `vec3 computeFixedEquirectangularCoords(vec4 worldPos,vec3 worldNormal,vec3 direction) {float lon=atan(direction.z,direction.x);float lat=acos(direction.y);vec2 sphereCoords=vec2(lon,lat)*RECIPROCAL_PI2*2.0;float s=sphereCoords.x*0.5+0.5;float t=sphereCoords.y;return vec3(s,t,0); } vec3 computeMirroredFixedEquirectangularCoords(vec4 worldPos,vec3 worldNormal,vec3 direction) {float lon=atan(direction.z,direction.x);float lat=acos(direction.y);vec2 sphereCoords=vec2(lon,lat)*RECIPROCAL_PI2*2.0;float s=sphereCoords.x*0.5+0.5;float t=sphereCoords.y;return vec3(1.0-s,t,0); } vec3 computeEquirectangularCoords(vec4 worldPos,vec3 worldNormal,vec3 eyePosition,mat4 reflectionMatrix) {vec3 cameraToVertex=normalize(worldPos.xyz-eyePosition);vec3 r=normalize(reflect(cameraToVertex,worldNormal));r=vec3(reflectionMatrix*vec4(r,0));float lon=atan(r.z,r.x);float lat=acos(r.y);vec2 sphereCoords=vec2(lon,lat)*RECIPROCAL_PI2*2.0;float s=sphereCoords.x*0.5+0.5;float t=sphereCoords.y;return vec3(s,t,0);} vec3 computeSphericalCoords(vec4 worldPos,vec3 worldNormal,mat4 view,mat4 reflectionMatrix) {vec3 viewDir=normalize(vec3(view*worldPos));vec3 viewNormal=normalize(vec3(view*vec4(worldNormal,0.0)));vec3 r=reflect(viewDir,viewNormal);r=vec3(reflectionMatrix*vec4(r,0));r.z=r.z-1.0;float m=2.0*length(r);return vec3(r.x/m+0.5,1.0-r.y/m-0.5,0);} vec3 computePlanarCoords(vec4 worldPos,vec3 worldNormal,vec3 eyePosition,mat4 reflectionMatrix) {vec3 viewDir=worldPos.xyz-eyePosition;vec3 coords=normalize(reflect(viewDir,worldNormal));return vec3(reflectionMatrix*vec4(coords,1));} vec3 computeCubicCoords(vec4 worldPos,vec3 worldNormal,vec3 eyePosition,mat4 reflectionMatrix) {vec3 viewDir=normalize(worldPos.xyz-eyePosition);vec3 coords=reflect(viewDir,worldNormal);coords=vec3(reflectionMatrix*vec4(coords,0)); #ifdef INVERTCUBICMAP coords.y*=-1.0; #endif return coords;} vec3 computeCubicLocalCoords(vec4 worldPos,vec3 worldNormal,vec3 eyePosition,mat4 reflectionMatrix,vec3 reflectionSize,vec3 reflectionPosition) {vec3 viewDir=normalize(worldPos.xyz-eyePosition);vec3 coords=reflect(viewDir,worldNormal);coords=parallaxCorrectNormal(worldPos.xyz,coords,reflectionSize,reflectionPosition);coords=vec3(reflectionMatrix*vec4(coords,0)); #ifdef INVERTCUBICMAP coords.y*=-1.0; #endif return coords;} vec3 computeProjectionCoords(vec4 worldPos,mat4 view,mat4 reflectionMatrix) {return vec3(reflectionMatrix*(view*worldPos));} vec3 computeSkyBoxCoords(vec3 positionW,mat4 reflectionMatrix) {return vec3(reflectionMatrix*vec4(positionW,1.));} #ifdef REFLECTION vec3 computeReflectionCoords(vec4 worldPos,vec3 worldNormal) { #ifdef REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED vec3 direction=normalize(vDirectionW);return computeMirroredFixedEquirectangularCoords(worldPos,worldNormal,direction); #endif #ifdef REFLECTIONMAP_EQUIRECTANGULAR_FIXED vec3 direction=normalize(vDirectionW);return computeFixedEquirectangularCoords(worldPos,worldNormal,direction); #endif #ifdef REFLECTIONMAP_EQUIRECTANGULAR return computeEquirectangularCoords(worldPos,worldNormal,vEyePosition.xyz,reflectionMatrix); #endif #ifdef REFLECTIONMAP_SPHERICAL return computeSphericalCoords(worldPos,worldNormal,view,reflectionMatrix); #endif #ifdef REFLECTIONMAP_PLANAR return computePlanarCoords(worldPos,worldNormal,vEyePosition.xyz,reflectionMatrix); #endif #ifdef REFLECTIONMAP_CUBIC #ifdef USE_LOCAL_REFLECTIONMAP_CUBIC return computeCubicLocalCoords(worldPos,worldNormal,vEyePosition.xyz,reflectionMatrix,vReflectionSize,vReflectionPosition); #else return computeCubicCoords(worldPos,worldNormal,vEyePosition.xyz,reflectionMatrix); #endif #endif #ifdef REFLECTIONMAP_PROJECTION return computeProjectionCoords(worldPos,view,reflectionMatrix); #endif #ifdef REFLECTIONMAP_SKYBOX return computeSkyBoxCoords(vPositionUVW,reflectionMatrix); #endif #ifdef REFLECTIONMAP_EXPLICIT return vec3(0,0,0); #endif } #endif `; // Sideeffect ShaderStore.IncludesShadersStore[name] = shader; /** @internal */ export const reflectionFunction = { name, shader }; //# sourceMappingURL=reflectionFunction.js.map