public void updateUniforms(Renderable object)
{
bindUniformBlock("Camera", Constants.CameraUniformBlockBinding);
bindUniformBlock("DirectionalLight", Constants.DirectionalLightUniformBlockBinding);
bindUniformBlock("LightViewProjections",Constants.LightMatricesUniformBlockBinding);
setUniformi("isReflection", BaseContext.getConfig().isRenderReflection() ? 1 : 0);
setUniformi("isRefraction", BaseContext.getConfig().isRenderRefraction() ? 1 : 0);
setUniformi("isCameraUnderWater", BaseContext.getConfig().isRenderUnderwater() ? 1 : 0);
((GLInstancedCluster) object.getParentNode()).getWorldMatricesBuffer().bindBufferBase(0);
bindUniformBlock("worldMatrices", 0);
((GLInstancedCluster) object.getParentNode()).getModelMatricesBuffer().bindBufferBase(1);
bindUniformBlock("modelMatrices", 1);
setUniform("clipplane", BaseContext.getConfig().getClipplane());
setUniform("scalingMatrix", new Matrix4f().Scaling(object.getWorldTransform().getScaling()));
@SuppressWarnings("unchecked")
Material<GLTexture> material = (Material<GLTexture>) object.getComponent(NodeComponentType.MATERIAL0);
glActiveTexture(GL_TEXTURE0);
material.getDiffusemap().bind();
setUniformi("material.diffusemap", 0);
List<Integer> indices = ((InstancedCluster) object.getParentNode()).getHighPolyIndices();
for (int i=0; i<indices.size(); i++)
{
setUniformi("matrixIndices[" + i +"]", indices.get(i));
}
}