Parallax Strands
Hello everyone
Its been a while since the last time I've uploaded something.
Something that bugged me for a very long time was the lack of a passable middle ground between making grass using textures and using geometry/hair particles. One arguably the fastest but ugliest method while the other one is good looking but expensive. Grass based on image planes is of course another way but it creates a lot of transparent overlap.
Given I already invested a little bit of time into parallax occlusion mapping and parallax rooms, I wanted to explore a solution based on those previous methods. And this is the result. A parallax strand shader that helps simulating a dense patch of grass or fur on any surface without the need of any additional geometry. The shader has a bunch of fine controls to get the best out of it.
For example:
- Blade thickness, length and direction controls
- fake brownian and distortion controls to add variations
- Controls to adjust the 3D effect
- Overall texture controls
- Outputs for incept, mapping vectors and masks for randomization
About Money:
Most of previous projects are free, however developing those shaders takes a lot of time so I hope you wont mind me asking a bit of money in return :D I've set the suggested price to 4€. I think thats still cheaper than a lot of stuff but still enough to me to justify the effort. You can still get it for free for now though but a little support would be appreciated.
I intent to upload a small tutorial on how I made this effect so perhaps you can reproduce it for yourself ;)
How to use the Shader?
In you Blender project click
File > Append > select the ParallaxStrands.blend > NodeTree > Parallax Strands
or
File > Append > select the ParallaxStrands.blend > Material > ParallaxGrassExample
Now you can either add the shader in the Material node editor under add > group > Parallax Strands
Or take a look at the example material directly
Here is a little Shader overview:
Input
- Overall Settings
- use UV (using the shader with UVs gives you better fine control over the direction of your strands. Good for characters)
- Field Settings
- Texture Scale (the scale of the whole shader)
- Radial Section Amount (the amount of sections around, facing the camera. Higher value = more detail = more artifacts)
- Row Shift (How far individual strands disperse, lower values can create a stepped feeling)
- Align Blades to Normal (If the blades are supposed to "lay" on the object or point upwards)
- Linear Incoming (toggles incoming from radial to a straight line)
- Incoming strength (how strong the strands are pulled towards the camera)
- Texture Rotation (rotates the whole texture)
- Distortion Settings
- Distortion Scale (scale of the underlying noise texture)
- Distortion Warp (the distortion amount of the noise texture)
- Lacunarity (lacunarity of the noise texture, higher values more "details")
- Roughness (roughness of the noise texture)
- Distortion Position (noise texture position, can be animated for wind effect)
- Distortion Strength
- Blade Settings
- Fake Brownian (adds a bit of wiggle to the blades)
- Blade Length
- Blade Width
- Blade side-Rotation (rotates the blades without affecting the whole effect)
- Blade up-Rotation (at which angle the strands are pulled towards the camera)
- Taper (adds a taper effect to the tip of the blade)
Output
- Strand Mask (Color mask to give an individual ID to each strand, allows for randomized color effects for example)
- Strand Vector (XY coordinates, can be used to add some texture to the blades)
- Strand Incept (technically the same as the X value of the Strand vector)
If you have any issues or requests for more features let me know.
A node setup for Blender, that helps you add fur or grass to your project without the need of particles