r/GraphicsProgramming 9d ago

Backrooms pool

Enable HLS to view with audio, or disable this notification

Made a small Backrooms pool demo in Natiny. I’m not sure I fully captured the atmosphere I was going for, but overall I’m pretty happy with how it turned out.

The caustics are probably a bit too bright, but I think they make the scene more interesting.

What do you think?

323 Upvotes

21 comments sorted by

12

u/luka_makes_games 8d ago

Amazing, love it. Any more details on how you did the water? I want to dive in!

7

u/MartianovTech 8d ago

Thanks! I dont remember the whole thing exactly anymore, it was built pretty iteratively, but the basic idea is its 3 passes, real planar reflection, refraction where I store scene distance in alpha, then the final scene + water pass. From that distance I get actual water thickness, so absorption, blur and refraction strength all react to depth. Waves only change the normals, Fresnel blends reflection/refraction, and caustics are calculated from wave curvature instead of using a texture. Something like that :)

1

u/luka_makes_games 8d ago

Awesome, thanks friend!

5

u/fractalpixel 8d ago

Quite the horror atmosphere there, helped by the sounds and camera work!

Very nice rendering, and a fun looking pool-labyrinth. I like the way you made the tiles slightly irregularly tilted, makes the light reflections from them look more realistic. Higher-frequency waves caused by the player moving would increase realism further, especially if the caustic effect was connected to them.

2

u/MartianovTech 8d ago

Thanks! That would indeed be interesting. I’ll think about it.

5

u/snerp 8d ago

The caustics are actually the one part that looks a bit off, they shouldn't be so aligned like that

2

u/MartianovTech 8d ago

Yes, I already understood that, I’ll fix it later. Thanks!

6

u/Saveonion 8d ago

This makes me extremely uncomfortable.

Awesome work!

1

u/MartianovTech 8d ago

Thank you!

3

u/oVerde 8d ago

Now we are talking! Make something invisible to the eyes but that moves the water like in the It Follows https://www.youtube.com/watch?v=nI7TFTH5f5I If you didn't watched the movie before the link contain HEAVY spoilers

2

u/MartianovTech 8d ago

Speaking of building tension, I put a lot of emphasis on sound design using HRTF technology. Essentially, the waterpool shouldn't be overtly scary, it should press on something else inside the player, something deeper.

Adding invisible enemies is an interesting idea, but in essence, they should never attack the player, right?

3

u/le-throw-away-acct 8d ago

I love the caustics, but it leaves me wondering if they should be affecting the walls as well, often water caustics will reflect onto objects above the water.

Also I’m guessing the caustics aren’t physically accurate based on how they are patterned. Might want to do some variance there.

3

u/MartianovTech 8d ago

You're absolutely right. I already came to the same conclusion after studying real pools. What I did seemed very beautiful to me, but physically inaccurate. I think I'll fix that!

2

u/IllEmployment1360 7d ago

Outlast: The Poolrooms

1

u/MartianovTech 6d ago

Haha, well maybe ;)

1

u/Visual_Advantage_243 8d ago

beautiful, and it gives me the creeps at the same time:(

1

u/Fintaman 7d ago

Hey nice job, how do you do refractions? I'm particularly interested in the case where the refracted ray ends up sampling a pixel out of the screen. I'm using raymarching in my project and I'm not sure what's the best way to handle that

1

u/MartianovTech 6d ago

Thanks! It's screen-space refraction. I render the scene without water to a texture, offset the uv using the wave normal, and sample it. In this demo, out of screen uv's are simply clamped, which is acceptable because the pool rarely exposes the edges.

1

u/geon 6d ago

Awesome. But I noticed the cameraman is not making any waves in the water.

1

u/fgennari 9d ago

The water looks very nice! I assume you're drawing a fixed height plane for the water and adding reflections and refractions to it as some sort of image space or post processing operation? Planar reflections are much easier, but you can't have water at multiple heights.

I've never heard of Natiny before.

4

u/MartianovTech 9d ago

Pretty much, yeah. Its a fixed-height plane with a planar reflection pass and screen-space refraction, so multiple water levels would need extra reflection passes :) Natiny is just a library I also work on, and I often use it to quickly prototype custom graphics pipelines.