Procedural Island Shader

main islands render
main islands render

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!

island height map
wave height map
vegetation shader presence
islands from above
shader nodes for island height
shader nodes for wave height

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!

beach close up
beach with fog
shader nodes for sand BSDF

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.

beach close up
beach with fog