UNPKG

@babylonjs/core

Version:

Getting started? Play directly with the Babylon.js API using our [playground](https://playground.babylonjs.com/). It also contains a lot of samples to learn how to use it.

138 lines 6.2 kB
// Do not edit. import { ShaderStore } from "../../Engines/shaderStore.js"; const name = "openpbrBaseLayerData"; const shader = `vec3 base_color=vec3(0.8);float base_metalness=0.0;float base_diffuse_roughness=0.0;float specular_weight=1.0;float specular_roughness=0.3;vec3 specular_color=vec3(1.0);float specular_roughness_anisotropy=0.0;float specular_ior=1.5;float alpha=1.0;vec2 geometry_tangent=vec2(1.0,0.0);float geometry_thickness=0.0; #ifdef BASE_WEIGHT vec4 baseWeightFromTexture=texture2D(baseWeightSampler,vBaseWeightUV+uvOffset); #endif #ifdef BASE_COLOR vec4 baseColorFromTexture=texture2D(baseColorSampler,vBaseColorUV+uvOffset); #endif #ifdef BASE_METALNESS vec4 metallicFromTexture=texture2D(baseMetalnessSampler,vBaseMetalnessUV+uvOffset); #endif #if defined(SPECULAR_ROUGHNESS_FROM_METALNESS_TEXTURE_GREEN) && defined(BASE_METALNESS) float roughnessFromTexture=metallicFromTexture.g; #elif defined(SPECULAR_ROUGHNESS) float roughnessFromTexture=texture2D(specularRoughnessSampler,vSpecularRoughnessUV+uvOffset).r; #endif #ifdef GEOMETRY_TANGENT vec3 geometryTangentFromTexture=texture2D(geometryTangentSampler,vGeometryTangentUV+uvOffset).rgb; #endif #ifdef SPECULAR_ROUGHNESS_ANISOTROPY float anisotropyFromTexture=texture2D(specularRoughnessAnisotropySampler,vSpecularRoughnessAnisotropyUV+uvOffset).r*vSpecularRoughnessAnisotropyInfos.y; #endif #ifdef BASE_DIFFUSE_ROUGHNESS float baseDiffuseRoughnessFromTexture=texture2D(baseDiffuseRoughnessSampler,vBaseDiffuseRoughnessUV+uvOffset).r; #endif #ifdef GEOMETRY_OPACITY vec4 opacityFromTexture=texture2D(geometryOpacitySampler,vGeometryOpacityUV+uvOffset); #endif #ifdef GEOMETRY_THICKNESS vec4 thicknessFromTexture=texture2D(geometryThicknessSampler,vGeometryThicknessUV+uvOffset); #endif #ifdef DECAL vec4 decalFromTexture=texture2D(decalSampler,vDecalUV+uvOffset); #endif #ifdef SPECULAR_COLOR vec4 specularColorFromTexture=texture2D(specularColorSampler,vSpecularColorUV+uvOffset); #endif #ifdef SPECULAR_WEIGHT #ifdef SPECULAR_WEIGHT_IN_ALPHA float specularWeightFromTexture=texture2D(specularWeightSampler,vSpecularWeightUV+uvOffset).a; #else float specularWeightFromTexture=texture2D(specularWeightSampler,vSpecularWeightUV+uvOffset).r; #endif #endif #if defined(ANISOTROPIC) || defined(FUZZ) || defined(REFRACTED_BACKGROUND) vec3 noise=vec3(2.0)*texture2D(blueNoiseSampler,gl_FragCoord.xy/256.0).xyz-vec3(1.0); #endif base_color=vBaseColor.rgb; #if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES) base_color*=vColor.rgb; #endif #if defined(VERTEXALPHA) || defined(INSTANCESCOLOR) && defined(INSTANCES) alpha*=vColor.a; #endif base_color*=vec3(vBaseWeight);alpha=vBaseColor.a;base_metalness=vReflectanceInfo.x;base_diffuse_roughness=vBaseDiffuseRoughness;specular_roughness=vReflectanceInfo.y;specular_color=vSpecularColor.rgb;specular_weight=vReflectanceInfo.a;specular_ior=vReflectanceInfo.z;specular_roughness_anisotropy=vSpecularAnisotropy.b;geometry_tangent=vSpecularAnisotropy.rg;geometry_thickness=vGeometryThickness; #ifdef BASE_COLOR #ifdef BASE_COLOR_GAMMA base_color*=toLinearSpace(baseColorFromTexture.rgb); #else base_color*=baseColorFromTexture.rgb; #endif base_color*=vBaseColorInfos.y; #endif #ifdef BASE_WEIGHT base_color*=baseWeightFromTexture.r; #endif #if defined(BASE_COLOR) && defined(ALPHA_FROM_BASE_COLOR_TEXTURE) alpha*=baseColorFromTexture.a; #elif defined(GEOMETRY_OPACITY) alpha*=opacityFromTexture.r;alpha*=vGeometryOpacityInfos.y; #endif #ifdef GEOMETRY_THICKNESS #ifdef GEOMETRY_THICKNESS_FROM_GREEN_CHANNEL geometry_thickness*=thicknessFromTexture.g; #else geometry_thickness*=thicknessFromTexture.r; #endif geometry_thickness*=vGeometryThicknessInfos.y; #endif #ifdef ALPHATEST #if DEBUGMODE != 88 if (alpha<ALPHATESTVALUE) discard; #endif #ifndef ALPHABLEND alpha=1.0; #endif #endif #ifdef BASE_METALNESS #ifdef BASE_METALNESS_FROM_METALNESS_TEXTURE_BLUE base_metalness*=metallicFromTexture.b; #else base_metalness*=metallicFromTexture.r; #endif #endif #ifdef BASE_DIFFUSE_ROUGHNESS base_diffuse_roughness*=baseDiffuseRoughnessFromTexture*vBaseDiffuseRoughnessInfos.y; #endif #ifdef SPECULAR_COLOR #ifdef SPECULAR_COLOR_GAMMA specular_color*=toLinearSpace(specularColorFromTexture.rgb); #else specular_color*=specularColorFromTexture.rgb; #endif #endif #ifdef SPECULAR_WEIGHT_FROM_SPECULAR_COLOR_TEXTURE specular_weight*=specularColorFromTexture.a; #elif defined(SPECULAR_WEIGHT) specular_weight*=specularWeightFromTexture; #endif #if defined(SPECULAR_ROUGHNESS) || (defined(SPECULAR_ROUGHNESS_FROM_METALNESS_TEXTURE_GREEN) && defined(BASE_METALNESS)) specular_roughness*=roughnessFromTexture; #endif #ifdef GEOMETRY_TANGENT {vec2 tangentFromTexture=normalize(geometryTangentFromTexture.xy*2.0-1.0);float tangent_angle_texture=atan(tangentFromTexture.y,tangentFromTexture.x);float tangent_angle_uniform=atan(geometry_tangent.y,geometry_tangent.x);float tangent_angle=tangent_angle_texture+tangent_angle_uniform;geometry_tangent=vec2(cos(tangent_angle),sin(tangent_angle));} #endif #if defined(GEOMETRY_TANGENT) && \ defined(SPECULAR_ROUGHNESS_ANISOTROPY_FROM_TANGENT_TEXTURE) specular_roughness_anisotropy*=geometryTangentFromTexture.b; #elif defined(SPECULAR_ROUGHNESS_ANISOTROPY) specular_roughness_anisotropy*=anisotropyFromTexture; #endif #ifdef DETAIL float detailRoughness=mix(0.5,detailColor.b,vDetailInfos.w);float loLerp=mix(0.,specular_roughness,detailRoughness*2.);float hiLerp=mix(specular_roughness,1.,(detailRoughness-0.5)*2.);specular_roughness=mix(loLerp,hiLerp,step(detailRoughness,0.5)); #endif #ifdef USE_GLTF_STYLE_ANISOTROPY float baseAlpha=specular_roughness*specular_roughness;float roughnessT=mix(baseAlpha,1.0,specular_roughness_anisotropy*specular_roughness_anisotropy);float roughnessB=baseAlpha;specular_roughness_anisotropy=1.0-roughnessB/max(roughnessT,0.00001);specular_roughness=sqrt(roughnessT/sqrt(2.0/(1.0+(1.0-specular_roughness_anisotropy)*(1.0-specular_roughness_anisotropy)))); #endif `; // Sideeffect if (!ShaderStore.IncludesShadersStore[name]) { ShaderStore.IncludesShadersStore[name] = shader; } /** @internal */ export const openpbrBaseLayerData = { name, shader }; //# sourceMappingURL=openpbrBaseLayerData.js.map