{
    "code":  "\nuniform vec4 _Color0;\nuniform vec4 _Color1;\nuniform vec4 _Color2;\nuniform float _Speed;\nuniform float _Scale;\nuniform float _Distortion;\n\nfloat rand(vec2 n) { \n    return fract(sin(dot(n, vec2(12.9898, 4.1414))) * 43758.5453);\n}\n\nfloat noise(vec2 p) {\n    vec2 ip = floor(p);\n    vec2 u = fract(p);\n    u = u*u*(3.0-2.0*u);\n    \n    float res = mix(\n        mix(rand(ip),rand(ip+vec2(1.0,0.0)),u.x),\n        mix(rand(ip+vec2(0.0,1.0)),rand(ip+vec2(1.0,1.0)),u.x),u.y);\n    return res;\n}\n\nvoid main() {\n    vec2 uv = _TexCoord;\n    float time = _Time * _Speed;\n    \n    vec2 movement = vec2(\n        sin(time * 0.5 + uv.y * 3.0) * 0.3,\n        cos(time * 0.3 + uv.x * 3.0) * 0.3\n    );\n    \n    vec2 distortedUV = uv + movement * _Distortion;\n    \n    float gradientA = noise(distortedUV * _Scale + time * 0.2);\n    float gradientB = noise(distortedUV * _Scale * 0.5 - time * 0.1);\n    \n    vec4 gradient1 = mix(_Color0, _Color1, gradientA);\n    vec4 gradient2 = mix(_Color1, _Color2, gradientB);\n    \n    vec4 finalColor = mix(gradient1, gradient2, \n        noise(distortedUV * _Scale * 0.7 + time * 0.15));\n    \n    float shine = pow(noise(distortedUV * 2.0 + time * 0.1), 3.0) * 0.3;\n    finalColor.rgb += vec3(shine) * 0.5;\n    \n    finalColor.rgb = mix(finalColor.rgb, pow(finalColor.rgb, vec3(0.9)), 0.5);\n    \n    _FragColor = finalColor;\n}\n",
    "effectDef": [
    {
      "type": "Color",
      "name": "Color0",
      "value": "5935bb"
    },
    {
      "type": "Color",
      "name": "Color1",
      "value": "3c8bc8"
    },
    {
      "type": "Color",
      "name": "Color2",
      "value": "051529"
    },
    {
      "type": "double",
      "name": "Speed",
      "minValue": 0,
      "maxValue": 1,
      "defaultValue": 0.2
    },
    {
      "type": "double",
      "name": "Scale",
      "minValue": 0,
      "maxValue": 5,
      "defaultValue": 1.46
    },
    {
      "type": "double",
      "name": "Distortion",
      "minValue": 0,
      "maxValue": 3,
      "defaultValue": 0.28
    }
  ],
    "height":  1080,
    "name":  "OceanDepths",
    "numVertices":  600000,
    "signature":  {
                      "type":  "ES512",
                      "value":  "MIGHAkIA/kIzYqJl66w5JOjmfVXR4P9pdcitNbT5aY7fu+QPOnZqOvexygnlpv5L3l0F/gR+67ny5njkPlNRgq18LdFNVe8CQV68r75Y86pR+3bZWIY5K/kfAUrcWxf6YbDEZui4jLf5MYGjIZNHD1QoyHE4l3e0/YqugErtKx3U5i+MOabdJ97h"
                  },
    "version":  1.3,
    "vertexCode":  "\nout vec2 _TexCoord;\n\nvoid main() {\n    vec2 p = vec2(float(gl_VertexID \u0026 1), float(gl_VertexID == 2 || gl_VertexID == 4 || gl_VertexID == 5));\n    gl_Position = vec4(p * 2.0 - 1.0, 0.5, 1.0);\n    _TexCoord = vec2(p.x, 1.0 - p.y);\n}\n",
    "width":  1920,
    "copyright":  "Copyright � 2025 TechSmith Corporation. All rights reserved."
}
