Three.js Grassworks Launches Today 🚀

by•

Hey everyone!

Today I'm launching Three.js Grassworks on Product Hunt.

This project started with a problem that kept bothering me while working on large Three.js environments. Grass seems like such a small detail, but once you try to cover an entire world with it, things get complicated very quickly.

I wanted to see how far I could push it. How dense could the grass get? How large could the environment become? Could it still feel natural, move with the wind, react to the world around it, and remain performant?

What started as a rendering experiment slowly turned into something much bigger. I spent a lot of late nights experimenting, rebuilding parts of the system, throwing away approaches that didn't work, and gradually turning it into a tool I could actually use.

That became Three.js Grassworks, a complete grass system for Three.js and WebGPU.

The setup is intentionally simple:

const grassworks = await Grassworks.create({
  camera,
  scene,
  renderer,
  terrain,
  tileSize: 25,
  maxDistance: 200
});


Under the hood, it handles terrain-aware placement, dynamic wind, interaction, multiple grass styles, LOD, culling, Grass Maps, and terrain painting.

Live demo:
Product:

I've put a huge amount of time into this project, and seeing it finally become a product I can share with other developers is honestly a pretty special feeling.

4 views

Add a comment

Replies

Be the first to reply

Have a question or a thought to share? Add a comment above to start the conversation.