/// <summary> /// Get the shader from the database based on the parameters used for its compilation. /// </summary> /// <param name="effectName">Name of the effect.</param> /// <param name="parameters">The parameters.</param> /// <returns>The EffectBytecode if found.</returns> protected CompilerResults GetShaderFromParameters(string effectName, CompilerParameters parameters) { lock (earlyCompilerCache) { List <CompilerResults> compilerResultsList; if (!earlyCompilerCache.TryGetValue(effectName, out compilerResultsList)) { return(null); } // TODO: Optimize it so that search is not linear? // Probably not trivial for subset testing foreach (var compiledResults in compilerResultsList) { if (parameters.Contains(compiledResults.UsedParameters)) { return(compiledResults); } } } return(null); }