code: public int bindShader(GVRContext context, IRenderable rdata, GVRScene scene, boolean isMultiview)
      {
          String signature = getClass().getSimpleName();
          GVRShaderManager shaderManager = context.getShaderManager();
          GVRMaterial mtl = rdata.getMaterial();
          synchronized (shaderManager)
          {
              int nativeShader = shaderManager.getShader(signature);
  
              if (nativeShader == 0)
              {
                  nativeShader = addShader(shaderManager, signature, mtl);
              }
              if (nativeShader > 0)
              {
                  rdata.setShader(nativeShader, isMultiview);
              }
              return nativeShader;
          }
      }
docs: Select the specific vertex and fragment shader to use.
  
  The shader template is used to generate the sources for the vertex and
  fragment shader based on the vertex, material and light properties. This
  function may compile the shader if it does not already exist.
  
  @param context
  GVRContext
  @param rdata
  renderable entity with mesh and rendering options
  @param scene
  list of light sources