Superphysical reflections and glow


#1

Hi guys,

I am wondering whether it is possible to re-create the following aesthetics using superphysical:
env

I have reached this point:

My light is currently image based.

What I am after, is how to apply a glow to the outer rim and how to make the shape reflect on the floor.
Any ideas / suggestions?

Thank you.

D


#2

Hi,

For the glow there are two things.

Typically this is done with an emissive material. To my knowledge super-physical doesnt have that, but the implementation is quite easy, you just need to add the values from your emissive texture to the pbr lighting equation.

in the glTF-pbr referrence implementation this looks like that (note that is webgl):

vec3 emissive = SRGBtoLINEAR(texture2D(u_EmissiveSampler, v_UV)).rgb * u_EmissiveFactor;
color += emissive;

Then you would also want to send a glow-mask to your defferend / postFX shaders. This can be a renderer temp target with the same geometry and a simple constant shader with a treshold on the emissive texture.
so you are just sending white pixels for the parts that you want to apply glow on and the rest is black.

And then you can apply this mask to the glow shader and as the input texture use your normal scene from the super physical shader (with your additional emissive map)

One last thing, to make it easyer, if you just want to achieve that image, a simple 2d texture with alpha on a quad would be maybe easyer then designing a emissive map for the geometry.

And the screen space reflections, if its just for the plane, you need to renderer your scene from the same view up side down and re-project it on the plane with a mask for the reflective parts.
This can be also a deffered effect. The more accurate it should be the harder it gets of course… if you bring in roughness and metallness you will need to do it in the super-physical based shader, where reprojection is more complicated. and you could use different LOD levels for sampling the reflection texture for the bluring on the rougher parts


#3

Actually there is an old trick around there, just put an HLSL color to diffuse of your matterial and make lightness around 15, then when you can tweak glow shader so it lights up only this color


#4

hi antokhio,
your old trick sounds nice, i tried to reproduce it but failed, maybe im too old, anyway, can you create a small example patch?

thanks,
ale.


#5

Thanks both -

Antokhio, I haven’t managed to reproduce it either I am afraid.
An example patch would surely be appreciated.

D


#6

tekcor - For the reflective part, do you know any example samples I can look through to see how I can re-project a render on a plane?

thanks.

D


#7

yes, here is an example called “projecting light maps”
which might be helpfull.

Here is a tutorial about it http://www.rastertek.com/dx11tut44.html

@Dorosp I had a quick shot here, you need to render the scene from the “lights” position and invert it. Right now its just turned on the head so you still need to figure out how to invert it. i dont have too much time atm.

44_ProjectiveTexturing.zip (15.7 KB)


#8

I have a naive implementation of screen space reflection buried inside the legacy emeshe stuff, but I have to make it standalone first


#9

@microdee please do that SSR standalone would be awesome

@Dorosp I had some more fun with that thing and put everything in a patch that you need.
Now its up to you to port it into super physical, would be awesome if you share it back.

Details:

  • Reflection is a the scene rendered upside down and projected from the camera view and projection.
  • I just made the reflected object spin in the other direction, so thats a lazy hack but works ok
  • note the MIP Map Count is set to 20 and in the shader of the reflective plane the noise texture is controlling the MIP Level of the SamleLevel function. This way you can get the bluriness on the edges. The reflection is then also faded into the phong shading with the same reflection control texture.
  • The glow mask is a emissive texture on the objects, it has only an alpha channel which is not used in the forward pass. the alpha anyway ends up in your deffered pass where you can use it as a glow mask. This way you can save two render targets and if you dont need alpha thats a good solution. You can still add other colors to that emissive texture also.

Planar_Reflection_Glow_Mask.zip (1.2 MB)


#10

Wow Tekcor thank you so much.
Will dig right into it.

D


#11

Not sure if we are talking about the same thing, but the new SuperPhysical 2.01 DOES have emissive Color and emissive Texture as a material input:

Just wanted to let you know in case you missed it. I think it was added in 2.01.


#12

Hi, I will add a planar reflection module similar to the proof of concept by @tekcor to superphysical when I find the time.


#13


added support for (one) arbitrary plane, which reflects environment - also according to material parameters like roughness.

This branch is still WIP, but will be merged in master soon.