Update on Mirage

So, as it has been a while since I posted anything on this blog, I figured now might be a good time to talk about some of the things I've been working on for the past month (yeah, its been that long!)

This is definitely going to be one of my longer posts, so hold tight for the long ride!

Massive update number one: indirect + direct specular lighting! 

This is definitely the biggest change, and probably the most exciting. Mirage now has full support for specular lighting!

Just to demonstrate, here is what a massive change the specular lighting does to the fantastic "old brazilian kitchen" scene from UE4Arch. (I'll leave a link to it at the bottom of this blog)

Without specular lighting:

With specular lighting:

Only specular lighting:

As you can see here, the specular lighting makes for a really nice increase in quality. It is worth pointing out that there is still a lot of work to do in this area. Another important thing to point out is that rough reflections are suppo…

The constant ambient factor - how to use it to your advantage - and why you shouldn't

The constant ambient factor The constant ambient factor (or sometimes referred to as simply "ambient lighting") is an older and simpler solution to handle an issue with direct lighting - that being that any of the scene not being directly lit is completely dark 
So, let's try to write down whats happening and what indirect lighting actually does to handle it? 
Ok so lets write up a basic lighting equation: 
Lighting = albedo x (direct + indirect) 
(this is an oversimplification, and is only for demonstrative purposes!) 
Cool, now we can write up what the issue is when we dont have indirect lighting!
lighting = albedo x direct = 0
Ok, so hopefully you can see whats actually happening here - the light reflected into our eye is black - or 0. Now this can only happen if either albedo or direct is equal to 0. Now, the albedo should never equal 0, so we can assume that it's the direct lighting that results in it equaling 0! 
So, in order to avoid this we can add the ambient …

The primary problem with realistic rendering, and how mirage aims to solve it

The primary problem with realistic rendering, and how mirage aims to solve it So, I have now given a brief introduction to what mirage is - but I haven't touched on what it aims to actually solve at all, which is something I can hopefully clear up a bit in this entry. 
First and foremost I shall give you a brief lesson on how lighting works in the real world  (note, this is an oversimplification) 
As many of you probably already know, in the real world lighting is in its most simple form; a bunch of photons bouncing around in a scene. When a light ray hits a surface, some of it gets absorbed, some of it refracted and some of it is reflected into the rest of the scene. A tiny amount of that reflected light will eventually end up in our eye, where our brain then translates that into what we then see. 

Now, we can actually split this up into two different categories - direct and indirect light. Direct light is light that hits only one surface, and then hits our eye. (for example lig…

An introduction and whats to come

Hello!  My real name is something I keep to myself, so I'm known mostly by my surname "UglySwedishFish", or simply just "Fish" (or ugly, if you're not having a good day)
I've worked on mirage for a while now - and as I currently am not sure if I can release the source code or an executable (at least not for a while) I felt I still wanted to share my adventure in another way - which spawned the way to this blog.

So what exactly is this mirage thing?  Mirage is mostly just a passion project turned semi-serious. It started off like many of my other projects but I realized there might be some potential in actually trying to make it into something worthwhile.

What seperates mirage from the handful of real-time path tracers out there? (optix/nvidias path tracer, brigade, lavina, etc)  Well, first and foremost mirage is entirely cross platform! It has been designed both on nvidia gpus and amd gpus, and while it does ever so slightly prefer amd gpus it still run…