Example usage for com.badlogic.gdx.graphics.g3d.shaders DefaultShader DefaultShader

List of usage examples for com.badlogic.gdx.graphics.g3d.shaders DefaultShader DefaultShader

Introduction

In this page you can find the example usage for com.badlogic.gdx.graphics.g3d.shaders DefaultShader DefaultShader.

Prototype

public DefaultShader(final Renderable renderable, final Config config) 

Source Link

Usage

From source file:org.ah.gcode.preview.player.Renderer.java

License:Open Source License

public Renderer() {
    bottomShaderProvider = new DefaultShaderProvider() {

        DefaultShader currentLayerShader = null;

        @Override/*w ww  .  j  a v a  2  s  .co m*/
        protected Shader createShader(final Renderable renderable) {
            if (currentLayerHasMesh(renderable.mesh)) { // Current layer shader
                if (currentLayerShader == null) {
                    DefaultShader.Config config = new DefaultShader.Config(
                            Gdx.files.internal("shaders/lighting.current.vertex.glsl").readString(),
                            Gdx.files.internal("shaders/lighting.fragment.glsl").readString());
                    currentLayerShader = new DefaultShader(renderable, config);

                    currentLayerShader.register(new BaseShader.Uniform("u_number"),
                            new BaseShader.GlobalSetter() {
                                @Override
                                public void set(BaseShader shader, int inputID, Renderable renderable,
                                        Attributes combinedAttributes) {
                                    shader.set(inputID, getCurrentInstructionNo());
                                }
                            });
                }
                return currentLayerShader;
            } else { // Solid - below current layer shader
                DefaultShader.Config config = new DefaultShader.Config(
                        Gdx.files.internal("shaders/lighting.solid.vertex.glsl").readString(),
                        Gdx.files.internal("shaders/lighting.fragment.glsl").readString());
                DefaultShader defaultShader = new DefaultShader(renderable, config) {
                    @Override
                    public boolean canRender(final Renderable renderable) {
                        if (currentLayerHasMesh(renderable.mesh)) {
                            return false;
                        }
                        return true;
                    }
                };
                return defaultShader;
            }
        }
    };
    solidModelBatch = new ModelBatch(null, bottomShaderProvider, null);

    topShaderProvider = new DefaultShaderProvider(Gdx.files.internal("shaders/lighting.top.vertex.glsl"),
            Gdx.files.internal("shaders/lighting.fragment.glsl"));
    topModelBatch = new ModelBatch(null, topShaderProvider, null);
}