So I had an idea tonight...
Could you do screen space reflections.
Well, I'll get to the point: You can!
My implementation is hacky, nasty, buggy and - well - ugly. But it proves it's a workable technique.
Basically, it works like this:
For each pixel, you have position/normal. Given the vector to the pixel, you can work out the reflection vector from the surface normal.
So... Then it's a matter of taking that reflection vector and sample it at a bunch of intelligent points.
Work out where those samples project to into screen space.
For each sample, check it's depth, if the depth is closer than the sample point - then the reflection ray has impacted some screen space geometry.
Yay! Simple. Slow, but simple.
I'm sure there are a zillion ways it could be optimised.
Anywho. Here are some proof of concept pics:
*NOTE THESE ARE PROOF OF CONCEPT*
*I know they have visual issues!*
As you can see, lots of glitches
Here are some more (even more glitches!)
Could you do screen space reflections.
Well, I'll get to the point: You can!
My implementation is hacky, nasty, buggy and - well - ugly. But it proves it's a workable technique.
Basically, it works like this:
For each pixel, you have position/normal. Given the vector to the pixel, you can work out the reflection vector from the surface normal.
So... Then it's a matter of taking that reflection vector and sample it at a bunch of intelligent points.
Work out where those samples project to into screen space.
For each sample, check it's depth, if the depth is closer than the sample point - then the reflection ray has impacted some screen space geometry.
Yay! Simple. Slow, but simple.
I'm sure there are a zillion ways it could be optimised.
Anywho. Here are some proof of concept pics:
*NOTE THESE ARE PROOF OF CONCEPT*
*I know they have visual issues!*
As you can see, lots of glitches
Here are some more (even more glitches!)