โ† All examples

godot shaders

Lit smoke puff on a camera-facing card

Soft smoke puff on a camera-facing quad that the scene lights shade like a sphere: a fake spherical normal plus noise detail, churning fractal noise for the shape, and soft alpha falloff.

Recorded render of Lit smoke puff on a camera-facing card

What this component contains

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

How it works

Shader type
spatial
Render modes
cull_disabled, depth_draw_never, shadows_disabled
Parameters
smoke_color (vec4 = 0.62, 0.62, 0.65, 1), density (float = 1), noise_scale (float = 3.5), churn_speed (float = 0.35), softness (float = 0.45), roundness (float = 0.7), detail_normal (float = 0.6)
Use it on
A QuadMesh; scene lights shade it.
Result
A grey puff of smoke lit from one side with soft, churning edges.
Renderers
compatibility: compiled and rendered, forward plus: not verified, mobile: not verified
Placement
res://baltor/godot_shaders/smoke_billboard/

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

Lit as a single sphere-like shell, not as a volume: no self-shadowing or light scattering. Overlapping puffs are sorted per object, not per pixel. Seven fBm evaluations of four octaves per pixel cost a lot on large puffs.