GODOT has a great shader system, and the roughness/metallic settings do a great job of representing a range of materials... but sometimes you want something a bit different.
It is possible to have object specific "reflections", using a fairly old technique called "matcaps".
It's not a particularly realistic looking effect, but if you want to go for that stylized effect, it can be a fun throwback.
vec2 offset = (normal_map.xy) - vec2(0.5);
vec2 v_n = (normal.xy / 2.0) + vec2(0.5, 0.5);
v_n.y = (v_n.y * -1.0) + 1.0;
v_n = v_n + offset;
vec4 refl = texture(mat_cap, v_n);
Here's the code you need for making the matcap project properly on your model. I've included a section to make sure the normal map will distort the reflections, just like with the metallic effect in GODOT. You can see in the image above that if we don't do this (left) the effect doesn't look good.
Be sure to use the right import settings on your normal map textures, so that they will work properly as normal maps.
Here's the copper texture I used for the matcap:
To get the best result, it's best to use this as part of a shader where other areas are masked off and use different texture settings. You could use the alpha channel as a reflective mask if you're not going to be using alpha.
Here are some more examples of things you can use the effect for, such as glowing lights or materials like Jade:
Comments
Post a Comment