123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366 |
- // Do not edit.
- import { ShaderStore } from "../Engines/shaderStore.js";
- import "./ShadersInclude/defaultFragmentDeclaration.js";
- import "./ShadersInclude/defaultUboDeclaration.js";
- import "./ShadersInclude/prePassDeclaration.js";
- import "./ShadersInclude/oitDeclaration.js";
- import "./ShadersInclude/mainUVVaryingDeclaration.js";
- import "./ShadersInclude/helperFunctions.js";
- import "./ShadersInclude/lightFragmentDeclaration.js";
- import "./ShadersInclude/lightUboDeclaration.js";
- import "./ShadersInclude/lightsFragmentFunctions.js";
- import "./ShadersInclude/shadowsFragmentFunctions.js";
- import "./ShadersInclude/samplerFragmentDeclaration.js";
- import "./ShadersInclude/fresnelFunction.js";
- import "./ShadersInclude/reflectionFunction.js";
- import "./ShadersInclude/imageProcessingDeclaration.js";
- import "./ShadersInclude/imageProcessingFunctions.js";
- import "./ShadersInclude/bumpFragmentMainFunctions.js";
- import "./ShadersInclude/bumpFragmentFunctions.js";
- import "./ShadersInclude/clipPlaneFragmentDeclaration.js";
- import "./ShadersInclude/logDepthDeclaration.js";
- import "./ShadersInclude/fogFragmentDeclaration.js";
- import "./ShadersInclude/clipPlaneFragment.js";
- import "./ShadersInclude/bumpFragment.js";
- import "./ShadersInclude/decalFragment.js";
- import "./ShadersInclude/depthPrePass.js";
- import "./ShadersInclude/lightFragment.js";
- import "./ShadersInclude/logDepthFragment.js";
- import "./ShadersInclude/fogFragment.js";
- import "./ShadersInclude/oitFragment.js";
- const name = "defaultPixelShader";
- const shader = `#include<__decl__defaultFragment>
- #if defined(BUMP) || !defined(NORMAL)
- #extension GL_OES_standard_derivatives : enable
- #endif
- #include<prePassDeclaration>[SCENE_MRT_COUNT]
- #include<oitDeclaration>
- #define CUSTOM_FRAGMENT_BEGIN
- #ifdef LOGARITHMICDEPTH
- #extension GL_EXT_frag_depth : enable
- #endif
- varying vec3 vPositionW;
- #ifdef NORMAL
- varying vec3 vNormalW;
- #endif
- #if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES)
- varying vec4 vColor;
- #endif
- #include<mainUVVaryingDeclaration>[1..7]
- #include<helperFunctions>
- #include<__decl__lightFragment>[0..maxSimultaneousLights]
- #include<lightsFragmentFunctions>
- #include<shadowsFragmentFunctions>
- #include<samplerFragmentDeclaration>(_DEFINENAME_,DIFFUSE,_VARYINGNAME_,Diffuse,_SAMPLERNAME_,diffuse)
- #include<samplerFragmentDeclaration>(_DEFINENAME_,AMBIENT,_VARYINGNAME_,Ambient,_SAMPLERNAME_,ambient)
- #include<samplerFragmentDeclaration>(_DEFINENAME_,OPACITY,_VARYINGNAME_,Opacity,_SAMPLERNAME_,opacity)
- #include<samplerFragmentDeclaration>(_DEFINENAME_,EMISSIVE,_VARYINGNAME_,Emissive,_SAMPLERNAME_,emissive)
- #include<samplerFragmentDeclaration>(_DEFINENAME_,LIGHTMAP,_VARYINGNAME_,Lightmap,_SAMPLERNAME_,lightmap)
- #include<samplerFragmentDeclaration>(_DEFINENAME_,DECAL,_VARYINGNAME_,Decal,_SAMPLERNAME_,decal)
- #ifdef REFRACTION
- #ifdef REFRACTIONMAP_3D
- uniform samplerCube refractionCubeSampler;
- #else
- uniform sampler2D refraction2DSampler;
- #endif
- #endif
- #if defined(SPECULARTERM)
- #include<samplerFragmentDeclaration>(_DEFINENAME_,SPECULAR,_VARYINGNAME_,Specular,_SAMPLERNAME_,specular)
- #endif
- #include<fresnelFunction>
- #ifdef REFLECTION
- #ifdef REFLECTIONMAP_3D
- uniform samplerCube reflectionCubeSampler;
- #else
- uniform sampler2D reflection2DSampler;
- #endif
- #ifdef REFLECTIONMAP_SKYBOX
- varying vec3 vPositionUVW;
- #else
- #if defined(REFLECTIONMAP_EQUIRECTANGULAR_FIXED) || defined(REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED)
- varying vec3 vDirectionW;
- #endif
- #endif
- #include<reflectionFunction>
- #endif
- #include<imageProcessingDeclaration>
- #include<imageProcessingFunctions>
- #include<bumpFragmentMainFunctions>
- #include<bumpFragmentFunctions>
- #include<clipPlaneFragmentDeclaration>
- #include<logDepthDeclaration>
- #include<fogFragmentDeclaration>
- #define CUSTOM_FRAGMENT_DEFINITIONS
- void main(void) {
- #define CUSTOM_FRAGMENT_MAIN_BEGIN
- #include<clipPlaneFragment>
- vec3 viewDirectionW=normalize(vEyePosition.xyz-vPositionW);vec4 baseColor=vec4(1.,1.,1.,1.);vec3 diffuseColor=vDiffuseColor.rgb;float alpha=vDiffuseColor.a;
- #ifdef NORMAL
- vec3 normalW=normalize(vNormalW);
- #else
- vec3 normalW=normalize(-cross(dFdx(vPositionW),dFdy(vPositionW)));
- #endif
- #include<bumpFragment>
- #ifdef TWOSIDEDLIGHTING
- normalW=gl_FrontFacing ? normalW : -normalW;
- #endif
- #ifdef DIFFUSE
- baseColor=texture2D(diffuseSampler,vDiffuseUV+uvOffset);
- #if defined(ALPHATEST) && !defined(ALPHATEST_AFTERALLALPHACOMPUTATIONS)
- if (baseColor.a<alphaCutOff)
- discard;
- #endif
- #ifdef ALPHAFROMDIFFUSE
- alpha*=baseColor.a;
- #endif
- #define CUSTOM_FRAGMENT_UPDATE_ALPHA
- baseColor.rgb*=vDiffuseInfos.y;
- #endif
- #if defined(DECAL) && !defined(DECAL_AFTER_DETAIL)
- vec4 decalColor=texture2D(decalSampler,vDecalUV+uvOffset);
- #include<decalFragment>(surfaceAlbedo,baseColor,GAMMADECAL,_GAMMADECAL_NOTUSED_)
- #endif
- #include<depthPrePass>
- #if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES)
- baseColor.rgb*=vColor.rgb;
- #endif
- #ifdef DETAIL
- baseColor.rgb=baseColor.rgb*2.0*mix(0.5,detailColor.r,vDetailInfos.y);
- #endif
- #if defined(DECAL) && defined(DECAL_AFTER_DETAIL)
- vec4 decalColor=texture2D(decalSampler,vDecalUV+uvOffset);
- #include<decalFragment>(surfaceAlbedo,baseColor,GAMMADECAL,_GAMMADECAL_NOTUSED_)
- #endif
- #define CUSTOM_FRAGMENT_UPDATE_DIFFUSE
- vec3 baseAmbientColor=vec3(1.,1.,1.);
- #ifdef AMBIENT
- baseAmbientColor=texture2D(ambientSampler,vAmbientUV+uvOffset).rgb*vAmbientInfos.y;
- #endif
- #define CUSTOM_FRAGMENT_BEFORE_LIGHTS
- #ifdef SPECULARTERM
- float glossiness=vSpecularColor.a;vec3 specularColor=vSpecularColor.rgb;
- #ifdef SPECULAR
- vec4 specularMapColor=texture2D(specularSampler,vSpecularUV+uvOffset);specularColor=specularMapColor.rgb;
- #ifdef GLOSSINESS
- glossiness=glossiness*specularMapColor.a;
- #endif
- #endif
- #else
- float glossiness=0.;
- #endif
- vec3 diffuseBase=vec3(0.,0.,0.);lightingInfo info;
- #ifdef SPECULARTERM
- vec3 specularBase=vec3(0.,0.,0.);
- #endif
- float shadow=1.;float aggShadow=0.;float numLights=0.;
- #ifdef LIGHTMAP
- vec4 lightmapColor=texture2D(lightmapSampler,vLightmapUV+uvOffset);
- #ifdef RGBDLIGHTMAP
- lightmapColor.rgb=fromRGBD(lightmapColor);
- #endif
- lightmapColor.rgb*=vLightmapInfos.y;
- #endif
- #include<lightFragment>[0..maxSimultaneousLights]
- aggShadow=aggShadow/numLights;vec4 refractionColor=vec4(0.,0.,0.,1.);
- #ifdef REFRACTION
- vec3 refractionVector=normalize(refract(-viewDirectionW,normalW,vRefractionInfos.y));
- #ifdef REFRACTIONMAP_3D
- #ifdef USE_LOCAL_REFRACTIONMAP_CUBIC
- refractionVector=parallaxCorrectNormal(vPositionW,refractionVector,vRefractionSize,vRefractionPosition);
- #endif
- refractionVector.y=refractionVector.y*vRefractionInfos.w;vec4 refractionLookup=textureCube(refractionCubeSampler,refractionVector);if (dot(refractionVector,viewDirectionW)<1.0) {refractionColor=refractionLookup;}
- #else
- vec3 vRefractionUVW=vec3(refractionMatrix*(view*vec4(vPositionW+refractionVector*vRefractionInfos.z,1.0)));vec2 refractionCoords=vRefractionUVW.xy/vRefractionUVW.z;refractionCoords.y=1.0-refractionCoords.y;refractionColor=texture2D(refraction2DSampler,refractionCoords);
- #endif
- #ifdef RGBDREFRACTION
- refractionColor.rgb=fromRGBD(refractionColor);
- #endif
- #ifdef IS_REFRACTION_LINEAR
- refractionColor.rgb=toGammaSpace(refractionColor.rgb);
- #endif
- refractionColor.rgb*=vRefractionInfos.x;
- #endif
- vec4 reflectionColor=vec4(0.,0.,0.,1.);
- #ifdef REFLECTION
- vec3 vReflectionUVW=computeReflectionCoords(vec4(vPositionW,1.0),normalW);
- #ifdef REFLECTIONMAP_OPPOSITEZ
- vReflectionUVW.z*=-1.0;
- #endif
- #ifdef REFLECTIONMAP_3D
- #ifdef ROUGHNESS
- float bias=vReflectionInfos.y;
- #ifdef SPECULARTERM
- #ifdef SPECULAR
- #ifdef GLOSSINESS
- bias*=(1.0-specularMapColor.a);
- #endif
- #endif
- #endif
- reflectionColor=textureCube(reflectionCubeSampler,vReflectionUVW,bias);
- #else
- reflectionColor=textureCube(reflectionCubeSampler,vReflectionUVW);
- #endif
- #else
- vec2 coords=vReflectionUVW.xy;
- #ifdef REFLECTIONMAP_PROJECTION
- coords/=vReflectionUVW.z;
- #endif
- coords.y=1.0-coords.y;reflectionColor=texture2D(reflection2DSampler,coords);
- #endif
- #ifdef RGBDREFLECTION
- reflectionColor.rgb=fromRGBD(reflectionColor);
- #endif
- #ifdef IS_REFLECTION_LINEAR
- reflectionColor.rgb=toGammaSpace(reflectionColor.rgb);
- #endif
- reflectionColor.rgb*=vReflectionInfos.x;
- #ifdef REFLECTIONFRESNEL
- float reflectionFresnelTerm=computeFresnelTerm(viewDirectionW,normalW,reflectionRightColor.a,reflectionLeftColor.a);
- #ifdef REFLECTIONFRESNELFROMSPECULAR
- #ifdef SPECULARTERM
- reflectionColor.rgb*=specularColor.rgb*(1.0-reflectionFresnelTerm)+reflectionFresnelTerm*reflectionRightColor.rgb;
- #else
- reflectionColor.rgb*=reflectionLeftColor.rgb*(1.0-reflectionFresnelTerm)+reflectionFresnelTerm*reflectionRightColor.rgb;
- #endif
- #else
- reflectionColor.rgb*=reflectionLeftColor.rgb*(1.0-reflectionFresnelTerm)+reflectionFresnelTerm*reflectionRightColor.rgb;
- #endif
- #endif
- #endif
- #ifdef REFRACTIONFRESNEL
- float refractionFresnelTerm=computeFresnelTerm(viewDirectionW,normalW,refractionRightColor.a,refractionLeftColor.a);refractionColor.rgb*=refractionLeftColor.rgb*(1.0-refractionFresnelTerm)+refractionFresnelTerm*refractionRightColor.rgb;
- #endif
- #ifdef OPACITY
- vec4 opacityMap=texture2D(opacitySampler,vOpacityUV+uvOffset);
- #ifdef OPACITYRGB
- opacityMap.rgb=opacityMap.rgb*vec3(0.3,0.59,0.11);alpha*=(opacityMap.x+opacityMap.y+opacityMap.z)* vOpacityInfos.y;
- #else
- alpha*=opacityMap.a*vOpacityInfos.y;
- #endif
- #endif
- #if defined(VERTEXALPHA) || defined(INSTANCESCOLOR) && defined(INSTANCES)
- alpha*=vColor.a;
- #endif
- #ifdef OPACITYFRESNEL
- float opacityFresnelTerm=computeFresnelTerm(viewDirectionW,normalW,opacityParts.z,opacityParts.w);alpha+=opacityParts.x*(1.0-opacityFresnelTerm)+opacityFresnelTerm*opacityParts.y;
- #endif
- #ifdef ALPHATEST
- #ifdef ALPHATEST_AFTERALLALPHACOMPUTATIONS
- if (alpha<alphaCutOff)
- discard;
- #endif
- #ifndef ALPHABLEND
- alpha=1.0;
- #endif
- #endif
- vec3 emissiveColor=vEmissiveColor;
- #ifdef EMISSIVE
- emissiveColor+=texture2D(emissiveSampler,vEmissiveUV+uvOffset).rgb*vEmissiveInfos.y;
- #endif
- #ifdef EMISSIVEFRESNEL
- float emissiveFresnelTerm=computeFresnelTerm(viewDirectionW,normalW,emissiveRightColor.a,emissiveLeftColor.a);emissiveColor*=emissiveLeftColor.rgb*(1.0-emissiveFresnelTerm)+emissiveFresnelTerm*emissiveRightColor.rgb;
- #endif
- #ifdef DIFFUSEFRESNEL
- float diffuseFresnelTerm=computeFresnelTerm(viewDirectionW,normalW,diffuseRightColor.a,diffuseLeftColor.a);diffuseBase*=diffuseLeftColor.rgb*(1.0-diffuseFresnelTerm)+diffuseFresnelTerm*diffuseRightColor.rgb;
- #endif
- #ifdef EMISSIVEASILLUMINATION
- vec3 finalDiffuse=clamp(diffuseBase*diffuseColor+vAmbientColor,0.0,1.0)*baseColor.rgb;
- #else
- #ifdef LINKEMISSIVEWITHDIFFUSE
- vec3 finalDiffuse=clamp((diffuseBase+emissiveColor)*diffuseColor+vAmbientColor,0.0,1.0)*baseColor.rgb;
- #else
- vec3 finalDiffuse=clamp(diffuseBase*diffuseColor+emissiveColor+vAmbientColor,0.0,1.0)*baseColor.rgb;
- #endif
- #endif
- #ifdef SPECULARTERM
- vec3 finalSpecular=specularBase*specularColor;
- #ifdef SPECULAROVERALPHA
- alpha=clamp(alpha+dot(finalSpecular,vec3(0.3,0.59,0.11)),0.,1.);
- #endif
- #else
- vec3 finalSpecular=vec3(0.0);
- #endif
- #ifdef REFLECTIONOVERALPHA
- alpha=clamp(alpha+dot(reflectionColor.rgb,vec3(0.3,0.59,0.11)),0.,1.);
- #endif
- #ifdef EMISSIVEASILLUMINATION
- vec4 color=vec4(clamp(finalDiffuse*baseAmbientColor+finalSpecular+reflectionColor.rgb+emissiveColor+refractionColor.rgb,0.0,1.0),alpha);
- #else
- vec4 color=vec4(finalDiffuse*baseAmbientColor+finalSpecular+reflectionColor.rgb+refractionColor.rgb,alpha);
- #endif
- #ifdef LIGHTMAP
- #ifndef LIGHTMAPEXCLUDED
- #ifdef USELIGHTMAPASSHADOWMAP
- color.rgb*=lightmapColor.rgb;
- #else
- color.rgb+=lightmapColor.rgb;
- #endif
- #endif
- #endif
- #define CUSTOM_FRAGMENT_BEFORE_FOG
- color.rgb=max(color.rgb,0.);
- #include<logDepthFragment>
- #include<fogFragment>
- #ifdef IMAGEPROCESSINGPOSTPROCESS
- color.rgb=toLinearSpace(color.rgb);
- #else
- #ifdef IMAGEPROCESSING
- color.rgb=toLinearSpace(color.rgb);color=applyImageProcessing(color);
- #endif
- #endif
- color.a*=visibility;
- #ifdef PREMULTIPLYALPHA
- color.rgb*=color.a;
- #endif
- #define CUSTOM_FRAGMENT_BEFORE_FRAGCOLOR
- #ifdef PREPASS
- float writeGeometryInfo=color.a>0.4 ? 1.0 : 0.0;gl_FragData[0]=color;
- #ifdef PREPASS_POSITION
- gl_FragData[PREPASS_POSITION_INDEX]=vec4(vPositionW,writeGeometryInfo);
- #endif
- #ifdef PREPASS_VELOCITY
- vec2 a=(vCurrentPosition.xy/vCurrentPosition.w)*0.5+0.5;vec2 b=(vPreviousPosition.xy/vPreviousPosition.w)*0.5+0.5;vec2 velocity=abs(a-b);velocity=vec2(pow(velocity.x,1.0/3.0),pow(velocity.y,1.0/3.0))*sign(a-b)*0.5+0.5;gl_FragData[PREPASS_VELOCITY_INDEX]=vec4(velocity,0.0,writeGeometryInfo);
- #endif
- #ifdef PREPASS_IRRADIANCE
- gl_FragData[PREPASS_IRRADIANCE_INDEX]=vec4(0.0,0.0,0.0,writeGeometryInfo);
- #endif
- #ifdef PREPASS_DEPTH
- gl_FragData[PREPASS_DEPTH_INDEX]=vec4(vViewPos.z,0.0,0.0,writeGeometryInfo);
- #endif
- #ifdef PREPASS_NORMAL
- #ifdef PREPASS_NORMAL_WORLDSPACE
- gl_FragData[PREPASS_NORMAL_INDEX]=vec4(normalW,writeGeometryInfo);
- #else
- gl_FragData[PREPASS_NORMAL_INDEX]=vec4(normalize((view*vec4(normalW,0.0)).rgb),writeGeometryInfo);
- #endif
- #endif
- #ifdef PREPASS_ALBEDO_SQRT
- gl_FragData[PREPASS_ALBEDO_SQRT_INDEX]=vec4(0.0,0.0,0.0,writeGeometryInfo);
- #endif
- #ifdef PREPASS_REFLECTIVITY
- #if defined(SPECULARTERM)
- #if defined(SPECULAR)
- gl_FragData[PREPASS_REFLECTIVITY_INDEX]=vec4(toLinearSpace(specularMapColor))*writeGeometryInfo;
- #else
- gl_FragData[PREPASS_REFLECTIVITY_INDEX]=vec4(toLinearSpace(specularColor),1.0)*writeGeometryInfo;
- #endif
- #else
- gl_FragData[PREPASS_REFLECTIVITY_INDEX]=vec4(0.0,0.0,0.0,1.0)*writeGeometryInfo;
- #endif
- #endif
- #endif
- #if !defined(PREPASS) || defined(WEBGL2)
- gl_FragColor=color;
- #endif
- #include<oitFragment>
- #if ORDER_INDEPENDENT_TRANSPARENCY
- if (fragDepth==nearestDepth) {frontColor.rgb+=color.rgb*color.a*alphaMultiplier;frontColor.a=1.0-alphaMultiplier*(1.0-color.a);} else {backColor+=color;}
- #endif
- #define CUSTOM_FRAGMENT_MAIN_END
- }
- `;
- // Sideeffect
- ShaderStore.ShadersStore[name] = shader;
- /** @internal */
- export const defaultPixelShader = { name, shader };
- //# sourceMappingURL=default.fragment.js.map
|