Procedural Island Shader
In January 2023, I toured the islands surrounding the town of El Nido, Palawan, Philippines. When I returned, I created this project to capture the majesty of these islands -- in particular, the contrast between their inviting beaches and jagged peaks. I built a shader network in Blender that can generate an infinite variety of these islands (and the surrounding water) given a basic subdivided grid.
The colored nodes in the my shader, shown above, each contain subnetworks of their own that describe how to power displacement maps and material attributes using fully procedural textures like Voronoi and Perlin noise. We get the complete island shader by carefully layering all of these generated textures!
The island height map (top left) is based on a warped Voronoi texture. The higher elevation parts of the islands have vegetation, activated by the generated mask shown bottom left.
The wave texture (top right) is a mixture of several sine waves. The unidirectional waves farther from the islands take in a warped x-coordinate as the input to the sine function, while the waves closer to shore use the island height texture to estimate the "depth" of the water as the input to sine. As seen in my demo, the phase of the waves can be animated to create the appearance of wave crashing ashore!
Here's some renders closer up to the beach that show off my sand material. I used a Voronoi texture to create the cell-like pattern of inverted bumps. This high-frequency bump texture powers the normals of the surface rather than vertex displacement. Additionally, the sand appears darker and wetter as it descends toward the water. Similar node networks were used for the bump, color, roughness, and specularity of the four other materials in my shader.
The palm trees were acquired from Blender Market and scattered on the beaches using geometry nodes. I created the clouds using 4D Perlin noise, gradients, and principled volume shaders, roughly following this tutorial by CGMatter.