UNPKG

playcanvas

Version:

PlayCanvas WebGL game engine

156 lines (153 loc) 5.99 kB
import { CHUNKAPI_2_6, CHUNKAPI_2_5, CHUNKAPI_2_3, CHUNKAPI_2_1, CHUNKAPI_1_55, CHUNKAPI_1_56, CHUNKAPI_1_51, CHUNKAPI_1_70, CHUNKAPI_1_65, CHUNKAPI_1_62, CHUNKAPI_1_57, CHUNKAPI_1_60 } from '../../../platform/graphics/constants.js'; import { Debug } from '../../../core/debug.js'; import { shaderChunks } from './chunks.js'; var chunkVersions = { // frontend aoPS: CHUNKAPI_1_57, clearCoatPS: CHUNKAPI_1_57, clearCoatGlossPS: CHUNKAPI_1_60, clearCoatNormalPS: CHUNKAPI_1_57, diffusePS: CHUNKAPI_1_57, diffuseDetailMapPS: CHUNKAPI_1_57, emissivePS: CHUNKAPI_1_57, glossPS: CHUNKAPI_1_60, lightmapDirPS: CHUNKAPI_1_55, lightmapSinglePS: CHUNKAPI_1_55, metalnessPS: CHUNKAPI_1_57, normalMapPS: CHUNKAPI_1_57, normalDetailMapPS: CHUNKAPI_1_57, opacityPS: CHUNKAPI_1_57, parallaxPS: CHUNKAPI_1_57, sheenPS: CHUNKAPI_1_57, sheenGlossPS: CHUNKAPI_1_60, specularPS: CHUNKAPI_1_57, specularityFactorPS: CHUNKAPI_1_57, thicknessPS: CHUNKAPI_1_57, transmissionPS: CHUNKAPI_1_57, // backend normalVertexPS: CHUNKAPI_1_55, aoDiffuseOccPS: CHUNKAPI_1_62, aoSpecOccPS: CHUNKAPI_2_6, clusteredLightPS: CHUNKAPI_1_62, clusteredLightShadowPS: CHUNKAPI_1_62, combinePS: CHUNKAPI_1_62, falloffInvSquaredPS: CHUNKAPI_1_62, falloffLinearPS: CHUNKAPI_1_62, lightDiffuseLambertPS: CHUNKAPI_1_62, lightSheenPS: CHUNKAPI_1_62, lightSpecularAnisoGGXPS: CHUNKAPI_1_62, lightSpecularBlinnPS: CHUNKAPI_1_62, ltcPS: CHUNKAPI_1_62, reflDirPS: CHUNKAPI_1_62, reflDirAnisoPS: CHUNKAPI_1_62, reflectionCCPS: CHUNKAPI_1_62, reflectionCubePS: CHUNKAPI_2_6, reflectionEnvPS: CHUNKAPI_2_6, reflectionEnvHQPS: CHUNKAPI_2_6, reflectionSpherePS: CHUNKAPI_2_6, reflectionSheenPS: CHUNKAPI_1_62, shadowCommonPS: CHUNKAPI_1_62, shadowCoordPS: CHUNKAPI_1_62, shadowCoordPerspZBufferPS: CHUNKAPI_1_62, shadowEVSMPS: CHUNKAPI_1_62, spotPS: CHUNKAPI_1_62, TBNPS: CHUNKAPI_1_62, endPS: CHUNKAPI_1_65, metalnessModulatePS: CHUNKAPI_1_65, outputAlphaPS: CHUNKAPI_1_65, outputAlphaPremulPS: CHUNKAPI_1_65, fresnelSchlickPS: CHUNKAPI_1_65, iridescenceDiffractionPS: CHUNKAPI_1_65, lightmapAddPS: CHUNKAPI_1_65, refractionCubePS: CHUNKAPI_1_70, refractionDynamicPS: CHUNKAPI_1_70 }; // removed var removedChunks = { ambientPrefilteredCubePS: CHUNKAPI_1_51, ambientPrefilteredCubeLodPS: CHUNKAPI_1_51, dpAtlasQuadPS: CHUNKAPI_1_51, genParaboloidPS: CHUNKAPI_1_51, prefilterCubemapPS: CHUNKAPI_1_51, reflectionDpAtlasPS: CHUNKAPI_1_51, reflectionPrefilteredCubePS: CHUNKAPI_1_51, reflectionPrefilteredCubeLodPS: CHUNKAPI_1_51, refractionPS: CHUNKAPI_1_56, combineClearCoatPS: CHUNKAPI_1_56, combineDiffusePS: CHUNKAPI_1_56, combineDiffuseSpecularPS: CHUNKAPI_1_56, combineDiffuseSpecularNoReflPS: CHUNKAPI_1_56, combineDiffuseSpecularNoReflSeparateAmbientPS: CHUNKAPI_1_56, combineDiffuseSpecularOldPS: CHUNKAPI_1_56, lightmapSingleVertPS: CHUNKAPI_1_55, normalMapFastPS: CHUNKAPI_1_55, specularAaNonePS: CHUNKAPI_1_55, specularAaToksvigPS: CHUNKAPI_1_55, specularAaToksvigFastPS: CHUNKAPI_1_55, skyboxEnvPS: CHUNKAPI_2_1, skyboxHDRPS: CHUNKAPI_2_1, shadowVSM8PS: CHUNKAPI_2_3, fogExpPS: CHUNKAPI_2_5, fogExp2PS: CHUNKAPI_2_5, fogLinearPS: CHUNKAPI_2_5, fogNonePS: CHUNKAPI_2_5, gamma1_0PS: CHUNKAPI_2_5, gamma2_2PS: CHUNKAPI_2_5, storeEVSMPS: CHUNKAPI_2_6, shadowEVSMnPS: CHUNKAPI_2_6, shadowVSM_commonPS: CHUNKAPI_2_6, shadowStandardPS: CHUNKAPI_2_6, shadowStandardGL2PS: CHUNKAPI_2_6, startVS: CHUNKAPI_2_6, endVS: CHUNKAPI_2_6, baseVS: CHUNKAPI_2_6, baseNineSlicedVS: CHUNKAPI_2_6, viewNormalVS: CHUNKAPI_2_6, lightmapDirAddPS: CHUNKAPI_2_6, TBNObjectSpacePS: CHUNKAPI_2_6, TBNderivativePS: CHUNKAPI_2_6, startPS: CHUNKAPI_2_6, outputAlphaOpaque: CHUNKAPI_2_6, outputAlphaPremul: CHUNKAPI_2_6, cubeMapProjectBoxPS: CHUNKAPI_2_6, cubeMapProjectNonePS: CHUNKAPI_2_6, envMultiplyPS: CHUNKAPI_2_6, envConstPS: CHUNKAPI_2_6, aoSpecOccConstPS: CHUNKAPI_2_6, aoSpecOccConstSimplePS: CHUNKAPI_2_6, aoSpecOccSimplePS: CHUNKAPI_2_6, ambientConstantPS: CHUNKAPI_2_6, ambientEnvPS: CHUNKAPI_2_6, ambientSHPS: CHUNKAPI_2_6, shadowSampleCoordPS: CHUNKAPI_2_6 }; // compare two "major.minor" semantic version strings and return true if a is a smaller version than b. var semverLess = (a, b)=>{ var aver = a.split('.').map((t)=>parseInt(t, 10)); var bver = b.split('.').map((t)=>parseInt(t, 10)); return aver[0] < bver[0] || aver[0] === bver[0] && aver[1] < bver[1]; }; // validate user chunks var validateUserChunks = (userChunks)=>{ var userAPIVersion = userChunks.APIVersion; for(var chunkName in userChunks){ if (chunkName === 'APIVersion') { continue; } if (!shaderChunks.hasOwnProperty(chunkName)) { var removedVersion = removedChunks[chunkName]; if (removedVersion) { Debug.warnOnce("Shader chunk '" + chunkName + "' was removed in API " + removedVersion + " and is no longer supported."); } else { Debug.warnOnce("Shader chunk '" + chunkName + "' is not supported."); } } else { var engineAPIVersion = chunkVersions[chunkName]; var chunkIsOutdated = engineAPIVersion && (!userAPIVersion || semverLess(userAPIVersion, engineAPIVersion)); if (chunkIsOutdated) { Debug.warnOnce("Shader chunk '" + chunkName + "' is API version " + engineAPIVersion + ", but the supplied chunk is version " + (userAPIVersion || '-') + ". Please update to the latest API: https://developer.playcanvas.com/user-manual/graphics/shader-chunk-migrations/"); } } } }; export { validateUserChunks };