realtime-wet-surfaces

Implements real-time wetness on existing Godot 4 materials using a value-preserving shader conversion.

66|4|Updated Feb 26, 2026
One-click install
npx skills add https://github.com/SummerEngine/summer --skill realtime-wet-surfaces-summerengine
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: realtime-wet-surfaces
Source: https://github.com/SummerEngine/summer/tree/main/library/skills/realtime-wet-surfaces
Command: npx skills add https://github.com/SummerEngine/summer --skill realtime-wet-surfaces-summerengine

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Adding rain or wetness effects in Godot 4 normally means rewriting every material or losing its configured albedo, metallic, and roughness values. This Skill provides a value-preserving conversion workflow so existing StandardMaterial3D surfaces darken and gloss in real time without re-authoring. ## Core Features & Use Cases - Value-Copying Wet Shader: A shared .gdshader that receives the original material's albedo, metallic, and roughness as uniforms, so a one-time converter swaps materials without losing any configured values. - Geometry-Driven Wet Mask: Wetness accumulates on upward-facing surfaces first using a world-space normal mask broken up by noise, with per-instance or global wet_amount animated at runtime. - Runtime Wetness Controller: A typed GDScript WetnessController animates wet/dry transitions driven by rain zones or weather systems via instance shader parameters. - Use Case: Build a rainy level where ground, rocks, and rooftops progressively darken and turn glossy while it rains, then slowly dry afterward, all without touching the original material setup. ## Quick Start Ask your agent to apply the realtime-wet-surfaces skill to convert the level's StandardMaterial3D materials into wet-enabled ShaderMaterials and drive wetness from a rain zone.

Frequently Asked Questions about realtime-wet-surfaces

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I make surfaces look wet when it rains in Godot 4?

Convert existing StandardMaterial3D materials into ShaderMaterials using a shared wet shader that copies albedo, metallic, and roughness values. Then animate a wet_amount instance uniform from a controller script so surfaces darken and gain low roughness while raining.

How to add wetness to Godot materials without losing their values?

Godot cannot inject logic into a live StandardMaterial3D, so use a one-time converter that copies albedo_color, albedo_texture, metallic, and roughness into a ShaderMaterial running the wet shader. All original values are preserved as shader uniforms.

Why does my wet mask rotate with the camera in Godot shaders?

Fragment-stage NORMAL in Godot 4 is view-space, so an up-facing mask built from it shifts as the camera moves. Pass a world-space normal from the vertex stage through a varying using MODEL_MATRIX and build the mask from that instead.

Can I drive wetness globally instead of per object in Godot?

Yes. Register a global shader parameter with RenderingServer.global_shader_parameter_add and update it per frame with global_shader_parameter_set. Read it in the shader instead of the instance uniform for scene-wide weather without enumerating targets.

What are the limitations of this wetness shader approach?

It targets opaque PBR surfaces only; transparent and unshaded materials are out of scope. Skinned meshes need verification of the world-normal transform, and heightmap-guided flow along surface relief is a planned extension, not implemented.