โ† All examples

godot shaders

Procedural planet surface with oceans, biomes and ice caps

Paint a whole planet on a sphere from 3D noise of the surface direction: oceans with shallow coasts, land coloured by height and latitude, ridged mountains, polar ice caps and glossy water, with optional slow spin.

Recorded render of Procedural planet surface with oceans, biomes and ice caps

What this component contains

  • ATTRIBUTION.md
  • LICENSE
  • README.md
  • component.json
  • demo.tscn
  • inspect_shader.py
  • material.tres
  • preview.png
  • procedural_planet_surface.gdshader
  • test_package.py
  • verification/native.json

How it works

Shader type
spatial
Parameters
deep_ocean (vec4 = 0.02, 0.08, 0.25, 1), shallow_ocean (vec4 = 0.08, 0.35, 0.55, 1), lowland (vec4 = 0.2, 0.42, 0.16, 1), desert (vec4 = 0.78, 0.66, 0.4, 1), highland (vec4 = 0.45, 0.38, 0.3, 1), ice (vec4 = 0.94, 0.96, 1, 1), continent_scale (float = 1.8), sea_level (float = 0.52) and 5 more
Use it on
A sphere centred on its origin (directions come from vertex positions).
Result
A rotating Earth-like planet with blue oceans, green and tan continents, brown highlands and white poles.
Renderers
compatibility: compiled and rendered, forward plus: not verified, mobile: not verified
Placement
res://baltor/godot_shaders/procedural_planet_surface/

Recorded checks

godot 4.7.2.stable.official.ed1daf0bf

  • contract_static
  • engine_run
  • engine_log_clean
  • shader_in_scene
  • capture_written
  • render_not_uniform
  • shader_changes_pixels

Limits to consider

Colour only: the surface is not displaced and has no normal relief. About thirteen octaves of 3D value noise per pixel are costly for full-screen planets. Biomes follow simple rules (height, latitude, one dryness noise), not climate.