Gigatron's Forum Posts

  • Picoti

    You must follow this topic ...

    I will release this when the authour finished version 7.0 of flodjs;

    Anyway it's working for me but not yet ready to public... so please be patient ;

  • zenox98

    You are really nice, thanks for these nice words;

    Regards

  • Irbis This one is simple than other;

     
    #ifdef GL_ES
    precision mediump float;
    #endif
    
    uniform mediump sampler2D samplerBack;
    uniform mediump sampler2D samplerFront;
    varying mediump vec2 vTex;
    uniform mediump vec2 destStart;
    uniform mediump vec2 destEnd;
    uniform mediump float seconds;
    uniform mediump float date;
    uniform mediump float pixelWidth;
    uniform mediump float pixelHeight;
    vec2 iResolution = vec2( 1./pixelWidth, 1./pixelHeight);
    
    float mod289(float x)
    {
        return x - floor(x * (1.0 / 289.0)) * 289.0;
    }
    
    vec4 mod289(vec4 x)
    {
        return x - floor(x * (1.0 / 289.0)) * 289.0;
    }
    
    vec4 perm(vec4 x)
    {
        return mod289(((x * 34.0) + 1.0) * x);
    }
    
    float noise3d(vec3 p)
    {
        vec3 a = floor(p);
        vec3 d = p - a;
        d = d * d * (3.0 - 2.0 * d);
    
        vec4 b = a.xxyy + vec4(0.0, 1.0, 0.0, 1.0);
        vec4 k1 = perm(b.xyxy);
        vec4 k2 = perm(k1.xyxy + b.zzww);
    
        vec4 c = k2 + a.zzzz;
        vec4 k3 = perm(c);
        vec4 k4 = perm(c + 1.0);
    
        vec4 o1 = fract(k3 * (1.0 / 41.0));
        vec4 o2 = fract(k4 * (1.0 / 41.0));
    
        vec4 o3 = o2 * d.z + o1 * (1.0 - d.z);
        vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x);
    
        return o4.y * d.y + o4.x * (1.0 - d.y);
    }
    
    void main()
    {
       vec2 uv = vTex;
       float v1 = noise3d(vec3(uv * 10.0, 0.0));   // we can play with 10.0 to replace it
                                                                              // by uniform float x   ;  noise3d(vec3(uv * x, 0.0)); 
       float v2 = noise3d(vec3(uv * 10.0, 1.0));  // this for y ;  noise3d(vec3(uv * y, 1.0));
       
       vec4 color  = texture2D(samplerFront, uv + vec2(v1, v2) * 0.1);
       gl_FragColor = color;
    }
    [/code:1ugc1062]
    
    Note: For IOS ; it's important to initialize variables correctly, and right code;
    For example ; for last line this work too : gl_FragColor = vec4(color);
  • Another nice port see on Unity fx ; important cpu usage here ( complex noise used)

    Live demo;

    http://gigatron3k.free.fr/html5/C2/FX/astar

    Hope this demo work for you; will release it after my hollidays 2 week later,

    Enjoy ;

    Good news after long time <img src="{SMILIES_PATH}/icon_e_wink.gif" alt=";)" title="Wink">

    answer with demo ;

    http://gigatron3k.free.fr/html5/C2/FX/c3demo/

    Maybe will include glMatrix 2.0 ;

  • Irbis

    And i think i ve allready converted this one here ;

    http://gigatron3k.free.fr/html5/C2/FX/glitchs_fx.rar

  • Ok i will convert this online here

    Look and compare changed source from the original;

    1 - i must have an .xml file first ; eg : glitch.xml contains uniform variables to communicate between C2 and glsl main code here ;

    2 - glitch.xml and glitch.fx ;

    // Global header for all C2 FX i use ;
    
    #ifdef GL_ES
    precision mediump float;
    #endif
    
    uniform mediump sampler2D samplerBack;
    uniform mediump sampler2D samplerFront;
    varying mediump vec2 vTex;
    uniform mediump vec2 destStart;
    uniform mediump vec2 destEnd;
    uniform mediump float seconds;
    uniform mediump float date;
    uniform mediump float pixelWidth;
    uniform mediump float pixelHeight;
    vec2 iResolution = vec2( 1./pixelWidth, 1./pixelHeight);
    
    uniform float xx;   /// USED in place of iMouse.x    .. to communicate with shader variable so
                                    // include  xx to .xml file with float  
    
    // No change here 
    
    float sat( float t ) {
       return clamp( t, 0.0, 1.0 );
    }
    
    vec2 sat( vec2 t ) {
       return clamp( t, 0.0, 1.0 );
    }
    
    //remaps inteval [a;b] to [0;1]
    float remap  ( float t, float a, float b ) {
       return sat( (t - a) / (b - a) );
    }
    
    //note: /\ t=[0;0.5;1], y=[0;1;0]
    float linterp( float t ) {
       return sat( 1.0 - abs( 2.0*t - 1.0 ) );
    }
    
    vec3 spectrum_offset( float t ) {
       vec3 ret;
       float lo = step(t,0.5);
       float hi = 1.0-lo;
       float w = linterp( remap( t, 1.0/6.0, 5.0/6.0 ) );
       float neg_w = 1.0-w;
       ret = vec3(lo,1.0,hi) * vec3(neg_w, w, neg_w);
       return pow( ret, vec3(1.0/2.2) );
    }
    
    //note: [0;1]
    float rand( vec2 n ) {
      return fract(sin(dot(n.xy, vec2(12.9898, 78.233)))* 43758.5453);
    }
    
    //note: [-1;1]
    float srand( vec2 n ) {
       return rand(n) * 2.0 - 1.0;
    }
    
    float trunc( float x, float num_levels )
    {
       return floor(x*num_levels) / num_levels;
    }
    vec2 trunc( vec2 x, float num_levels )
    {
       return floor(x*num_levels) / num_levels;
    }
    
    // Main loop  fx running here at 60 fps 
    
    /// let's adapt to c2 
    
    void main()      /// changed
    {
       vec2 uv = vTex;    ///    change from :  fragCoord.xy / iResolution.xy;  
                                     ///   vTex is the sprite area we used to assign FX .
        uv.y = 1.0 - uv.y; ///  Flip  Y if texture is inversed .....  comment this if so
       
       float time = mod(seconds, 32.0); // + modelmat[0].x + modelmat[0].z;  //// Change iGlobalTime to seconds
    
       float GLITCH = 0.1 + xx / iResolution.x;   /// iMouse not exist but assign a variable like uniform float xx 
                                                                              ///  and replace iMouse
       
       float gnm = sat( GLITCH );
       float rnd0 = rand( trunc( vec2(time, time), 6.0 ) );
       float r0 = sat((1.0-gnm)*0.7 + rnd0);
       float rnd1 = rand( vec2(trunc( uv.x, 10.0*r0 ), time) ); //horz
       //float r1 = 1.0f - sat( (1.0f-gnm)*0.5f + rnd1 );
       float r1 = 0.5 - 0.5 * gnm + rnd1;
       r1 = 1.0 - max( 0.0, ((r1<1.0) ? r1 : 0.9999999) ); //note: weird ass bug on old drivers
       float rnd2 = rand( vec2(trunc( uv.y, 40.0*r1 ), time) ); //vert
       float r2 = sat( rnd2 );
    
       float rnd3 = rand( vec2(trunc( uv.y, 10.0*r0 ), time) );
       float r3 = (1.0-sat(rnd3+0.8)) - 0.1;
    
       float pxrnd = rand( uv + time );
    
       float ofs = 0.05 * r2 * GLITCH * ( rnd0 > 0.5 ? 1.0 : -1.0 );
       ofs += 0.5 * pxrnd * ofs;
    
       uv.y += 0.1 * r3 * GLITCH;
    
        const int NUM_SAMPLES = 10;
        const float RCP_NUM_SAMPLES_F = 1.0 / float(NUM_SAMPLES);
       
       vec4 sum = vec4(0.0);
       vec3 wsum = vec3(0.0);
       for( int i=0; i<NUM_SAMPLES; ++i )
       {
          float t = float(i) * RCP_NUM_SAMPLES_F;
          uv.x = sat( uv.x + ofs * t );
          vec4 samplecol = texture2D( samplerFront, uv, -10.0 );    /// iChannel0 not exist assign to samplerFront 
          vec3 s = spectrum_offset( t );
          samplecol.rgb = samplecol.rgb * s;
          sum += samplecol;
          wsum += s;
       }
       sum.rgb /= wsum;
       sum.a *= RCP_NUM_SAMPLES_F;
    
       gl_FragColor.a = sum.a;                                    /// replace fragColor with gl_FragColor.a
       gl_FragColor.rgb = sum.rgb; // * outcol0.a;   // replace this one too
    }[/code:3kduj4ay]
  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • Irbis

    Select a shader , and i will try to explain step by step to Convert that to C2 ..

    Regards

  • JayTholen

    I think it's ok now the latest file i ve sent ;

  • [quote:31ncov9u]I've played a bit with Chris's 2nd version and somehow made that one work hehe ^^

    But holy cow - working with C2 shaders is no fun

    At least I've learned how to modify any shader to enable/add more options

    Be sure it's really easy ... after long time study

    For online test use shadertoy if it's ok .. convert it to C2 ... etc

  • Well... the distortion sure does work Gigatron

    Compare how the texture looks and how it looks after shader.

    Everything is a bit oversaturated and overexposed (too white/bright).

    Why is that? And can you get rid of it? I've noticed its visible on your "mars" example too.

    The texture is dark and detailed when the sphere version is bright as sun

    It's not hard to correct this , unfortunately i ve done many change on this shader ...So

    can you PM me the shader you use ? i will modify this one ...

    Thanks

  • After search in my shader collection no need to pay ... square dot is the way i think ;

    http://gigatron3k.free.fr/html5/C2/FX/squaredot/

  • >

    > Also not sure if you noticed my amendment to my last post, any thoughts on how to do the page curl if the sprite object was just clicked on ?

    >

    You must convert or i must convert mouse position to vector or normalize this position to -1.0 to 1. 0.

    And then you can change fx prameters with this converted values...

  • Sorry here are the missing fx in one file;

    http://gigatron3k.free.fr/html5/C2/FX/fxfiles.rar

  • timcs

    All fx of C2 must be in effects drawer.... this mean you need 2 file inside... for example; effect.fx and effect.xml

    to use page fx ; open new project .. insert sprite object .. load picture into this sprite

    so select the page fx for this sprite; then you can manipulate fx variables on the left... with mouse object on your project.

    every thick parameter 0 to mouse.x/100.0 or something ....

    Good luck

    Ps: i have mailed the guy to port this : http://gigatron3k.free.fr/html5/C2/FX/pagecss/

    but not received answer... i can't make plugin yet.. cause it's shareware...