{ "QEN": { "description": "This effect creats a wavy sea with reflection of the source item. Requires texture lookup of the source, so should be used among first nodes.", "fragmentCode": [ "@main", "{", " vec2 tc = vec2(texCoord.s, 1. - texCoord.t);", "", " const float p = seaReflectionPerspective + (1. - seaReflectionPerspective) * texCoord.y;", " const float w = (1.0001 - seaReflectionWaveSize) * 5;", " const float wave1 = 0.5 * sin(30 * w * (0.5 - texCoord.y) / p + iTime * 5) * p;", "", " float wave2 = sin((0.5 - texCoord.x) * 25 * w / p) * sin( iTime - texCoord.y * 40 * w / p) * p;", " wave2 += sin(2 * iTime + ((0.5 - texCoord.y) * 4 * w / p + sin(2 * iTime - texCoord.y * w * 3) * 0.1 / w * sin((0.5 - texCoord.x) * w * 10 / p)) * 10 * w) * p;", " wave2 *= 0.4;", "", " const float combinedWaves = (wave1 + wave2) * 0.2;", "", " tc.y += (wave1 + 0.2 * wave2) * seaReflectionDistortionFactor;", " tc.x += 0.2 * combinedWaves * seaReflectionDistortionFactor;", "", " vec4 texColor = texture(iSource, tc);", "", " texColor.rgb *= seaReflectionColor.rgb * 2;", "", " fragColor = vec4(mix(seaReflectionColor.rgb, texColor.rgb - combinedWaves * seaReflectionColorFactor, seaReflectionReflectiveness * texColor.a), 1.0);", "}" ], "name": "SeaReflection", "properties": [ { "defaultValue": "0.15, 0.5, 0.9, 1", "description": "This property defines the color of the reflective sea. The source texture colors are multiplied with this color to colorize the reflection.", "name": "seaReflectionColor", "type": "color" }, { "defaultValue": "0.7", "description": "This property defines how large the waves are. 1 is the size of the source texture and 0 is very small.", "maxValue": "1", "minValue": "0", "name": "seaReflectionWaveSize", "type": "float" }, { "defaultValue": "0.2", "description": "This property defines the perspective that makes the horizon seem further away. 0 is infinitely far and 1 disables the perspective completely.", "maxValue": "1", "minValue": "0", "name": "seaReflectionPerspective", "type": "float" }, { "defaultValue": "0.5", "description": "This property defines how much the colors are intensified by the waves.", "maxValue": "1", "minValue": "0", "name": "seaReflectionColorFactor", "type": "float" }, { "defaultValue": "1", "description": "This property defines how much the reflection is distorted by the waves.", "maxValue": "3", "minValue": "0", "name": "seaReflectionDistortionFactor", "type": "float" }, { "defaultValue": "0.4", "description": "This property defines how much the texture is reflected. When set to 0, only the seaReflectionColor is rendered with no reflection at all.", "maxValue": "1", "minValue": "0", "name": "seaReflectionReflectiveness", "type": "float" } ], "version": 1 } }