{ "QEN": { "description": "Generates rain effect.", "fragmentCode": [ "@main", "{", " float rain = 0.0;", " float time = iTime * 0.4;", " for (int i = 0; i < rainLayers; i++) {", " float rainMovement = time * (1.0 + (float(i) / (rainLayers- i)) * 0.5);", " float coordY = fract(0.35 * i + texCoord.y * (rainTextureScale.y + i * rainTextureScale.w) - rainMovement);", " float coordX = fract(0.65 * i + (texCoord.x + rainWind * texCoord.y ) * (rainTextureScale.x + i * rainTextureScale.z));", " vec2 rainCoord = vec2(coordX, coordY);", " float rainTex = texture(rainTexture, rainCoord).a;", " float rainAlpha = float(i + 1.0) / rainLayers;", " rain += rainTex * rainAlpha;", " }", " vec3 rColor = rainColor.rgb * (1.0 / (0.01 + rainColor.a));", " fragColor.rgb = mix(fragColor.rgb, rColor * fragColor.a, rain * rainColor.a);", "}" ], "name": "Rain", "properties": [ { "defaultValue": "../images/rain.png", "description": "Texture for the rain effect. This should support seamless tiling.", "name": "rainTexture", "type": "image" }, { "defaultValue": "4", "description": "The amount of rain layers. Increasing the layers adds variation to the rain effect but also requires more processing power. The default value is 4 and practical range is between 1 and 10.", "maxValue": "10", "minValue": "1", "name": "rainLayers", "type": "int" }, { "defaultValue": "1, 0.5, 0.2, 0.1", "description": "Scaling of the rain texture. Values of x and y define scaling of the first rain layer and values z and w define the scaling step size of each following rain layer. So if values of z and w are 0.0, all rain layers have the same size.", "maxValue": "2, 2, 1, 1", "minValue": "0.1, 0.1, 0, 0", "name": "rainTextureScale", "type": "vec4" }, { "defaultValue": "0", "description": "Defines wind direction for the rain. The default value is 0.0 and practical range is between -1.0 and 1.0.", "maxValue": "1", "minValue": "-1", "name": "rainWind", "type": "float" }, { "defaultValue": "0.8, 0.8, 1, 1", "description": "Defines the color of the rain. The default value is light blue (0.8, 0.8, 1.0, 1.0).", "name": "rainColor", "type": "color" } ], "version": 1 } }