
What this component contains
ATTRIBUTION.mdLICENSEREADME.mdblender_material.pycomponent.jsonmaterial.tresocean_wave_normals.pypngio.pypreview.pngtest_package.pytexkit.pyverification/native.json
How it works
- Entry point
- generate
- Maps
- albedo, normal, roughness, height, ao
- Parameters
- peak_waves, components, wind_angle, spread, detail, choppiness, foam, relief and 3 more
- Presets
- default, calm_swell, choppy_wind, stormy, lake_ripples
- Tileable
- yes
- Command line
- python ocean_wave_normals.py --size 1024 --seed 7 --preset NAME --out DIR [--width W --height H] [--set NAME=VALUE] [--directx-normal] [--orm]
- Godot material
- material.tres
- Blender builder
- blender_material.build_material(folder)
Recorded checks
godot 4.7.2.stable.official.ed1daf0bf
command_line_generates_declared_mapsmaps_decodemaps_have_declared_size_and_channelsmaps_tile_without_a_seamnormal_vectors_unit_length_facing_outmaps_carry_detailgodot_imports_the_mapsgodot_material_template_loads_every_mapgodot_compatibility_rendercapture_shows_the_textured_surfaceblender_builds_the_material
Limits to consider
One still frame of a stylized spectrum, not an ocean simulation: there is no dispersion relation, time animation or FFT, and the spectrum shape is a log-normal band with cosine spreading rather than a measured model such as JONSWAP. Choppiness resamples the height once at the displaced position, an approximation of Gerstner waves that holds while crests do not fold. Every wave repeats across the tile, so long views show the repeat; blend two scales of the tile in the shader to hide it. Foam is placed from crest compression and noise, not from breaking physics, and the occlusion map is a mild stand-in.