/*******************************************************************************
* Copyright (c) 2013 Philip Collin.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/gpl.html
*
* Contributors:
* Philip Collin - initial API and implementation
******************************************************************************/
package com.lyeeedar.Roguelike3D.Graphics.Renderers;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.glutils.ShaderProgram;
import com.lyeeedar.Roguelike3D.Graphics.Lights.LightManager;
import com.lyeeedar.Roguelike3D.Graphics.Lights.LightManager.LightQuality;
import com.lyeeedar.Roguelike3D.Graphics.Materials.Material;
public class ShaderFactory {
static final String DEFINE = "#define ";
static public ShaderProgram createShader (String fileName, String... flags) {
final StringBuilder flagList = new StringBuilder(128);
for (int i = 0; i < flags.length; i++) {
flagList.append(DEFINE);
flagList.append(flags[i]);
flagList.append("\n");
}
fileName = fileName.toLowerCase();
final String vertexShader = flagList + Gdx.files.internal("data/shaders/model/" + fileName + ".vertex.glsl").readString();
final String fragmentShader = flagList + Gdx.files.internal("data/shaders/model/" + fileName + ".fragment.glsl").readString();
ShaderProgram.pedantic = false;
ShaderProgram shader = new ShaderProgram(vertexShader, fragmentShader);
if (!shader.isCompiled())
{
Gdx.app.error("Problem loading shader:", shader.getLog());
System.out.println(vertexShader);
System.out.println(fragmentShader);
}
return shader;
}
}