Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Game Engine Development
  3. three-billboard-reflection

three-billboard-reflection

MITJavaScript

A performant three.js library for implementing plane reflections on any mesh with correct orientation.

GitHubGitHub
118 stars11 forks0 contributors

What is three-billboard-reflection?

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.

Target Audience

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.

Value Proposition

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.

Overview

Performant plane reflections in three.js r139

Use Cases

Best For

  • Adding reflections to billboards in three.js scenes
  • Implementing performant plane reflections in WebGL games
  • Enhancing visual realism in interactive 3D applications
  • Creating reflections for batched mesh geometries
  • Optimizing reflection rendering for real-time graphics
  • Integrating roughness-based blurring for material reflections

Not Ideal For

  • Applications requiring realistic reflections on curved or complex surfaces, as it's optimized for simple planes only
  • Scenes where accurate occlusion handling is critical, since reflections can appear behind other meshes without checks
  • Projects using video textures for billboards, as roughness-based blurring fails due to lack of mipmaps
  • Teams wanting a plug-and-play reflection solution without shader modifications or custom integration work

Pros & Cons

Pros

Performant Ray Intersection

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.

Mesh-Agnostic Orientation

Correctly reflects planes on any mesh regardless of orientation, ensuring accurate reflections in dynamic scenes, which is a core benefit highlighted in the description.

Customizable Visual Parameters

Supports configurable color, opacity, roughness, and falloff, allowing fine-tuned integration with existing three.js materials via options like rayFalloff and envMapIntensity.

Texture and Matrix Support

Enables reflections for batched meshes using just a texture and transformation matrix, useful for optimization in complex scenes, as shown in the createFromTextureAndMatrix method.

Cons

Incomplete Roughness Support

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.

No Occlusion Handling

Reflections can be visible behind other meshes without occlusion checks, requiring manual workarounds like adding reflections to occluding objects or adjusting falloff values.

Shader Integration Complexity

Requires modifying shaders via onBeforeCompile, which adds setup complexity and may conflict with other custom shader code or material overrides in three.js projects.

Frequently Asked Questions

Quick Stats

Stars118
Forks11
Contributors0
Open Issues2
Last commit4 years ago
CreatedSince 2021

Tags

#graphics#three-js#3d-graphics#game-development#shader#real-time-rendering#webgl

Built With

t
three.js

Included in

Game Engine Development1.3k
Auto-fetched 20 hours ago

Related Projects

VueVue

This is the repo for Vue 2. For Vue 3, go to https://github.com/vuejs/core

Stars210,113
Forks33,695
Last commit1 year ago
BootstrapBootstrap

The most popular HTML, CSS, and JavaScript framework for developing responsive, mobile first projects on the web.

Stars174,510
Forks78,725
Last commit1 day ago
electronelectron

:electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS

Stars122,151
Forks17,331
Last commit22 hours ago
d3d3

Bring data to life with SVG, Canvas and HTML. :bar_chart::chart_with_upwards_trend::tada:

Stars113,265
Forks22,693
Last commit1 month ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub