把shadertoy 搬到cocoscreaor的方法

把shadertoy 搬到cocoscreaor的方法

// Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.  

// Note: Current format version is experiment, the format may be changed.
// The future format may not be compatible, you may need to update the script manually.

// 注意:当前版本的格式是实验性的,之后还会进行修改。
// 后续版本的格式不保证兼容当前格式,可能需要手动升级到最新版本。,
%{
  techniques: [
    {
      passes: [
        {
          vert: vs
          frag: fs
          cullMode: none
          blend: true
        }
      ]
      layer: 0
    }
  ]
  properties: {
    texture: {
      type: sampler2D
      value: null
    }
    color: {
      type: color4
      displayName:'颜色'
      value: [1, 1, 1, 1]
    }
      resolution:{
    type:vec3,
    displayName:'分辨率'
    value:[1280,720,0]
  }
    time:{
    type:float,
    value:0.01
  }
  }




%}

%% vs {

precision highp float;

uniform mat4 cc_matViewProj;
attribute vec3 a_position;
attribute vec2 a_uv0;
varying vec2 uv0;

void main () {
    vec4 pos = cc_matViewProj * vec4(a_position, 1);
    gl_Position = pos;
    uv0 = a_uv0;
}

}

%% fs {

precision highp float;

uniform sampler2D texture;
uniform vec4 color;
varying vec2 uv0;
uniform vec3 resolution;
uniform float time;
const float count = 10.0;
const float speed = 5.0;

float Hash( vec2 p, in float s)
{
    vec3 p2 = vec3(p.xy,27.0 * abs(sin(s)));
    return fract(sin(dot(p2,vec3(27.1,61.7, 12.4)))*273758.5453123);
}


float noise(in vec2 p, in float s)
{
    vec2 i = floor(p);
    vec2 f = fract(p);
    f *= f * (3.0-2.0*f);
    
    
    return mix(mix(Hash(i + vec2(0.,0.), s), Hash(i + vec2(1.,0.), s),f.x),
               mix(Hash(i + vec2(0.,1.), s), Hash(i + vec2(1.,1.), s),f.x),
               f.y) * s;
}


float fbm(vec2 p)
{
    float v = 0.0;
    v += noise(p * 01., 0.5);
    v += noise(p * 02., 0.25);
    v += noise(p * 04., 0.125);
    v += noise(p * 08., 0.0625);
    v += noise(p * 16., 0.03125);
    return v;
}


void main () {
 float worktime = time * speed;
    
    vec2 uv = ( gl_FragCoord.xy / resolution.xy ) * 2.0 - 1.0;
    uv.x *= resolution.x/resolution.y;
    
    
    vec3 finalColor = vec3( 0.0, 0.0, 0.0 );
    for( float i = 1.0; i < count; i++ )
    {
        float t = abs(1.0 / ((uv.x + fbm( uv + worktime / i )) * (i * 100.0)));
        finalColor +=  t * vec3( i * 0.075, 0.5, 2.0 );
    }
    
    gl_FragColor = vec4( finalColor, 1.0 );
    
}
}

  直接把fs替换下就好了

 

posted @ 2019-11-12 10:13  newmiracle宇宙  阅读(328)  评论(0编辑  收藏  举报