private BindUnits updateShaderMaterialParameters(Renderer renderer, Shader shader,
                 SafeArrayList<MatParamOverride> worldOverrides, SafeArrayList<MatParamOverride> forcedOverrides) {

        bindUnits.textureUnit = 0;
        bindUnits.bufferUnit = 0;

        if (worldOverrides != null) {
            applyOverrides(renderer, shader, worldOverrides, bindUnits);
        }
        if (forcedOverrides != null) {
            applyOverrides(renderer, shader, forcedOverrides, bindUnits);
        }

        for (int i = 0; i < paramValues.size(); i++) {
            MatParam param = paramValues.getValue(i);
            VarType type = param.getVarType();
            updateShaderMaterialParameter(renderer, type, shader, param, bindUnits, false);
        }

        // TODO: HACKY HACK remove this when texture unit is handled by the uniform.
        return bindUnits;
    }
Select the technique to use for rendering this material.
<p>
Any candidate technique for selection (either default or named)
must be verified to be compatible with the system, for that, the
<code>renderManager</code> is queried for capabilities.

@param name The name of the technique to select, pass
{@link TechniqueDef#DEFAULT_TECHNIQUE_NAME} to select one of the default
techniques.
@param renderManager The {@link RenderManager render manager}
to query for capabilities.

@throws IllegalArgumentException If no technique exists with the given
name.
@throws UnsupportedOperationException If no candidate technique supports
the system capabilities.
jme3-core/src/main/java/com/jme3/material/Material.java