public void renderScene(Window window, Camera camera, Scene scene) {
sceneShaderProgram.bind();
Matrix4f projectionMatrix = transformation.getProjectionMatrix(FOV, window.getWidth(), window.getHeight(), Z_NEAR, Z_FAR);
sceneShaderProgram.setUniform("projectionMatrix", projectionMatrix);
Matrix4f viewMatrix = transformation.getViewMatrix(camera);
SceneLight sceneLight = scene.getSceneLight();
renderLights(viewMatrix, sceneLight);
sceneShaderProgram.setUniform("texture_sampler", 0);
GameItem[] gameItems = scene.getGameItems();
for (GameItem gameItem : gameItems) {
Mesh mesh = gameItem.getMesh();
Matrix4f modelViewMatrix = transformation.getModelViewMatrix(gameItem, viewMatrix);
sceneShaderProgram.setUniform("modelViewMatrix", modelViewMatrix);
sceneShaderProgram.setUniform("material", mesh.getMaterial());
mesh.render();
}
sceneShaderProgram.unbind();
}