/// <summary>
        /// Sets the current active material, returns true if a material switch occured
        /// </summary>
        /// <param name="material"></param>
        public void SetActiveMaterial(Material material, bool shadow = false, bool forceswitch = false, bool noapply = false)
        {
            // Null check
            if (material == null)
            {
                activematerial = null;
                activematerialshadow = false;
                return;
            }

            // Should we ignore optimisations?
            if (activematerial == null || forceswitch)
            {
                activematerial = material;
                Shader shader = shadow ? material.ShadowShader : material.Shader;
                if (shader == null)
                {
                    activematerial = null;
                    activematerialshadow = false;
                    return;
                }
                shader.Activate(context);
                if (!noapply) material.Apply(shadow);
                frame_materialswitches++;
                frame_shaderswitches++;
                return;
            }

            // Did the material change?
            if (material != activematerial)
            {
                // Did the shader change?
                Shader oldshader = shadow ? activematerial.ShadowShader : activematerial.Shader;
                Shader newshader = shadow ? material.ShadowShader : material.Shader;
                if (newshader == null)
                {
                    activematerial = null;
                    activematerialshadow = false;
                    return;
                }
                if (oldshader != newshader)
                {
                    // Activate new shader
                    newshader.Activate(context);
                    frame_shaderswitches++;
                }

                // Apply
                activematerial = material;
                activematerialshadow = shadow;
                if (!noapply) material.Apply(shadow);
                frame_materialswitches++;
            }
        }