Modern3D is low-level 3D graphics library (similar to OpenGL or Direct3D) written in Java. It’s entirely shader centric, this means you set the shader, its inputs, how it interacts with frame buffer, setup geometry and draw. No fixed functionality is present except things that are not covered by shaders (like blending). There are no matrices stacks, it’s entirely on you what inputs you feed into your shaders.
Features
- easy to use low-level object oriented API, can be compared to OpenGL/Direct3D level
- shaders are written in Cg language and precompiled (no Cg runtime required for your application)
- currently supports Shader Model 2.0 and 2.0a/2.0b
- uses OpenGL 1.4 with extensions for actual HW access (through LWJGL)
- there is only one way to access HW features (like using VBOs exclusively)
- geometry utilities for drawing primitives immediatelly (own implementation that uses VBOs) or for storing for later usage
- provides Java2D API implementation that allows advanced 2D drawing (including text and non-trivial vector shapes)
- utility classes for matrix stacks handling
- support for conversion to and from half data type (16bit float)
- batched geometry builder class for easy to use generation of optimized static geometry
- open source, distributed under BSD license
Notes
- currently only SM 2.0 and 2.0a/2.0b are supported, more profiles will be available in future
- fixed function pipeline support (implemented as special “shader”) is also considered for some future version
- GLSL is currently unsupported, but will be added in some future version (using both runtime compilation and pre-compilation using Cg compiler)
- it’s currently using only OpenGL through LWJGL, but due to modular implementations it could use JOGL or even Direct3D when some binding for it will emerge
- drawing of arbitrary shapes has antialiasing disabled currently, there is proof of concept implementation that can be enabled in sources
- not all blend operators using Java2D API are correctly working
- some less used features are currently missing (such as 3D textures)
You can download it on Modern3D homepage.