package shaders; import java.util.List; import org.atriaSoft.etk.math.Matrix4f; import org.atriaSoft.etk.math.Vector3f; import org.atriaSoft.gale.backend3d.OpenGL; import org.atriaSoft.etk.Color; import entities.Camera; import entities.Light; import toolbox.Maths; public class TerrainShader extends ShaderProgram { private static final int MAX_LIGHTS = 4; private static final String VERTEX_FILE = "src/shaders/terrain.vert"; private static final String FRAGMENT_FILE = "src/shaders/terrain.frag"; private int location_transformationMatrix; private int location_projectionMatrix; private int location_viewMatrix; private int location_lightPosition[]; private int location_lightColour[]; private int location_lightAttenuation[]; private int location_reflectivity; private int location_shineDamper; private int location_skyColor; private int location_backgroundTexture; private int location_rTexture; private int location_gTexture; private int location_bTexture; private int location_blendMap; public TerrainShader() { super(VERTEX_FILE, FRAGMENT_FILE); } @Override protected void bindAttributes() { super.bindAttribute(0, "position"); super.bindAttribute(1, "textureCoords"); super.bindAttribute(2, "normal"); } @Override protected void getAllUniformLocations() { location_transformationMatrix = super.getUniformLocation("transformationMatrix"); location_projectionMatrix = super.getUniformLocation("projectionMatrix"); location_viewMatrix = super.getUniformLocation("viewMatrix"); location_reflectivity = super.getUniformLocation("reflectivity"); location_shineDamper = super.getUniformLocation("shineDamper"); location_skyColor = super.getUniformLocation("skyColor"); location_backgroundTexture = super.getUniformLocation("backgroundTexture"); location_rTexture = super.getUniformLocation("rTexture"); location_gTexture = super.getUniformLocation("gTexture"); location_bTexture = super.getUniformLocation("bTexture"); location_blendMap = super.getUniformLocation("blendMap"); location_lightPosition = new int[MAX_LIGHTS]; location_lightColour = new int[MAX_LIGHTS]; location_lightAttenuation = new int[MAX_LIGHTS]; for (int iii=0; iii lights) { for (int iii=0; iii