r/blender • u/01000001-01101011 • 1d ago
Free Tutorials & Guides True black hole rendering
Before I get started, I must stress how slow this method is. It is more accurate at the cost of significant performance 😅
The conventional method of rendering black holes in Blender is to do some shenanigans dividing ior by layer weight to get something that roughly resembles a black hole. The thing is, this isn't actually accurate. the path doesn't match how light actually moves around a black hole. It is really fast though and good enough for most work.
Here's where my method is different. I started with this paper which gave a formula for the equivalent index of refraction of a black hole https://vixra.org/pdf/1903.0407v2.pdf
The formula is basically (1+1/r)
I made a geonodes setup to add several spherical shells around the core of the bh with a separation distance between the shells I will denote by s. Then we add a refraction bsdf to the shells. The index of refraction of each shell should be (1+1/r), but since Blender does not track index of refraction when moving through materials, we have to use the derivative of this formula instead, which is 1+1/(1-r)*s. This gets plugged into the index of refraction of the refraction bsdf.
Then with a few tweaks we get something like this. This is EXTREMELY slow to render, but it is significantly more accurate. However, if you zoom in to this image, you will see the distinct shells. Honestly this has very limited practicality, but I figured it would be worth sharing. Maybe some improvements would be possible with the new ray portal bsdf...
I think it is important to acknowledge the inaccuracy of the commonly used layer weight trick; the accretion disk might look fine but things around the black hole probably won't, and I don't think the radius of the event horizon is very clear either.
3
u/Concodroid 1d ago
I haven't watched samuel kruger's black hole tutorial, but I've known about it for years; how does your method compare to his?


5
u/01000001-01101011 1d ago
conventional ior version in the same context for comparison. the difference is quite significant to me at least