AI GENERATED

カオスな果物

by touyou

PROMPT

神々の戯れ、木々のさざめき、海の揺れ、カオスを飲み込んで調和が訪れる

DATE
2026/7/24
SOURCE
AI GENERATED
MODEL
gemini-3.6-flash
LIKES
0
VIEW SHADER CODE
mat2 rot(float a) {
    float s = sin(a), c = cos(a);
    return mat2(c, -s, s, c);
}

float hash(vec2 p) {
    p = fract(p * vec2(123.34, 456.21));
    p += dot(p, p + 45.32);
    return fract(p.x * p.y);
}

float noise(vec2 p) {
    vec2 i = floor(p);
    vec2 f = fract(p);
    f = f * f * (3.0 - 2.0 * f);
    float a = hash(i);
    float b = hash(i + vec2(1.0, 0.0));
    float c = hash(i + vec2(0.0, 1.0));
    float d = hash(i + vec2(1.0, 1.0));
    return mix(mix(a, b, f.x), mix(c, d, f.x), f.y);
}

float fbm(vec2 p) {
    float v = 0.0;
    float a = 0.5;
    mat2 R = rot(0.37);
    for (int i = 0; i < 5; i++) {
        v += a * noise(p);
        p = R * p * 2.02 + vec2(1.6, 8.1);
        a *= 0.5;
    }
    return v;
}

vec3 palette(float t, vec3 a, vec3 b, vec3 c, vec3 d) {
    return a + b * cos(6.28318 * (c * t + d));
}

void mainImage(out vec4 fragColor, in vec2 fragCoord) {
    vec2 uv = (fragCoord * 2.0 - iResolution.xy) / iResolution.y;
    
    vec2 mouse = (iMouse.xy - iResolution.xy * 0.5) / iResolution.y;
    if (iMouse.z <= 0.0) mouse = vec2(0.0);
    uv += mouse * 0.15;

    float t = iTime * 0.25;
    float len = length(uv);
    float angle = atan(uv.y, uv.x);

    // Oceanic swaying foundation
    vec2 p = uv * 1.4;
    p += vec2(sin(p.y * 2.5 + t), cos(p.x * 2.5 + t * 0.8)) * 0.25;

    // Multi-stage domain warping (Chaos)
    vec2 q = vec2(0.0);
    q.x = fbm(p + vec2(0.0, t * 0.4));
    q.y = fbm(p + vec2(1.0, t * 0.3));

    vec2 r = vec2(0.0);
    r.x = fbm(p + 2.8 * q + vec2(1.7, 9.2) + t * 0.35);
    r.y = fbm(p + 2.8 * q + vec2(8.3, 2.8) - t * 0.25);

    float f = fbm(p + 3.2 * r);

    // Harmonic sacred alignment emerging from chaos
    float harmonicPulse = sin(iTime * 0.5) * 0.5 + 0.5;
    float divineRays = pow(abs(sin(angle * 6.0 + fbm(uv * 2.5 + t * 0.5) * 3.0 - t)), 4.0);
    float sacredRings = sin(len * 14.0 - t * 2.5 + f * 5.0) * 0.5 + 0.5;

    // Theme 1: Sea Sway Palette (Deep Cyan / Indigo)
    vec3 seaCol = palette(f + t * 0.08, 
        vec3(0.05, 0.15, 0.28), 
        vec3(0.12, 0.32, 0.42), 
        vec3(1.0, 1.0, 1.0), 
        vec3(0.0, 0.33, 0.67));

    // Theme 2: Tree Rustle Palette (Emerald / Jade / Gold-Green)
    vec3 leafCol = palette(length(r) + 0.2, 
        vec3(0.03, 0.22, 0.12), 
        vec3(0.15, 0.45, 0.25), 
        vec3(0.8, 1.0, 0.5), 
        vec3(0.1, 0.5, 0.2));

    // Theme 3: Divine Harmony Palette (Amber / Celestial Gold)
    vec3 divineCol = palette(divineRays + sacredRings * 0.4, 
        vec3(0.55, 0.42, 0.18), 
        vec3(0.45, 0.35, 0.15), 
        vec3(1.0, 0.9, 0.6), 
        vec3(0.05, 0.12, 0.25));

    // Blending Chaos into Organic Harmony
    vec3 col = mix(seaCol, leafCol, smoothstep(0.15, 0.85, r.x));

    // Radiant divine light integration
    float divineMask = exp(-len * 1.3) * 1.3 + divineRays * 0.45 * sacredRings;
    col = mix(col, divineCol, clamp(divineMask, 0.0, 1.0));

    // Celestial sparks / divinity playing in the atmospheric canopy
    float sparkle = pow(fbm(uv * 12.0 + vec2(t * 1.5, -t * 1.2)), 6.0) * 6.0;
    vec3 sparkleColor = vec3(1.0, 0.92, 0.75);
    col += sparkleColor * sparkle * smoothstep(1.5, 0.1, len);

    // Central harmonic glow
    float centerCore = 0.09 / (len + 0.09);
    col += divineCol * centerCore * 0.6;

    // Vignette
    float vig = smoothstep(1.8, 0.35, len);
    col *= vig;

    // Soft tonemapping & color depth enhancement
    col = col / (1.0 + col * 0.55);
    col = pow(col, vec3(0.88));

    fragColor = vec4(col, 1.0);
}

ZIP を展開して .playground を Xcode でダブルクリックし、Live View を表示して ▶ を押すとシェーダーがアニメーションします。Metal ソースは Resources/Shader.metal に独立ファイルとして入っているので、Xcode 上で直接編集できます。