code: public void prepareRender() {
  		lightRenderedLastFrame = 0;
  
  		Gdx.gl.glDepthMask(false);
  		Gdx.gl.glEnable(GL20.GL_BLEND);
  		simpleBlendFunc.apply();
  
  		boolean useLightMap = (shadows || blur);
  		if (useLightMap) {
  			lightMap.frameBuffer.begin();
  			Gdx.gl.glClearColor(0f, 0f, 0f, 0f);
  			Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
  		}
  
  		ShaderProgram shader = customLightShader != null ? customLightShader : lightShader;
  		shader.begin();
  		{
  			shader.setUniformMatrix("u_projTrans", combined);
  			if (customLightShader != null) updateLightShader();
  			for (Light light : lightList) {
  				if (customLightShader != null) updateLightShaderPerLight(light);
  				light.render();
  			}
  		}
  		shader.end();
  
  		if (useLightMap) {
  			if (customViewport) {
  				lightMap.frameBuffer.end(
  					viewportX,
  					viewportY,
  					viewportWidth,
  					viewportHeight);
  			} else {
  				lightMap.frameBuffer.end();
  			}
  
  			boolean needed = lightRenderedLastFrame > 0;
  			// this way lot less binding
  			if (needed && blur)
  				lightMap.gaussianBlur();
  		}
  	}
docs: Prepare all lights for rendering.
  
  <p>You should need to use this method only if you want to render lights
  on a frame buffer object. Use {@link #render()} otherwise.
  
  <p><b>NOTE!</b> Don't call this inside of any begin/end statements.
  
  @see #renderOnly()
  @see #render()