It’s been a while ago since I posted something of my work! Well I’ve been busy and had lots of things to do. One of my latest and biggest achievements in 2020 is my custom renderer Raymarcher. Actually I did not invented anything, but I integrated the principles and whole rendering technique into realtime engine – Unity. It wasn’t really that hard to learn such stuff and computer mathematics didn’t really bother me. The tricky part was to create an intuitive convertor that makes all the hard work for you. I always try to make my creations as much modular as it’s possible. So I decided to integrate the raymarching rendering technique into Unity engine just by one click without any programming skills!
But what is the rendering? What is raymarching?
Rendering is a way of visualizing 3D scene into your screen. There are many rendering techniques, including rasterizer (the most common one). Raymarching is a sub-category of raycasting rendering technique. Raycasting is based on casting rays into virtual 3D space by the specific speed and distance. If ray hits any virtual object, the pixel will be visualized by the specific RGB parameters (or shaders). Raymarching works on the very similar principle, but instead of casting rays to specific location, raymarching casts rays by specific step size and sphere radius which checks if any virtual object is located inside the radius. And that’s why it’s called ray-marching, obviously – it’s a march of rays. Raymarching could be also called as spherecasting, cause every step makes a ‘sphere’ radius which determines nearest virtual object. [Image source]
I did a lot of research and I learned a plenty of things, a bunch of things about this stuff! I still enjoy it, it’s a great technology and I think it should be developed much further as it has a great potential in realtime rendering. If you are interested in this rendering technique and you would like to make some deeper research, here are some useful resources. The most useful one is the Iq’s raymarching techniques. He’s got a page full of incredible stuff and there are bunch of resources you can learn from! Pouet is a good resource with great community which can help you in many cases. Also if you would like to know more about raycasting in general, I suggest you to visit flipcode with clear explanation.
What makes the raymarching special?
Well the raymarching is not that popular rendering technique and is not that really hard to achieve. The objects rendered by the raymarching technique behave very organically and you can create ‘trippy-looking’ results. It’s cheaper than raytracing and it has a big potential in realtime rendering.
I’ve been working on Raymarcher for 2 years (with all the research work, writing custom convertor etc) and I do have a lot of plans to the future including multi-scene editing, multiple lights support, VR support, mobile support and more. This is the very first version that allows you to create incredible fractal worlds, unique organic objects and many more. There are also a few restrictions and limitations, so if you are considering to buy the plugin, please read the official documentation carefully!
My main goal was to push my boundaries further and create something that is easy to set up, that makes 3D applications unique and that developers don’t really see much often. I just love to learn new stuff and share it to the world!