GRAPHICA
CURATED

星雲のドリフト

by GRAPHICA

PROMPT

深い藍色の宇宙に、ゆっくりと渦を巻く星雲。縁がオレンジの光で染まり、奥から白い光が滲む

DATE
2026/6/12
SOURCE
CURATED
MODEL
LIKES
42
VIEW SHADER CODE
float hash21(vec2 p) {
  p = fract(p * vec2(234.34, 435.345));
  p += dot(p, p + 34.23);
  return fract(p.x * p.y);
}

float vnoise(vec2 p) {
  vec2 i = floor(p);
  vec2 f = fract(p);
  vec2 u = f * f * (3.0 - 2.0 * f);
  return mix(
    mix(hash21(i), hash21(i + vec2(1.0, 0.0)), u.x),
    mix(hash21(i + vec2(0.0, 1.0)), hash21(i + vec2(1.0, 1.0)), u.x),
    u.y
  );
}

float fbm(vec2 p) {
  float v = 0.0;
  float a = 0.5;
  mat2 rot = mat2(0.8, -0.6, 0.6, 0.8);
  for (int i = 0; i < 6; i++) {
    v += a * vnoise(p);
    p = rot * p * 2.03;
    a *= 0.5;
  }
  return v;
}

void mainImage(out vec4 fragColor, in vec2 fragCoord) {
  vec2 uv = (fragCoord * 2.0 - iResolution.xy) / iResolution.y;
  float t = iTime * 0.07;

  vec2 q = vec2(fbm(uv + t), fbm(uv + vec2(5.2, 1.3) - t));
  vec2 r = vec2(
    fbm(uv + 4.0 * q + vec2(1.7, 9.2) + t * 0.6),
    fbm(uv + 4.0 * q + vec2(8.3, 2.8) - t * 0.4)
  );
  float f = fbm(uv + 4.0 * r);

  vec3 col = mix(vec3(0.015, 0.025, 0.07), vec3(0.12, 0.30, 0.62), clamp(f * f * 3.6, 0.0, 1.0));
  col = mix(col, vec3(0.85, 0.42, 0.18) * 0.7, clamp(length(q) * 0.75, 0.0, 1.0) * f);
  col = mix(col, vec3(0.96, 0.92, 0.84), pow(clamp(r.y, 0.0, 1.0), 6.0) * 0.55);
  col *= 0.45 + 0.55 * f * 2.1;
  col *= 1.0 - 0.42 * dot(uv * 0.55, uv * 0.55);
  col = max(col, 0.0);
  fragColor = vec4(pow(col, vec3(0.88)), 1.0);
}