My shading, textures, and material experiments


(CarlG) #1

With 2.80 upcoming, I decided to do some experiments, and maybe convert some of the old stuff.

For this first one I know that in Cycles we can’t (yet) do stuff that depends on scene brightness, but Eevee have this awesome Converter/ShaderToRGB node. With that in mind I loaded up the BMW test scene and used Eevee to generate a render where the color changes with how much light that pixel receives.

That Eevee image comes out like this:

I now simply mapped that image using window texture coordinates (rarely used) to the main material of the car only, and used the color information to cause a hue shift in colors.

Here is the final Cycles result:

Kinda fun :slight_smile:


(CarlG) #2

Made my own ShaderBall where the UV is not made for painting on, but for help defining coordinates and aniso tangent space. It’s low poly with subdiv, and I can’t fix some of the stretching errors, particularly when trying to maintain direction. UV has overlaps and not suitable for painting or baking. Ball is basic, the base has some protrusions for SSS tests, a plane with wrong normal (in case I need to account for that), and two thin boxes in the back for SSS estimation and backlighting experiments (strong area light behind). Basic HDR for main lighting.

ShaderBall_AnisoGGX - GGX is fine on its own if you want long stretching on metals with some visible roughness.

ShaderBall_AnisoBechman+GGX - is required if you want a high polish appearance while being able to stretch strong lights (here, the sun). Only GGX doesn’t work at all. Mix factor is 0.01 Beckman. Beckman is 1.5 roughness and 1.0 aniso, where aniso direction is modulated with a stretched voronoi to produce ±0.001 variation. Color and roughness is fixed, and only a bevel node for normals. The GGX can be pretty much whatever.

ShaderBall_Cast - Some kind of cast appearance. The basic idea is using a dense Voronoi/Cells to generate random colors, which is then used to modify normals directly (going through a some stuff that also does normalize). Similar to how you would do carpaint flakes and snow glitter I guess. A “grease topcoat” on top which uses a reduced impact version of the same normals. Nothing fancy.


(CarlG) #3

Carbon fiber in twill pattern and coating.

Zoomed in version.

Trying out some fabric pattern (scale of pattern is off for visibility)

ShaderBall_WoodenBoardsUsingBricksAndLookupTexture - using three brick generators to control random color generation and variations of brick mortar size. Combined with a high resolution seamless wood texture (pregenerated using Skorupas wood nodes and made seamless), it gives a pretty decent result for staggered boards. Wish the top four parameters could be controlled though.

And the nodes for it, for easy access next time I need to do it for real.


(CarlG) #4

SSS marble stuff, using a noise generator to randomly mix 4 versions of the same seamless texture (scale and rotation). This group is then called three times with different settings, and using a modified six-planar box mapping node simply projected along xy, yz, and xz. Very versatile way of doing box mapping to very effectively hide texture repeats.

The nodes for it, the outside scope is simpler, so snapshot from within the marble image texture node group where the transforms happen.

This was similar, where I tried to map some stuff to SSS as an experiment.

Unfortunately, all these nodes have a very high cost, and may probably fail Eevee shader compilation.