Also,
@Override
public void init() throws Throwable {
super.init();
GL11.glClearColor(0.2f, 0.2f, 0.2f, 1);
GL11.glClearDepth(1d);
rootObject.init();
GL11.glEnable(GL11.GL_DEPTH_TEST);
ambient = new Program();
ambient.attachShader((ShaderAsset)getLoader().getAsset("program-world-ambient-fs"));
ambient.attachShader((ShaderAsset)getLoader().getAsset("program-world-ambient-vs"));
ambient.link();
}
@Override
public void render() throws Throwable {
super.render();
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT | GL11.GL_STENCIL_BUFFER_BIT);
ambient.use();
rootObject.render(ambient);
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE);
GL11.glDepthMask(false);
GL11.glDepthFunc(GL11.GL_EQUAL);
for(int i = 0; i < lights.size(); i++){
lights.get(i).use();
rootObject.render(lights.get(i).getProgram());
}
GL11.glDepthFunc(GL11.GL_LEQUAL);
GL11.glDepthMask(true);
GL11.glDisable(GL11.GL_BLEND);
}
Produces some wierd problems like this: