ArcReactor procedural ray generator

ArcReactor lets you generate rays and beams in any shape, form, color and behavior.

ArcReactor on Asset Store

Tutorials on YouTube (work in progress)

ArcReactor easily generates lasers, lighting arcs, plasma rays and magic effects procedurally.

FEATURES:

  • reflections algorithm allows easy setup for ray reflecting off scene colliders.
  • particles emitting from ray volumes
  • generation of point lights for simulating volumetric light sources.
  • performance manager allows dynamic changes of detail level for mobile platforms.
  • flares generation and control of their color and intensity.
  • various randomization options
  • every possible parameter is editable, giving you unprecedented control over looks and behavior of your effects.

Package contains arcs generator script, custom additive shader for realistic ray visualization, helper script for easy integration into existing projects, ready-to-use prefabs and 3 demo scenes.

Manual
P.S. Check my other assets:
Shader-independent See-Through System
Colorify partial recolor shaders
U Chroma Key image effect
Advanced Selective Coloring image effect




Hi this looks nice especially the dynamic lighting. Would this be suitable for use on a mobile device or ps vita do you think ? How are your plasma splines being rendered are they rendered using unity particles , meshes or another type of system ? Could you give any figures on how many draw calls your demo scene is for example or perhaps compile an apk demo for android that I could try to see how it runs before purchasing ?

Thanks for reply.
All splines are meshes and are rendered using LineRenderer component.
Draw calls amount depends heavily on usage of dynamic lights. Without them, plasma ray with spiral effect takes 4 drawcalls, with them - 30 (you can regulate amount of lights on your systems). Basically, each active arc of system adds 1 drawcall, and each point light along arc adds some more (depending on scene setup).
Right now project undergoes some serious mobile testing with the help of some volunteers and I will inform you of results.
Preliminary results: Demo scene contains 30k static triangles(platforms and such) and max of 170k triangles from ArcReactor effects, and max of about 115 drawcalls(mostly due to heavy usage of dynamic lights - around 50 max without them). On Galaxy S2 at most performance-intense moment it run at 47 fps with lights on.

Hi I purchased this and can confirm it does work on mobile. It gets about 47 fps on a high end nexus 5 but about 20 fps on a ps vita with all the lights on. One suggestion I would have would be to create an arc manager object that can control and change the quality of the lighting and arcs based on the current frame rate. At present it is a bit time consuming having to select every arc point and turning the lighting off individually. It would be better if there was an option or script that all arcs could be controlled from. For example have an option where when a new arc was generated it checked the current frame rate and only enabled lighting from it if the fps was above a certain number. That way the quality could dynamically adjust based on the complexity of the scene and performance of the phone it was running on without the user having to worry about the lighting when they were creating the scenes.

That’s a great idea concerning performance manager. I’ll release updated version with that and some tweaks at the beginning of the next week.

Is there a collision example in the asset?

If you mean rays collision with scene colliders - yes, all launchers on demo-scene are cofigured with that in mind.
For more info, you can consult manual on “ArcReactor_Launcher” component, specifically “Launch Method”, “Start behavior” and “End behavior” parameters.
If you meant something else or there isn’t enough info in the manual, ask away!

P.S. Update took longer than expected, but soon there will be version 1.01 containing performance manager, automatic flares and new spatial noise options.

Very cool. I like examples cause sometimes I miss details that are really obvious.
Thank you!

Hi how is that update coming along. Any idea when you will be able to release it with the performance manager update ?

My main job kept me pretty busy, so I only able to work on update during weekends. I think I’ll finish it around 20 July, so it should be available for download through Asset Store around 23 July.

Version 1.1 available on asset store!
Changes:

  • Performance manager!
  • Flares
  • New random spatial noise system (sorry, spatial noise options in old prefabs are not compatible)
  • More prefabs

Hi.In my scene i have a mirror(plane),how to make specular reflection of rays?

Hi!
Concerning reflection of rays, please look at the new reflections demo.
If that is what you’re looking for, it will be available in 1.2 update in about 1-2 weeks.
Tracing demo is also available.

Sources for both demos will be included in the update.

Version 1.2 available on asset store! (Unity review team pleasantly surprised me with their speed)
Changes include:

  • Complex ray reflections added
  • 2 new example scenes: reflections and shape tracing
  • Improved precision of shape calculations
  • Multiple small features added and minor bugs fixed

Hi,

do you by any chance know if your Colorify shader is compatible with the PolyWorld conversion? It is just what I could use to no longer do it in photoshop, but it is only useful to me if the shader can run through PolyWorld. :slight_smile:

Hi!

I don’t use PolyWorld myself, so I can’t be sure. If PolyWorld uses standard Unity shaders, then you can easily swap them for Colorify shaders. If, on the other hand, there’s some custom shading going on (and my guess there is), Colorify obviously wouldn’t work from the box. If that’s the case, you can send me an example of PolyWorld shader and I would tell whether it would be possible to befriend it with Colorify.

P.S. There’s a thread about Colorify, so any further discussion of Colorify should probably be there.

awesome

Hi, How would you detect collision on object after the ray is cast? Like for instance if the laser beam hits a particular object, the object should detect it which would allow me make it do anything I want.

Hi!

There’s a message system built-in into the Launcher component. You need to toggle “Send Message To Hit Objects” or “Send Message To Reflectors” parameters, and the component will automatically send messages to objects that’ve been hit. All you have to do to is to place an “ArcReactorHit()” or “ArcReactorReflection()” functions in any scripts on your objects, and they will be performed when they are hit by ArcReactor-launched ray.

The reflections demo-scene contains example of using “Send Message To Reflectors” parameter. If you look carefully, hit mirrors change their color continually - that’s done by changing variable in ArcReactorReflection() function.

P.S. It turned out I forgot to mention this in the manual, my apologies. I’ll update online manual as soon as I can.
P.P.S Updated manual and uploaded updated 1.2b version to Asset Store, should be available in 3-7 days.

I thought the shader on the mirrors are reflecting the light emitted from the lamps on the ray. Isn’t that whats happening? or the mirror is literally changing the material? I couldn’t figure it out.