shader-doodle实现太空行星燃烧运行动画效果

代码语言:html

所属分类:粒子

代码描述:shader-doodle实现太空行星燃烧运行动画效果

代码标签: 行星 燃烧 运行 动画 效果

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">

<style>
body {
  background: #6f707c;
}
shader-doodle {
  position: absolute;
  width: 100%;
  height: 100%;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}
.text {
  position: absolute;
  font-family: "Orbitron", sans-serif;
  top: 50%;
  left: 50%;
  color: #ffffba;
  transform: translate(-50%, -50%);
  font-size: 2rem;
  white-space: nowrap;
}
</style>

</head>
<body translate="no">


<shader-doodle>
<sd-node name="iChannel0" prevbuffer>
<script type="x-shader/x-fragment">
      uniform sampler2D u_prevbuffer;
      
      #define PI 3.141592
      #define LOOKUP(COORD) texture2D(u_prevbuffer,(COORD)/u_resolution.xy)
      
      vec4 Field (vec2 position) {
          // Rule 1 : All My Energy transates with my ordered Energy
          vec2 velocityGuess = LOOKUP (position).xy;
          vec2 positionGuess = position - velocityGuess;
          return LOOKUP (positionGuess);
      }

      void mainImage( out vec4 Energy, in vec2 Me )
      {
          Energy  =  Field(Me);
          // Neighborhood :
          float scale = 1.55;
          vec4 pX  =  Field(Me + vec2(scale,0));
          vec4 pY  =  Field(Me + vec2(0,scale));
          vec4 nX  =  Field(Me - vec2(scale,0));
          vec4 nY  =  Field(Me - vec2(0,scale));

          // Rule 2 : Disordered Energy diffuses completely :
          Energy.b = (pX.b + pY.b + nX.b + nY.b)/4.;

          // Rule 3 : Order in the disordered Energy creates Order :
          vec2 Force;
          Force.x = nX.b - pX.b;
          Force.y = nY.b - pY.b;
          Energy.xy += (Force/8.); // How much the waves disperse :

          // Rule 4 : Disorder in the ordered Energy creates Disorder :
          Energy.b += (nX.x - pX.x + nY.y - pY.y)/4.;

          // Gravity effect :
          Energy.y -=Energy.w/200.;

          // Mass concervation :
          Energy.w += sin(nX.x*nX.w-pX.x*pX.w+nY.y*nY.w-pY.y*pY.w)/4.;

          Energy.b -= sin(Force.y-Force.x)*1.15;

          // Mouse Drag movements :
          vec2 mouse;
      .........完整代码请登录后点击上方下载按钮下载查看

网友评论0