/** Construct a ModelBatch with the default implementation and the specified ubershader. See {@link DefaultShader} for more * information about using a custom ubershader. Requires OpenGL ES 2.0. * @param vertexShader The {@link FileHandle} of the vertex shader to use. * @param fragmentShader The {@link FileHandle} of the fragment shader to use. */ public ModelBatch (final FileHandle vertexShader, final FileHandle fragmentShader) { this(null, new DefaultShaderProvider(vertexShader, fragmentShader), null); }
@Override protected Shader createShader (Renderable renderable) { if (renderable.material.has(TestAttribute.ID)) return new TestShader(renderable); return super.createShader(renderable); } });
@Override public Shader getShader (Renderable renderable) { try { return super.getShader(renderable); } catch (Throwable e) { if (tempFolder != null && Gdx.app.getType() == ApplicationType.Desktop) Gdx.files.absolute(tempFolder).child(name + ".log.txt").writeString(e.getMessage(), false); if (!revert()) { Gdx.app.error("ShaderCollectionTest", e.getMessage()); throw new GdxRuntimeException("Error creating shader, cannot revert to default shader", e); } error = true; Gdx.app.error("ShaderTest", "Could not create shader, reverted to default shader.", e); return super.getShader(renderable); } }
/** Construct a ModelBatch with the default implementation and the specified ubershader. See {@link DefaultShader} for more * information about using a custom ubershader. Requires OpenGL ES 2.0. * @param vertexShader The vertex shader to use. * @param fragmentShader The fragment shader to use. */ public ModelBatch (final String vertexShader, final String fragmentShader) { this(null, new DefaultShaderProvider(vertexShader, fragmentShader), null); }
/** Construct a ModelBatch with the default implementation and the specified ubershader. See {@link DefaultShader} for more * information about using a custom ubershader. Requires OpenGL ES 2.0. * @param vertexShader The {@link FileHandle} of the vertex shader to use. * @param fragmentShader The {@link FileHandle} of the fragment shader to use. */ public ModelBatch (final FileHandle vertexShader, final FileHandle fragmentShader) { this(null, new DefaultShaderProvider(vertexShader, fragmentShader), null); }
/** Construct a ModelBatch with the default implementation and the specified ubershader. See {@link DefaultShader} for more * information about using a custom ubershader. Requires OpenGL ES 2.0. * @param vertexShader The vertex shader to use. * @param fragmentShader The fragment shader to use. */ public ModelBatch (final String vertexShader, final String fragmentShader) { this(null, new DefaultShaderProvider(vertexShader, fragmentShader), null); }
/** Construct a ModelBatch, using this constructor makes you responsible for calling context.begin() and context.end() yourself. * @param context The {@link RenderContext} to use. * @param shaderProvider The {@link ShaderProvider} to use, will be disposed when this ModelBatch is disposed. * @param sorter The {@link RenderableSorter} to use. */ public ModelBatch (final RenderContext context, final ShaderProvider shaderProvider, final RenderableSorter sorter) { this.sorter = (sorter == null) ? new DefaultRenderableSorter() : sorter; this.ownContext = (context == null); this.context = (context == null) ? new RenderContext(new DefaultTextureBinder(DefaultTextureBinder.WEIGHTED, 1)) : context; this.shaderProvider = (shaderProvider == null) ? new DefaultShaderProvider() : shaderProvider; }
/** Construct a ModelBatch, using this constructor makes you responsible for calling context.begin() and context.end() yourself. * @param context The {@link RenderContext} to use. * @param shaderProvider The {@link ShaderProvider} to use, will be disposed when this ModelBatch is disposed. * @param sorter The {@link RenderableSorter} to use. */ public ModelBatch (final RenderContext context, final ShaderProvider shaderProvider, final RenderableSorter sorter) { this.sorter = (sorter == null) ? new DefaultRenderableSorter() : sorter; this.ownContext = (context == null); this.context = (context == null) ? new RenderContext(new DefaultTextureBinder(DefaultTextureBinder.WEIGHTED, 1)) : context; this.shaderProvider = (shaderProvider == null) ? new DefaultShaderProvider() : shaderProvider; }
protected void randomizeLights () { int pointLights = MathUtils.random(5); int directionalLights = MathUtils.random(5); DefaultShader.Config config = new Config(); config.numDirectionalLights = directionalLights; config.numPointLights = pointLights; config.numSpotLights = 0; modelBatch.dispose(); modelBatch = new ModelBatch(new DefaultShaderProvider(config)); environment = new Environment(); environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 0.4f, 0.4f, 0.4f, 1.f)); for (int i = 0; i < pointLights; i++) { environment.add(new PointLight().set(randomColor(), randomPosition(), MathUtils.random(10f))); } for (int i = 0; i < directionalLights; i++) { environment.add(new DirectionalLight().set(randomColor(), randomPosition())); } }
@Override public void create () { modelBatch = new ModelBatch(new DefaultShaderProvider()); environment = new Environment(); environment.set(new ColorAttribute(ColorAttribute.AmbientLight, .4f, .4f, .4f, 1f)); environment.add(new DirectionalLight().set(0.8f, 0.8f, 0.8f, -1f, -0.8f, -0.2f)); cam = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); cam.position.set(10f, 10f, 10f); cam.lookAt(0, 0, 0); cam.near = 1f; cam.far = 30f; cam.update(); ModelBuilder modelBuilder = new ModelBuilder(); model = modelBuilder.createBox(5f, 5f, 5f, new Material(ColorAttribute.createDiffuse(Color.GREEN)), Usage.Position | Usage.Normal); instance = new ModelInstance(model); Gdx.input.setInputProcessor(new InputMultiplexer(this, inputController = new CameraInputController(cam))); }
@Override public void create () { Gdx.gl.glClearColor(0.2f, 0.3f, 1.0f, 0.f); atlas = new TextureAtlas(Gdx.files.internal("data/testpack")); regions = atlas.getRegions(); modelBatch = new ModelBatch(new DefaultShaderProvider()); environment = new Environment(); environment.set(new ColorAttribute(ColorAttribute.AmbientLight, .4f, .4f, .4f, 1f)); environment.add(new DirectionalLight().set(0.8f, 0.8f, 0.8f, -1f, -0.8f, -0.2f)); cam = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); cam.position.set(10f, 10f, 10f); cam.lookAt(0, 0, 0); cam.near = 0.1f; cam.far = 300f; cam.update(); ModelBuilder modelBuilder = new ModelBuilder(); final Material material = new Material(ColorAttribute.createDiffuse(1f, 1f, 1f, 1f), new TextureAttribute(TextureAttribute.Diffuse)); model = modelBuilder.createBox(5f, 5f, 5f, material, Usage.Position | Usage.Normal | Usage.TextureCoordinates); instance = new ModelInstance(model); attribute = instance.materials.get(0).get(TextureAttribute.class, TextureAttribute.Diffuse); Gdx.input.setInputProcessor(new InputMultiplexer(this, inputController = new CameraInputController(cam))); }
+ " gl_FragColor = vec4(textureCube(u_environmentCubemap, v_cubeMapUV).rgb, 1.0);\n" // + "}\n"; modelBatch = new ModelBatch(new DefaultShaderProvider(new Config(cubemapVS, cubemapFS)));
/** Construct a ModelBatch with the default implementation and the specified ubershader. See {@link DefaultShader} for more * information about using a custom ubershader. Requires OpenGL ES 2.0. * @param vertexShader The {@link FileHandle} of the vertex shader to use. * @param fragmentShader The {@link FileHandle} of the fragment shader to use. */ public ModelBatch (final FileHandle vertexShader, final FileHandle fragmentShader) { this(null, new DefaultShaderProvider(vertexShader, fragmentShader), null); }
/** Construct a ModelBatch with the default implementation and the specified ubershader. See {@link DefaultShader} for more * information about using a custom ubershader. Requires OpenGL ES 2.0. * @param vertexShader The vertex shader to use. * @param fragmentShader The fragment shader to use. */ public ModelBatch (final String vertexShader, final String fragmentShader) { this(null, new DefaultShaderProvider(vertexShader, fragmentShader), null); }
public ModelBatch() { this(new RenderContext(new DefaultTextureBinder(DefaultTextureBinder.ROUNDROBIN, 1)), new DefaultShaderProvider(), new DefaultRenderableSorter()); }
@Override public void loadAsync(AssetManager manager, String fileName, FileHandle file, T parameter) { shaderProvider = new DefaultShaderProvider(Gdx.files.internal(parameter.vertexShader), Gdx.files.internal(parameter.fragmentShader)); }
public static void createBatchs() { Config modelConfigShader = new Config(Gdx.files.classpath(VERTEX_SHADER).readString(), Gdx.files.classpath(FRAGMENT_SHADER).readString()); modelConfigShader.numBones = MAX_BONES; modelConfigShader.numDirectionalLights = 0; modelConfigShader.numPointLights = 0; modelConfigShader.numSpotLights = 0; modelBatch = new ModelBatch(new DefaultShaderProvider(modelConfigShader)); shadowBatch = new ModelBatch(new DepthShaderProvider()); floorBatch = new ModelBatch(new DefaultShaderProvider(Gdx.files.classpath(VERTEX_SHADER), Gdx.files.classpath(FLOOR_FRAGMENT_SHADER))); }
/** Construct a ModelBatch, using this constructor makes you responsible for calling context.begin() and context.end() yourself. * @param context The {@link RenderContext} to use. * @param shaderProvider The {@link ShaderProvider} to use, will be disposed when this ModelBatch is disposed. * @param sorter The {@link RenderableSorter} to use. */ public ModelBatch (final RenderContext context, final ShaderProvider shaderProvider, final RenderableSorter sorter) { this.sorter = (sorter == null) ? new DefaultRenderableSorter() : sorter; this.ownContext = (context == null); this.context = (context == null) ? new RenderContext(new DefaultTextureBinder(DefaultTextureBinder.WEIGHTED, 1)) : context; this.shaderProvider = (shaderProvider == null) ? new DefaultShaderProvider() : shaderProvider; }