initMaterial(){
const programCacheKey = programCache.getProgramCacheKey(parameters);
}
- 这些参数都拼接成一个字符串,然后在字典里面查找是否有对应的字符串
function getProgramCacheKey(parameters) {
const array = [];
if (parameters.shaderID) {
array.push(parameters.shaderID);
} else {
array.push(parameters.fragmentShader);
array.push(parameters.vertexShader);
}
if (parameters.defines !== undefined) {
for (const name in parameters.defines) {
array.push(name);
array.push(parameters.defines[name]);
}
}
if (parameters.isRawShaderMaterial === undefined) {
for (let i = 0; i < parameterNames.length; i++) {
array.push(parameters[parameterNames[i]]);
}
array.push(renderer.outputEncoding);
array.push(renderer.gammaFactor);
}
array.push(parameters.customProgramCacheKey);
return array.join();
}