Kyeo's Node Library Sketchbook

Thumbnail

Hey there,

I’m in the proccess of building a material node-based library, and so was in need of a test scene, that also might document the process in a more interesting way. Decided to recreate one of my favourite architecture projects (found it on ofhouses.com, great archive)

Mind you, some changes are intended, but will try to also have a more accurate version in the end. Anyway, I’ll keep posting the progress:

Edit: picture order
Edit2: change post purpose, add comparison slider

5 Likes

2024-05-28

  • Got around to mess with a procedural (wood) plank concrete material. Maybe Doka next?

  • Changed the “bump standard” in the library, height goes from -1 to 1 so every pattern/texture can be mix and matched — I essentially multiply the original normalized height [0-1] by a value between -1 to 1 (usually within millimetres) and add all of them. Then connect the already scaled height into the node group wrapping a bump node. This supports both positive and negative numbers for bump, mimicking how displacement works.


2 Likes

Just realized I have not mentioned the way I’m approaching this library, think of this as an informal design doc for myself.

For the nodes graphics I’m using this addon (still in beta) by @draberf. Had to convert to png because Discourse seems to mess with it’s contents

Guiding Ideas

  • Nodegroups should be moduralized just like vanilla nodes, complex nodegroups are made out of simple ones, decreasing duplicated work through reusability.
  • Nodegroups are separated into categories that define what is their expected purpose/interface.

Naming

Mapping.Triplanar

$category[.$namespace].$name

Categories

Float/Color/Vector: General utilities that come out of recurring node setups
Coordinates: Texture mapping shenanigans.
Pattern: Akin to vanilla textures (Noise, Voronoi), output either a float or sometimes a color value. To be used to drive Texture groups or compose different Height groups.
Height: Encapsulated Patterns that only output a Height and Normalized Height values.
Texture: Outputs Color/Roughness/Height and it’s purpose is to eventually connect to a Principled BSDF, but to be further modified before that. (eg. mixing with a Height group)
PBR: Well, the last step of the material. Some are very specific (eg. PBR.Glass), others quite general PBR.Micro Roughness.
Bump: [User Facing] Height group wrapped in a Bump Node to easily chain them.
Material: [User Facing] self contained materials.

User Facing =/= Dev Facing

User Facing: Nodegroups of this kind should work out of the box. They should have a shader output, expose most of available settings underneath but still output all of it’s major components (eg. Color, Roughness).

Dev Facing: Nodegroups of this kind are to be mix and matched with other nodes and not expected to work by themselves (eg. Texture.Wood nodegroup has no default coordinate system whereas Material.Wood does).


In the end this is nothing revolutionary, but it allows me to keep the library consistent as I develop it.

2 Likes

2024-06-01

  • bump is now additive for all bump , including the pattern_tiles
  • tweaks to pattern_tiles and texture_wood

Aaaand playing around with those:




4 Likes

2024-05-22

2024-06-01

5 Likes

2024-06-06

5 Likes

2024-06-08

A completely different subject to test plaster/glass.

Credits:

  • plaster material based on a nodetree i came accross in the wild (cannot find it right now)
  • flowers from botaniq
  • furniture model from blenderkit


3 Likes

2024-06-22

Raw Concrete!

I’ve been looking into Sanctus’ Library for an idea of the general approach regarding some materials.



Easing Functions, taken from https://easings.net/

3 Likes

good looking materials here! Keep it up! :star_struck:

2 Likes

Thanks, I’m just working in the shoulders of giants here. Most of the techniques were found in this very forum!

Been quiet on this post but working hard!

Iterated a bit on my todo/task logging system, I feel I want to do a post on that, someone might find it useful, I sure do like to see other people’s ways of organization.

2024-06-27

Reworked the Physical Starlight and Atmosphere to work without the addon (took a lot of rewiring and adding the math that was done on the python side).

Also got rid of the Sun Position addon, I had no need for the sun light and instead redid all the math in shader nodes! (Only the sun_position nodegroup is included, pretty sure I cannot share the modified PSA one)

2024-06-28_sun_position.blend (1.2 MB)



2024-07-05

Wood Rework!

I was not happy on how I could influence the wood in the previous nodegroup.
The new apporach was slicing the 3D textures to get the “wood cut” that I wanted, also added a “Core” section to emulate the exansion of the grain when it gets to the center.

Will eventually improve this further but for now it works.

Some references:

1 Like

2024-07-06

Ceramic Tiles!

Makes use of Bump.Tiles (previously Pattern.Tiles). Note to self, share that one was aswell.

2 Likes

Awesome. What would this look like with diffuse roughness (oren-nayar) enabled?

Just searched about it, is that with 4.3? I don’t understand it entirely, but here the are (?)



Edit: added screenshots

1 Like

2024-07-16

Bricks! Reworked quite a bit of the Bump.Tiles nodegroup:

  • Split into smaller nodegroups that can be chained multiple times

  • Added tile split with masking (used to produce the flemish bond). Quite a bit of work figuring out how to make the tile index work again. Still got to do vertical split, but that’s for another day.

  • Played around with different bonds



  • WIP with reference

3 Likes

2024-07-24 Asphalt



1 Like

2024-07-28

Marble!

Credits to @hbitproject for this great tutorial

Only 4 variations for now: Carrara White, Rojo Alicante, Nero Marquina and Breccia Capraia, but many more are possible.

And of course, usable with Pattern.Tiles group.


3 Likes