€0+

Parallax Strands

I want this!

Parallax Strands

22 ratings

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 10€. 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 over the functions (These are referring to version 2, for older versions check below):

  • General Controls
    • Generated - UV: Switches between Generated and UV coordinates
    • Fake Brownian: Fakes a brownian distortion of the strands (use small values)
    • Align to Normal: Distortes the strands along the normals (works best with generated texture coordinates)
    • Radial Sections: The amount of sections are facing towards the camera
    • Radial Blending: The amount of blending between the borders of each section
    • Strand Length: Overall length of all strands
    • Strand Rotation: Direction which the strands are leaning to
    • Strand Vertical Angle: If the tip of the strands are facing outward or at an angle
    • Falloff: Toggles between linear falloff or circular falloff
    • Normal Strength: Controls the strength of the Normal Output

  • Section Controls
    • Horizontal Tiling: Amount of sections in the X-Axis
    • Vertical Tiling: Amount of section in the Y-Axis
    • Strands per Section: Amount of Strands within each section
    • Random Section Length: Varies the length of each section within a column
    • Random Section Position: Varies the position of each sections along a column
    • Random Section Direction: Randomizes the vertical angle of a whole section

  • Strand Control
    • Random Strand Length: Varies the length of each strand (Use small values)
    • Random Strand Position: Varies the position of each strand along the Y-Axis
    • Random Strand Direction: Randomizes the vertical of each strand
    • Strand Thickness: Sets the thickness of each strand at the "Strand Center"
    • Random Strand Thickness: Randomizes the strand thickness
    • Strand Center: Sets the vertical median of a strand
    • Random Strand Center: Varies the height of the vertical median of each strand
    • Spine Strength: Controls how much the strand is influenced by the set "Spine Shape"
    • Spine Shape: Sets if whether the spine of the strands are set inwards or outwards

  • Clump Control
    • Random Tip Direction: If the tips of each strand are randomized or follow the direction of clumping (facing inwards or outwards)
    • Clump Direction: Toggles between clumping at the root or at the tip (e.g. root clumping for grass, tip clamping for fur)
    • Clump Strength: 0 = No clump, 1 = Full clump
    • Random Clump Strength: Randomizes the clumping strength
    • Clumping Shape: Controls the shape of clumping (<1 = bell shaped, >1 = pointy)
    • Random Clump Shape: Randomizes the shape of clumping

  • Noise Controls
    • Root Noise: Whether or not noise impacts the root of the strands (useful for wind animations)
    • Position: Determines the position of the noise texture
    • Roughness: The amount of details within the noise texture
    • Size: Uniform size of the noise texture
    • Strength: The amount of impact of distortion on each strand

  • Outputs
    • Intercept: Outputs a black and white value for each strand, ranging from black for the roots to white for the tips
    • StrandID: Outputs an individual ID for each strand, useful for random coloring and more individual editing
    • Strand Coordinates: Outputs the UV coordinates for each strand, helps to overlay textures over each strand
    • Normal: Outputs a computed normal for each strand, useful for shading (if it works properly xD)
    • Edge Masps: Outputs a mask for the edges of the object to be mixed with a transparency node for more accurate display





Old Controls for version 1.2 or lower

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.



I want this!
1,145 downloads

A node setup for Blender, that helps you add fur or grass to your project without the need of particles

Ratings

4.7
(22 ratings)
5 stars
86%
4 stars
9%
3 stars
0%
2 stars
0%
1 star
5%
Powered by