Neon - illuminating materials

Is there currently any way to create true emissive materials that illuminate the scene like neon.

Unreal 5 has this

It doesn’t seem to be overly demanding on the GPU, I’ve no idea how this is implemented.

Is this on the roadmap? If not what would I need to do to achieve this?

Note - just using bloom or baking static light maps won’t work for what I need.

Are you aware of official rect area light? Example

Yes, I played around with RectAreaLight but my scene grinds to a halt when I add more than about 6 such lights. Additionally you can’t apply it to arbitrary geometries - tubes, sphere etc

In Unreal you can have geometry with thousands of polygons that is “emissive” without any noticeable performance hit. Is anyone aware of the technique they’re using to achieve this?

Plase consider framing your question with details / images about expected result, in that way it is more clear what you are aiming to.

The options you have are always delimited by performance. In the case of a static scene, baking lightmaps is the way to go. You can add a (selective) pass like this to enhance the effect, tweaking the parameters can give you actual good results. @prisioner849 shared a cery clever demo some time ago starting from this.

If your scene is dynamic you could try, to a certain extent, using threejs light emitting alternatives, like rectAreaLights and/or actual lights. Keep in mind that this is limited, again, for performance reasons.

Finally, don’t take for granted implemented features working with non-web tech inside threejs and even WebGL in general. In that regard, “thousands of polygons” just traslate as “non optimized data for a web running spec”.

Unless of course you are explicitly trying to push-the-limits of web capabilities, if that is the case you could take a look at lighProbeVolume proposal for incoming light of dynamic objects (see here), and Virtual Geometry for a ‘continuous’ view-dependent representation of hi-poly geometry.

Hi Antonio,

I included a link to a video of the expected result above.

I am indeed trying to push the limits of three.js/WebGL. The links in the final sentence gave me some avenues to pursue, from which I ended up at:

I see it’s a huge task.

the video doesn’t look that much different from generic bloom, except for the illumination of nearby objects which is global illumination or SSGI.

there is a new effect for the postprocessing library that can do this: GitHub - 0beqz/realism-effects: SSGI, Motion Blur, TRAA - Effects to enhance your three.js scene's realism

latest state looks pretty good

but not finished yet. the author said maybe this week.

I wasn’t aware of that post-processing library, thanks.

Are you aware of any up to date demos of a deferred rendering setup for three.js?
I’ve read about that potentially being able to support hundreds of lights