com.io7m.r2
The com.io7m.r2 package implements an aggressively
minimalist deferred rendering system.
Features
- Deferred rendering system for rendering hundreds of dynamic light sources at a time.
- Batched instancing for rendering large numbers of instances with one draw call.
- Billboarded instances for rendering particle systems and foliage.
- Dynamic spherical, directional, and projective lighting.
- Optional specular lighting.
- Light clip volumes for preventing light volumes from leaking.
- Variance shadow mapping for soft-edged per-pixel shadows.
- Artist-controllable alpha stippling for crossfading opaque instances.
- Emission and glow filters for simulating emissive surfaces and bloom.
- Normal mapping for per-pixel control over surface lighting.
- Command-line tools and API to generate consistent tangent vectors for meshes for normal mapping.
- Environment mapping for simple pseudo reflections.
- High quality haloless screen-space ambient occlusion (SSAO).
- Generic refraction for simulating refractive surfaces.
- Simple forward renderer for translucent instances.
- Logarithmic depth by default, supporting planetary-scale scenes.
- Box blur and bilateral depth-aware blur filters.
- Fog filters for simple postprocessed atmospheric fog.
- FXAA antialiasing.
- Reusable and heavily documented GLSL shader library. Integrated with sombrero for consuming and publishing shader modules.
- Safely extensible via strongly-typed shader interfaces.
- Scene independent: The package provides batching and does not require the user to use a complicated and error-prone scene graph or any kind of baked-in visibility determination.
- Heavily documented including Javadoc and full design and implementation manual.
- Strongly typed interfaces with run-time checking to catch programming mistakes early.
- Written in pure Java 8 for platform independence.
- Works on JOGL or LWJGL via jcanephora.
- Works on any OpenGL 3.3 implementation.
- High converage automated test suite.
- ISC license.