_programRestored() {
        if(this.target) {
            // reset its render target if needed
            this.setRenderTarget(this.renderer.renderTargets[this.target.index]);
        }

        this._initMatrices();

        // set our initial perspective matrix
        this.setPerspective(this.camera.fov, this.camera.near, this.camera.far);

        this._setWorldSizes();
        this._applyWorldPositions();

        // add the plane to our draw stack again as it have been emptied
        this.renderer.scene.addPlane(this);

        // reset textures
        for(let i = 0; i < this.textures.length; i++) {
            this.textures[i]._parent = this;
            this.textures[i]._restoreContext();
        }

        this._canDraw = true;
    }
Used internally to handle context restoration after the program has been successfully compiled again
*