RADIUS - Physically Based Pathtracing [DEMO RELEASED]

I meant a playable published game like your previous ray tracing test which is awesome.

A playable demo won’t come until later. There are still many things to implement ahead of me, and I work on this project in my free time (and final exams are coming up, so you can see how this will take a while). I’m the only person who’s actively maintaining this project too, so it’s really moving according to my pace. Expect a playable demo anywhere from tomorrow or 6 months later.

Hello, Id also implement some form of actor work scheduling as to not have too many worker tasks colliding with eachother
 this can get very messy for big long computations so it is extremely nice to have

3 Likes

I have an idea for a realtime version. I made a denoiser that is not optimized, but can give a decent image at around 20 samples. Maybe the realtime version could not be bloated with pbr materials, so you don’t have to worry about blurring textures. Even better, multiply the textures back into the image like a post process. You could also add more samples that don’t go through all of the calculations around actual samples. These are just ideas I had based on my project that may or may not work with how u built the engine, but it could make the realtime version look a little better.

1 Like

I appreciate your suggestions!

However, I do not plan for a real-time version of this. This will be mostly used for getting nice-looking, eye-candy, and blenderesque renders. What method did you choose for denoising? If it’s good enough, I might use it for renders! There already exists 2 denoisers in the current build:

  • mean: fast and simple, works by averaging neighboring pixel’s color
  • nlm: anisotropic diffusion. preserves edges, reduces noise, and still being relatively simply as a postprocessing step.

I will also make a different, primitive ray tracing function. It will be much faster for not doing extra calculations and this can be used for real-time applications if you want, but I still recommend crazytracer for that. crazytracer is actually focused on being fast and real-time. That’s what differenciates raytracers and pathtracers.

Your idea of “multiply the textures back into the image like a post process” does not really work because you’re giving up on the fundamentals of PBR materials entirely. These “fundamentals” are as follows: roughness, metalness, and normals. And besides, this is only really used in very old rasterized games.

Regardless, I appreciate your input, and you can build upon the pathtracer once I open source it!

1 Like

This is neat! I love it, keep it up!

1 Like

Yea that is a drawback to multiplying textures back.

About my denoiser
My denoiser isn’t complicated, but if you’re curious all I did is take samples around a pixel and set the sampled pixel’s color to the pixel’s color. Then run that over all of the pixels. I did it that way, because the blur was stronger. It’s good to not sample right next to the pixel, and instead give it a little bit of a gap. It’s not optimized, but that got myself good images.

I almost forgot to mention the edge detection. I use depth, normal, object’s color, object’s material for checking edges.

I guess the one issue with blur denoisers is the image can look a little lumpy and edges close together can’t blur enough to get good coverage. Only on 20 samples though. Theoretically more samples should remove that problem.

2 Likes

I just thought of an even better idea. You can scrap the all of the buffers except the normal buffer by just checking if the object’s unique id is the same, then using the normal to retain object edges. I have not tested it, but it could work.

I tested it. it didn’t work. WHY DID ROBLOX BLOCK SCRIPTS FROM GETTING THAT DATA!!

holy. this is peak editableimage

1 Like

I said I’m going to make a video showcasing the engine, but kind of forgot :sweat_smile:
This is the latest build, which has most of the promised features (except bloom). But don’t expect an edited video, this is just a very crude OBS recording. I have many things to do today, so I won’t be working on bloom for now.

It renders the current scene in real-time (albeit, at a low resolution) with tonemapping. It uses an approximation/fast version of ACES, then post-processes it using the slow, more beautiful ACES when done rendering. It also uses a better configuration of the NLM (anisotropic diffusion) denoiser than in previous releases. Hope that explains most of the new things shown here.

3 Likes

Seriously, ive played this game before march. And wow its so fasttt! Also, can it render particles and particoe based volumetric lighting and billboard guis?

1 Like

Is there an ETA until a public release?

Not really, but if I have to guess, the demo will be released sometime next week. The full public release would not be until later though; I plan many things for this project.

Making the bloom shader is taking the most of my time right now. I have already finished most of my todo list for the demo release, but because I chose the hardest way to implement bloom, it might take me an extra week to implement. For some reason I chose unity’s bloom shader implementation, which is only really used in AAA games.

It does not support particles
 yet


1 Like

this will be roblox in 2013 ‎ ‎ ‎ ‎

you could leave bloom for the full release if its been that difficult to implement

I just finished most of it yesterday actually! I stayed up till 3AM that day and I could’ve sworn that I felt my brain melting. It’s mostly lack of documentation on how it’s made.

This is not what you’ll be seeing in the demo release. I’m still fine-tuning it and optimizing it.

UPDATE: I’m going to ditch this method for now, but I will be using a “dummed” down version of this bloom. Once I feel like I completely understand how modern bloom works, I will rewrite the bloom shader. This is how it looks now (and i’m still making it better):

before/after

Thanks for sharing this! The ability to roam about in realtime to orient your camera for the right angle is nice for helping you get the right angle beforehand, and it does give me a good impression for the performance of this.

The only other pathtracer I’ve been aware of before this thread was made is by Vorobeyy (They don’t seem to have a presence on DevForum?) so this adds to the library of pathtracers on Roblox. Neat.

Looking forward to see more progress on this :+1:

2 Likes

Hey everyone!

Big announcement now! I’m finally releasing the demo for radius. The demo will not be downloadable and it’s only going to last 7 days. Try it out! - RADIUS [Pathtracing Engine] - Roblox

1 Like

ok well its a little more pixelated than advertized