Inspiration

SPRAY started as a small idea triggered by a single LinkedIn post — someone showed a cool stylized VR spray effect, and it sparked a thought: “I can build that. And it would be perfect for my Streets of Miami/New York projects.”

That spark turned into a sprint.

For two straight weeks — from morning until early morning — the project evolved from an effect into something bigger: a creative tool, a chill hangout space, and a canvas for self-expression. The nostalgia of tagging walls in games like The Warriors, the culture of graffiti, and the raw energy of urban art all played into shaping SPRAY’s identity.

The mission became clear: Give people freedom to create — fast, fluid, and without barriers.

What it does

SPRAY is a VR graffiti sandbox experience where players can paint freely in immersive urban environments using intuitive spray mechanics. Multiple nozzle types and spray patterns A large color palette and swappable cans Multiple canvas types (walls, billboards, whiteboards, etc.) Adjustable spray settings (pressure, flow, drips, softness) Players can experiment casually, paint serious art pieces, collaborate online, or simply unwind and express ideas in a stylized urban setting. A free version exists to ensure creativity is accessible to everyone.

How we built it

SPRAY was built in Unity using: Custom shader-based spray rendering Dynamic brush and drip simulation Meta XR SDKs for VR interaction Netcode foundations for future shared painting modes Texture streaming and compression balancing for real-time painting performance Fine control over responsiveness, layering, and blending makes the spray feel tangible and satisfying — not just a decal.

Challenges we ran into

Achieving realistic spray scatter, glow, and transparency without destroying performance Choosing texture compression formats that kept art sharp but memory-friendly Aligning real-time rendering with VR feel — making spray look soft but act precisely Balancing hand tracking simplicity with precision, stability, and workflow

Networking prototypes also required iteration to sync painter positions, strokes, and texture updates efficiently.

Accomplishments we’re proud of Realistic, tunable spray mechanics built from scratch A clean UI panel where every setting updates live in real time Fast iteration and completion of a working prototype in roughly two intense weeks Early testers immediately compared it to King Spray — which validated the quality

What we learned Two big lessons: Backup constantly. When building systems that are visual, layered, and experimental, one tiny break can cost hours. Iteration beats perfection. Polish came from tuning, testing, refining — not guessing.

What’s next for SPRAY SPRAY is expanding into: Online collaborative painting Turf-war competitive modes Passthrough MR so players can paint onto surfaces in their real environment Themed urban environments tied into Streets of Miami and Streets of New York Achievements, unlocks, and community challenges Long term, SPRAY aspires to become the creative hub for VR graffiti culture — part tool, part game, part social canvas.

Built With

Share this project:

Updates

posted an update

Recorded hand poses has been added to the game

the player will now automatically shape their hand to the proper pose of holding the spray can 100% of the time. No more grabbing the cans in awkward position and no more regrabbing / repositioning...

Log in or sign up for Devpost to join the conversation.

posted an update

SPRAY – New Update Released

A bunch of new content and improvements just dropped:

New Maps Miami Strip: A bright, open street inspired by the classic Vice-style look. Rooftop Scene: Tag walls from a higher angle with a full skyline backdrop. Toronto Alley Billboard: A huge, life-size billboard added above the original alley for big pieces.

YouTube Search in VR You can now search and watch YouTube tutorials directly inside SPRAY while practicing. Works like a live window you can place anywhere.

Climbable Ladder A functional ladder lets you paint from different heights across all the new scenes.

Updated Loading Screen + General Polish The intro, loading sequence, and UI have all been cleaned up for a smoother start and better presentation.

Log in or sign up for Devpost to join the conversation.

posted an update

Updated SaveLoadManager.cs:

SaveProjectorSpraySettings() now saves all 22 settings LoadProjectorSpraySettings() now restores all 22 settings

all 6 loading slots will save and load the data from edited spray settings.

Log in or sign up for Devpost to join the conversation.

posted an update

WEB VIEW & TUTORIALS

Players now have access to full web - the home landing page is a personalized graffiti playlist from youtube that anyone and everyone can enjoy. user can navigate in screen and follow along to spray painting tutorials or play music from the web!

Log in or sign up for Devpost to join the conversation.