A performant three.js library for implementing plane reflections on any mesh with correct orientation.
Billboard Reflection is a three.js library that implements performant reflections for simple planes (billboards) on any mesh in a 3D scene. It solves the problem of adding realistic reflections without significant performance overhead, using a ray/triangle intersection algorithm to ensure correct orientation. The library is particularly useful for scenarios where billboards need to reflect dynamically in interactive applications.
WebGL and three.js developers building interactive 3D applications, games, or visualizations that require efficient plane reflections. It's also suitable for graphics programmers looking for a lightweight reflection solution without heavy engine dependencies.
Developers choose Billboard Reflection for its performance-oriented approach, mesh-agnostic orientation support, and ease of integration with existing three.js materials. Unlike generic reflection techniques, it focuses specifically on plane reflections, offering a balance between visual quality and computational efficiency.
Performant plane reflections in three.js r139
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses a ray/triangle intersection algorithm for efficient reflection calculations, reducing overhead in real-time 3D scenes, as noted in the README's focus on performance.
Correctly reflects planes on any mesh regardless of orientation, ensuring accurate reflections in dynamic scenes, which is a core benefit highlighted in the description.
Supports configurable color, opacity, roughness, and falloff, allowing fine-tuned integration with existing three.js materials via options like rayFalloff and envMapIntensity.
Enables reflections for batched meshes using just a texture and transformation matrix, useful for optimization in complex scenes, as shown in the createFromTextureAndMatrix method.
Lacks proper blurring for rough surfaces; reflections only fade out or use low-res mipmaps, which can cause artifacts and doesn't work with video textures, as admitted in the Limitations section.
Reflections can be visible behind other meshes without occlusion checks, requiring manual workarounds like adding reflections to occluding objects or adjusting falloff values.
Requires modifying shaders via onBeforeCompile, which adds setup complexity and may conflict with other custom shader code or material overrides in three.js projects.