public Program createProgramFromSourceFilesWithInclude(AssetManager assetManager, String include, List<String> resources) {
        StringBuilder str = new StringBuilder();
        str.append(include);
        for (String res : resources) {
            AssetInfo info = assetManager.locateAsset(new AssetKey<String>(res));
            if (info == null) {
                throw new AssetNotFoundException("Unable to load source file \"" + res + "\"");
            }
            try (BufferedReader reader = new BufferedReader(new InputStreamReader(info.openStream()))) {
                while (true) {
                    String line = reader.readLine();
                    if (line == null) {
                        break;
                    }
                    str.append(line).append('\n');
                }
            } catch (IOException ex) {
                LOG.log(Level.WARNING, "unable to load source file '" + res + "'", ex);
            }
        }
        return createProgramFromSourceCodeWithDependencies(str.toString(), assetManager);
    }
Creates a program object from the provided source code and files.
The source code is made up from the specified include string first,
then all files specified by the resource array (array of asset paths)
are loaded by the provided asset manager and appended to the source code.
<p>
The typical use case is:
<ul>
 <li>The include string contains some compiler constants like the grid size </li>
 <li>Some common OpenCL files used as libraries (Convention: file names end with {@code .clh}</li>
 <li>One main OpenCL file containing the actual kernels (Convention: file name ends with {@code .cl})</li>
</ul>

After the files were combined, additional include statements are resolved
by {@link #createProgramFromSourceCodeWithDependencies(java.lang.String, com.jme3.asset.AssetManager) }.

@param assetManager the asset manager used to load the files
@param include an additional include string
@param resources an array of asset paths pointing to OpenCL source files
@return the new program objects
@throws AssetNotFoundException if a file could not be loaded
jme3-core/src/main/java/com/jme3/opencl/Context.java