RADIUS - Physically Based Pathtracing

Crossroads, 1024x521, 4096 samples, 7 bounces. All rendered natively.

About

What is RADIUS?

Deriving from the Latin word of “Ray”, RADIUS is currently the fastest path tracer* on Roblox and is the first one to completely introduce PBRs (Physically Based Rendering) natively without rasterization. It extensively uses parallel luau and OSGL to leverage its speeds.

OSGL is the fastest EditableImages wrapper for Roblox. RADIUS serves to be the flagship of OSGL by demonstrating most of its features.

*claim pending; awaiting performance metrics and testing


Why make RADIUS?

RADIUS was initially inspired by filiprodak’s raytracing test place, and it is the spiritual successor to my first Raytracing Engine place which surpassed 8K+ visits. However, many bugs are known and the place is not easily maintainable. RADIUS aims to be better in every way, and to represent as a more complete product by making it more accessible, modular, and easily maintainable. The main catalyst for the RADIUS project was Sebastian Lague’s video on the subject.


Who is making RADIUS?

As of now, I am responsible for developing the project. Luau and engine optimizations goes to the main contributors of OSGL. There are also countless other supporters suggesting ideas including but not limited to:

@Sle_l, @msix29, @saaawdust, @filiprodak, @Ethanthegrand14, ...

How performant is RADIUS?

Currently, RADIUS outperforms all other path tracers of matching quality. Our goal is to make it easy to navigate the workspace by providing a real-time preview of the scene (similar to blender’s viewport). In a simple scene, we can achieve 30FPS+ on a 256² display*. In a more complex scene, we can render 2048 samples on a 1024² screen under 15 minutes*.

*Tested using an intel i5-12600K; performance varies across hardware. Complexity of scenes can vary render speeds. Parallel luau does not yet use all cores in-experience; measurements made in-studio.


Where is RADIUS?

RADIUS is still being developed and optimized. Once we feel like it is ready, we will open source the whole project!


Planned features:

:white_check_mark: - done
:yellow_square: - being implemented
:x: - incomplete but planned
:heavy_multiplication_x: - cancelled for not being in scope, but might be added later

  • PBR Materials :white_check_mark:
    • Albedo/Color
    • Normal maps
    • Roughness
    • Metalness
  • Traditional Materials :white_check_mark:
    • Diffused and Specular reflections
    • Transparency / Refraction (supports convex meshes)
    • Emission
  • Post-processing :white_check_mark:
    • Denoisers
    • Bloom :x:
    • (anti-aliasing is done without post-processing)
  • Spheremaps :white_check_mark:
    • sRGB implementation; HDR is not planned
  • Dynamic workspace :white_check_mark:
    • Changing colors in real-time
    • Changing materials in real-time
    • Changing environments in real-time (spheremaps)
  • UI :yellow_square:
    • Render preview
    • Object editor :heavy_multiplication_x:
    • Resizing render resolutions dynamically
    • Support for higher resolutions (>1024²) :heavy_multiplication_x:

Renders!




45 Likes

Why is this so photo-realistic?

It’s so cool

1 Like

Thanks!
It uses the same methods as a real raytracers! The same programs that render animated movies use this technique or something similar :+1:

4 Likes

Sure looks like Cycles. Keep up the great work! I am interested in updates.

2 Likes

This advanced parthtracer looks great! Nice job on it! How long did it take to create this in total? It’s cool!

1 Like

NO WAY this is supposed to be in #resources:community-resources BUT NO WAY OMG AWESOME GG GOOD WOW!

1 Like

Will this be free or paid? Does it work smoothly?

Appreciate the support!
I went ahead and changed it to #resources:community-resources :+1:

1 Like

A rough estimate would be around a month/3 weeks of cumulative work. I started the project a long time ago though.

There was a bunch of recycled material from things I have already done years prior, and many times where I had paused for a week and continued again. But most of my time went into optimizing.

1 Like

It will be completely open source! Meaning every line will be yours to use and edit.

At the moment it is still a private project because there are still many features pending to be implemented.

Wow amazing!! Ill use this for my anomaly game.

1 Like

That’s great to hear! But I will need to remind you that this is not intended for real-time applications (like games).

1 Like

Then why bother optimizing it? If it’s not meant to be used in projects then what is it for?

1 Like

Roblox is slow. Roblox is very slow. Walking around in 2 frames per second is unbearable. Not only are we optimizing it for the novelty of being the fastest, but we are perfectionists too.

As I said in the post, it is meant to provide a fast real-time preview of your scene, and it’s not meant to be played in games in real-time. I guess the only exception is when you’re aiming for a niche aesthetic not seen in any other game.

I will be posting how the pathtracer looks in real-time soon! I hope this clears most doubts.

2 Likes

Holy shit DAYUM! You cooked! None of my ray tracers are anything close to this man, dayum!

3 Likes

THIS IS WHAT I WANT TO SEE!! I was working on my own path tracer with a denoiser that can look alright at around 20 samples… THIS IS INSANE! I think this is a new thing. First it was Crazyblox making a realtime raytracer, now I am seeing stuff like THIS! Good job!

1 Like

I found this and wanna share with you. This is made for heavy calculations like this.

3 Likes

ActorGroups look promising! I’ll probably not use it because I already have made my own parallel luau module using the structure of fragment shaders as inspiration. I think ActorGroups is slightly more performant though, so I plan to update my module to closer represent theirs (but crediting @athar_adv of course)

And as of now, I don’t want to delay the release anymore. Most of the todo list is already done, and it’s mostly UI that is a roadblock for me. Getting good environments is also a hassle. I’m also waiting on the OSGL v1.6b release because the pathtracer uses the nightly build.

1 Like

One thing I wanna know; which build gets the most FPS and when does it start to go lower than 10? And would be great if you could give link to an example place.

I’m planning to release it as a downloadable place. The first release won’t be downloadable though; I will only open-source it after it is more or less complete. Right now I’m trying to get a demo up and running quickly for you guys to test it out. After the demo phase is over, you would be able to get a copy yourself.

FPS rarely goes down to 10 or less. For extremely intensive renders where all the bad stars align (high render resolution/fidelity/settings) it might drop to 10 and less. I plan to implement two render modes: real-time and non real-time. That should void any stuttery experience.