[effect] Light rays C2

0 favourites
  • 10 posts
From the Asset Store
High quality sound effect pack, in the following categories: click, coin, damage, fail, jump, level up,message, shot
  • I tried to convert this shader to C2 : ax23w4.itch.io/lightrays-2d-effect but now I arrived to this result :

    A gradient. But I don't know what is doing this. Do you can know please ?

    Here is the shader :

    uniform highp float seconds;
    uniform highp float _Speed;
    uniform highp float _Size;
    uniform highp float _Skew;
    uniform highp float _Shear;
    uniform highp float _Fade;
    uniform highp float _Contrast;
    varying mediump vec2 vTex;
    
    void main ()
    { 
      highp vec4 _Color1;
      highp vec4 _Color2;
      _Color1 = vec4(0.100000,1.000000,1.000000,1.000000);
      _Color2 = vec4(0.000000,0.460000,1.000000,0.000000);
      lowp vec4 tmpvar_1;
      highp float val_2;
      highp float noisePos_3;
      highp vec4 color_4;
      mediump float tmpvar_5;
      tmpvar_5 = (1.0 - vTex.y);
      highp vec4 tmpvar_6;
      tmpvar_6 = mix (_Color1, _Color2, vec4(tmpvar_5));
      color_4 = tmpvar_6;
      mediump float tmpvar_7;
      tmpvar_7 = vTex.x;
      noisePos_3 = tmpvar_7;
      noisePos_3 += -0.5;
      noisePos_3 = (noisePos_3 * _Size);
      noisePos_3 = (noisePos_3 + (tmpvar_5 * (_Size * _Skew)));
      noisePos_3 = (noisePos_3 * (1.0/(mix (1.0, _Shear, tmpvar_5))));
      highp vec2 tmpvar_8;
      tmpvar_8.x = noisePos_3;
      tmpvar_8.y = (seconds * _Speed);
      highp vec2 P_9;
      P_9 = tmpvar_8;
      highp vec4 gx_10;
      highp float tmpvar_11;
      tmpvar_11 = (float(mod (floor((tmpvar_8.y / 1000.0)), 2.0)));
      if ((tmpvar_11 == 0.0)) {
        P_9.y = (tmpvar_8.y - (floor(
          (tmpvar_8.y / 1000.0)
        ) * 1000.0));
      } else {
        P_9.y = (P_9.y - (floor(
          (P_9.y / 1000.0)
        ) * 1000.0));
        P_9.y = (1000.0 - P_9.y);
      };
      highp vec4 tmpvar_12;
      tmpvar_12 = (floor(P_9.xyxy) + vec4(0.0, 0.0, 1.0, 1.0));
      highp vec4 tmpvar_13;
      tmpvar_13 = (fract(P_9.xyxy) - vec4(0.0, 0.0, 1.0, 1.0));
      highp vec4 tmpvar_14;
      tmpvar_14 = tmpvar_13.xzxz;
      highp vec4 tmpvar_15;
      tmpvar_15 = tmpvar_13.yyww;
      highp vec4 tmpvar_16;
      tmpvar_16 = (((34.0 * 
        (tmpvar_12.xzxz * tmpvar_12.xzxz)
      ) + tmpvar_12.xzxz) / vec4(289.0, 289.0, 289.0, 289.0));
      highp vec4 tmpvar_17;
      tmpvar_17 = (fract(abs(tmpvar_16)) * vec4(289.0, 289.0, 289.0, 289.0));
      highp float tmpvar_18;
      if ((tmpvar_16.x >= 0.0)) {
        tmpvar_18 = tmpvar_17.x;
      } else {
        tmpvar_18 = -(tmpvar_17.x);
      };
      highp float tmpvar_19;
      if ((tmpvar_16.y >= 0.0)) {
        tmpvar_19 = tmpvar_17.y;
      } else {
        tmpvar_19 = -(tmpvar_17.y);
      };
      highp float tmpvar_20;
      if ((tmpvar_16.z >= 0.0)) {
        tmpvar_20 = tmpvar_17.z;
      } else {
        tmpvar_20 = -(tmpvar_17.z);
      };
      highp float tmpvar_21;
      if ((tmpvar_16.w >= 0.0)) {
        tmpvar_21 = tmpvar_17.w;
      } else {
        tmpvar_21 = -(tmpvar_17.w);
      };
      highp vec4 tmpvar_22;
      tmpvar_22.x = tmpvar_18;
      tmpvar_22.y = tmpvar_19;
      tmpvar_22.z = tmpvar_20;
      tmpvar_22.w = tmpvar_21;
      highp vec4 x_23;
      x_23 = (tmpvar_22 + tmpvar_12.yyww);
      highp vec4 tmpvar_24;
      tmpvar_24 = (((34.0 * 
        (x_23 * x_23)
      ) + x_23) / vec4(289.0, 289.0, 289.0, 289.0));
      highp vec4 tmpvar_25;
      tmpvar_25 = (fract(abs(tmpvar_24)) * vec4(289.0, 289.0, 289.0, 289.0));
      highp float tmpvar_26;
      if ((tmpvar_24.x >= 0.0)) {
        tmpvar_26 = tmpvar_25.x;
      } else {
        tmpvar_26 = -(tmpvar_25.x);
      };
      highp float tmpvar_27;
      if ((tmpvar_24.y >= 0.0)) {
        tmpvar_27 = tmpvar_25.y;
      } else {
        tmpvar_27 = -(tmpvar_25.y);
      };
      highp float tmpvar_28;
      if ((tmpvar_24.z >= 0.0)) {
        tmpvar_28 = tmpvar_25.z;
      } else {
        tmpvar_28 = -(tmpvar_25.z);
      };
      highp float tmpvar_29;
      if ((tmpvar_24.w >= 0.0)) {
        tmpvar_29 = tmpvar_25.w;
      } else {
        tmpvar_29 = -(tmpvar_25.w);
      };
      highp vec4 tmpvar_30;
      tmpvar_30.x = tmpvar_26;
      tmpvar_30.y = tmpvar_27;
      tmpvar_30.z = tmpvar_28;
      tmpvar_30.w = tmpvar_29;
      highp vec4 tmpvar_31;
      tmpvar_31 = ((fract(
        (tmpvar_30 / 41.0)
      ) * 2.0) - 1.0);
      highp vec4 tmpvar_32;
      tmpvar_32 = (abs(tmpvar_31) - 0.5);
      gx_10 = (tmpvar_31 - floor((tmpvar_31 + 0.5)));
      highp vec2 tmpvar_33;
      tmpvar_33.x = gx_10.x;
      tmpvar_33.y = tmpvar_32.x;
      highp vec2 tmpvar_34;
      tmpvar_34.x = gx_10.y;
      tmpvar_34.y = tmpvar_32.y;
      highp vec2 tmpvar_35;
      tmpvar_35.x = gx_10.z;
      tmpvar_35.y = tmpvar_32.z;
      highp vec2 tmpvar_36;
      tmpvar_36.x = gx_10.w;
      tmpvar_36.y = tmpvar_32.w;
      highp vec4 tmpvar_37;
      tmpvar_37.x = dot (tmpvar_33, tmpvar_33);
      tmpvar_37.y = dot (tmpvar_35, tmpvar_35);
      tmpvar_37.z = dot (tmpvar_34, tmpvar_34);
      tmpvar_37.w = dot (tmpvar_36, tmpvar_36);
      highp vec4 tmpvar_38;
      tmpvar_38 = (1.792843 - (0.8537347 * tmpvar_37));
      highp vec2 tmpvar_39;
      tmpvar_39.x = tmpvar_14.x;
      tmpvar_39.y = tmpvar_15.x;
      highp vec2 tmpvar_40;
      tmpvar_40.x = tmpvar_14.y;
      tmpvar_40.y = tmpvar_15.y;
      highp vec2 tmpvar_41;
      tmpvar_41.x = tmpvar_14.z;
      tmpvar_41.y = tmpvar_15.z;
      highp vec2 tmpvar_42;
      tmpvar_42.x = tmpvar_14.w;
      tmpvar_42.y = tmpvar_15.w;
      highp vec2 tmpvar_43;
      tmpvar_43 = (((6.0 * 
        pow (tmpvar_13.xy, vec2(5.0, 5.0))
      ) - (15.0 * 
        pow (tmpvar_13.xy, vec2(4.0, 4.0))
      )) + (10.0 * pow (tmpvar_13.xy, vec2(3.0, 3.0))));
      highp vec2 tmpvar_44;
      tmpvar_44.x = dot ((tmpvar_33 * tmpvar_38.x), tmpvar_39);
      tmpvar_44.y = dot ((tmpvar_35 * tmpvar_38.y), tmpvar_41);
      highp vec2 tmpvar_45;
      tmpvar_45.x = dot ((tmpvar_34 * tmpvar_38.z), tmpvar_40);
      tmpvar_45.y = dot ((tmpvar_36 * tmpvar_38.w), tmpvar_42);
      highp vec2 tmpvar_46;
      tmpvar_46 = mix (tmpvar_44, tmpvar_45, tmpvar_43.xx);
      val_2 = ((_Contrast * (
        (((2.3 * mix (tmpvar_46.x, tmpvar_46.y, tmpvar_43.y)) / 2.0) + 0.5)
       - 0.5)) + 0.5);
      color_4.w = (tmpvar_6.w * mix (val_2, (val_2 * vTex.y), _Fade));
      tmpvar_1 = color_4;
      gl_FragColor = tmpvar_1;
    }[/code:1b3wj5a3]
    
    (EDIT) The effect have been uploaded below
  • bump

  • Rebump

  • iyenal222

    Can you PM me with the original code... please ?

    go to glslsandbox.com

    create new effect and paste entire code here to test it:

    if you define precision like this ; precision mediump float; or precision highp float; or precision lowp float;

    no need to declare variable like that :

    ///

    lowp vec4 tmpvar_1;

    highp float val_2;

    highp float noisePos_3;

    highp vec4 color_4;

    ///

    remove precision attribute ;

    to ;

    vec4 tmpvar_1;

    float val_2;

    float noisePos_3;

    vec4 color_4;

    And if the platform is IOS you must declare variables correctly like that :

    vec4 tmpvar_1 = vec4 (0.0,0.0,0.0,0.0);

    float val_2 =0.0;

    float noisePos_3 = 0.0;

    vec4 color_4 = vec4 (1.0,0.0,1.0,1.0); //

    etc .....

    #ifdef GL_ES
    precision mediump float;
    #endif
    
    #extension GL_OES_standard_derivatives : enable
    
    uniform float time;
    uniform vec2 mouse;
    uniform vec2 resolution;
    
      float seconds=0.96;
      float _Speed=2.;
      float _Size=2.;
      float _Skew=1.0;
      float _Shear=0.0;
      float _Fade=2.0;
      float _Contrast=2.0;
     
    
        void main ()
        {
          vec2 vTex = 2.*gl_FragCoord.xy/resolution.xy;
          vec4 _Color1;
          vec4 _Color2;
          _Color1 = vec4(0.100000,1.000000,1.000000,1.000000);
          _Color2 = vec4(0.000000,0.460000,1.000000,0.000000);
          lowp vec4 tmpvar_1;
          highp float val_2;
          highp float noisePos_3;
          highp vec4 color_4;
          mediump float tmpvar_5;
          tmpvar_5 = (1.0 - vTex.y);
          highp vec4 tmpvar_6;
          tmpvar_6 = mix (_Color1, _Color2, vec4(tmpvar_5));
          color_4 = tmpvar_6;
          mediump float tmpvar_7;
          tmpvar_7 = vTex.x;
          noisePos_3 = tmpvar_7;
          noisePos_3 += -0.5;
          noisePos_3 = (noisePos_3 * _Size);
          noisePos_3 = (noisePos_3 + (tmpvar_5 * (_Size * _Skew)));
          noisePos_3 = (noisePos_3 * (1.0/(mix (1.0, _Shear, tmpvar_5))));
          highp vec2 tmpvar_8;
          tmpvar_8.x = noisePos_3;
          tmpvar_8.y = (time * _Speed);
          highp vec2 P_9;
          P_9 = tmpvar_8;
          highp vec4 gx_10;
          highp float tmpvar_11;
          tmpvar_11 = (float(mod (floor((tmpvar_8.y / 1000.0)), 2.0)));
          if ((tmpvar_11 == 0.0)) {
            P_9.y = (tmpvar_8.y - (floor(
              (tmpvar_8.y / 1000.0)
            ) * 1000.0));
          } else {
            P_9.y = (P_9.y - (floor(
              (P_9.y / 1000.0)
            ) * 1000.0));
            P_9.y = (1000.0 - P_9.y);
          };
          highp vec4 tmpvar_12;
          tmpvar_12 = (floor(P_9.xyxy) + vec4(0.0, 0.0, 1.0, 1.0));
          highp vec4 tmpvar_13;
          tmpvar_13 = (fract(P_9.xyxy) - vec4(0.0, 0.0, 1.0, 1.0));
          highp vec4 tmpvar_14;
          tmpvar_14 = tmpvar_13.xzxz;
          highp vec4 tmpvar_15;
          tmpvar_15 = tmpvar_13.yyww;
          highp vec4 tmpvar_16;
          tmpvar_16 = (((34.0 *
            (tmpvar_12.xzxz * tmpvar_12.xzxz)
          ) + tmpvar_12.xzxz) / vec4(289.0, 289.0, 289.0, 289.0));
          highp vec4 tmpvar_17;
          tmpvar_17 = (fract(abs(tmpvar_16)) * vec4(289.0, 289.0, 289.0, 289.0));
          highp float tmpvar_18;
          if ((tmpvar_16.x >= 0.0)) {
            tmpvar_18 = tmpvar_17.x;
          } else {
            tmpvar_18 = -(tmpvar_17.x);
          };
          highp float tmpvar_19;
          if ((tmpvar_16.y >= 0.0)) {
            tmpvar_19 = tmpvar_17.y;
          } else {
            tmpvar_19 = -(tmpvar_17.y);
          };
          highp float tmpvar_20;
          if ((tmpvar_16.z >= 0.0)) {
            tmpvar_20 = tmpvar_17.z;
          } else {
            tmpvar_20 = -(tmpvar_17.z);
          };
          highp float tmpvar_21;
          if ((tmpvar_16.w >= 0.0)) {
            tmpvar_21 = tmpvar_17.w;
          } else {
            tmpvar_21 = -(tmpvar_17.w);
          };
          highp vec4 tmpvar_22;
          tmpvar_22.x = tmpvar_18;
          tmpvar_22.y = tmpvar_19;
          tmpvar_22.z = tmpvar_20;
          tmpvar_22.w = tmpvar_21;
          highp vec4 x_23;
          x_23 = (tmpvar_22 + tmpvar_12.yyww);
          highp vec4 tmpvar_24;
          tmpvar_24 = (((34.0 *
            (x_23 * x_23)
          ) + x_23) / vec4(289.0, 289.0, 289.0, 289.0));
          highp vec4 tmpvar_25;
          tmpvar_25 = (fract(abs(tmpvar_24)) * vec4(289.0, 289.0, 289.0, 289.0));
          highp float tmpvar_26;
          if ((tmpvar_24.x >= 0.0)) {
            tmpvar_26 = tmpvar_25.x;
          } else {
            tmpvar_26 = -(tmpvar_25.x);
          };
          highp float tmpvar_27;
          if ((tmpvar_24.y >= 0.0)) {
            tmpvar_27 = tmpvar_25.y;
          } else {
            tmpvar_27 = -(tmpvar_25.y);
          };
          highp float tmpvar_28;
          if ((tmpvar_24.z >= 0.0)) {
            tmpvar_28 = tmpvar_25.z;
          } else {
            tmpvar_28 = -(tmpvar_25.z);
          };
          highp float tmpvar_29;
          if ((tmpvar_24.w >= 0.0)) {
            tmpvar_29 = tmpvar_25.w;
          } else {
            tmpvar_29 = -(tmpvar_25.w);
          };
          highp vec4 tmpvar_30;
          tmpvar_30.x = tmpvar_26;
          tmpvar_30.y = tmpvar_27;
          tmpvar_30.z = tmpvar_28;
          tmpvar_30.w = tmpvar_29;
          highp vec4 tmpvar_31;
          tmpvar_31 = ((fract(
            (tmpvar_30 / 41.0)
          ) * 2.0) - 1.0);
          highp vec4 tmpvar_32;
          tmpvar_32 = (abs(tmpvar_31) - 0.5);
          gx_10 = (tmpvar_31 - floor((tmpvar_31 + 0.5)));
          highp vec2 tmpvar_33;
          tmpvar_33.x = gx_10.x;
          tmpvar_33.y = tmpvar_32.x;
          highp vec2 tmpvar_34;
          tmpvar_34.x = gx_10.y;
          tmpvar_34.y = tmpvar_32.y;
          highp vec2 tmpvar_35;
          tmpvar_35.x = gx_10.z;
          tmpvar_35.y = tmpvar_32.z;
          highp vec2 tmpvar_36;
          tmpvar_36.x = gx_10.w;
          tmpvar_36.y = tmpvar_32.w;
          highp vec4 tmpvar_37;
          tmpvar_37.x = dot (tmpvar_33, tmpvar_33);
          tmpvar_37.y = dot (tmpvar_35, tmpvar_35);
          tmpvar_37.z = dot (tmpvar_34, tmpvar_34);
          tmpvar_37.w = dot (tmpvar_36, tmpvar_36);
          highp vec4 tmpvar_38;
          tmpvar_38 = (1.792843 - (0.8537347 * tmpvar_37));
          highp vec2 tmpvar_39;
          tmpvar_39.x = tmpvar_14.x;
          tmpvar_39.y = tmpvar_15.x;
          highp vec2 tmpvar_40;
          tmpvar_40.x = tmpvar_14.y;
          tmpvar_40.y = tmpvar_15.y;
          highp vec2 tmpvar_41;
          tmpvar_41.x = tmpvar_14.z;
          tmpvar_41.y = tmpvar_15.z;
          highp vec2 tmpvar_42;
          tmpvar_42.x = tmpvar_14.w;
          tmpvar_42.y = tmpvar_15.w;
          highp vec2 tmpvar_43;
          tmpvar_43 = (((6.0 *
            pow (tmpvar_13.xy, vec2(5.0, 5.0))
          ) - (15.0 *
            pow (tmpvar_13.xy, vec2(4.0, 4.0))
          )) + (10.0 * pow (tmpvar_13.xy, vec2(3.0, 3.0))));
          highp vec2 tmpvar_44;
          tmpvar_44.x = dot ((tmpvar_33 * tmpvar_38.x), tmpvar_39);
          tmpvar_44.y = dot ((tmpvar_35 * tmpvar_38.y), tmpvar_41);
          highp vec2 tmpvar_45;
          tmpvar_45.x = dot ((tmpvar_34 * tmpvar_38.z), tmpvar_40);
          tmpvar_45.y = dot ((tmpvar_36 * tmpvar_38.w), tmpvar_42);
          highp vec2 tmpvar_46;
          tmpvar_46 = mix (tmpvar_44, tmpvar_45, tmpvar_43.xx);
          val_2 = ((_Contrast * (
            (((2.3 * mix (tmpvar_46.x, tmpvar_46.y, tmpvar_43.y)) / 2.0) + 0.5)
           - 0.5)) + 0.5);
          color_4.y = (tmpvar_6.w * mix (val_2, (val_2 * vTex.y), _Fade));
          tmpvar_1 = color_4;
          gl_FragColor = tmpvar_1;
        }[/code:2u9acbqw]
  • I can't PM you, sorry, I don't have enough reputation.

    Here's the original code :

    //From https://ax23w4.itch.io/lightrays-2d-effect
     
    Shader "Custom/LightRays"{
        Properties{
            _Color1("Color1",Color)=(0.1,1,1,1)
            _Color2("Color2",Color)=(0,0.46,1,0)
            _Speed("Speed",Range(0,5.0))=0.5
            _Size("Size",Range(1.0,30.0))=15.0
            _Skew("Skew",Range(-1.0,1.0))=0.5
            _Shear("Shear",Range(0.0,5.0))=1.0
            _Fade("Fade",Range(0.0,1.0))=1.0
            _Contrast("Contrast",Range(0.0,50.0))=1.0
        }
        SubShader{
            Tags{
                "Queue"="Transparent"
                "IgnoreProjector"="True"
                "RenderType"="Transparent"
                "PreviewType"="Plane"
            }
            ZWrite On Lighting Off Cull Off Fog {Mode Off} Blend One Zero
            Pass{
                Blend SrcAlpha OneMinusSrcAlpha
                CGPROGRAM
                #pragma vertex vert_img
                #pragma fragment frag
                #include "UnityCG.cginc"
     
                float4 permute(float4 x){
                    return fmod(34.0*pow(x,2)+x,289.0);
                }
     
                float2 fade(float2 t){
                    return 6.0*pow(t,5.0)-15.0*pow(t,4.0)+10.0*pow(t,3.0);
                }
     
                float4 taylorInvSqrt(float4 r){
                    return 1.79284291400159-0.85373472095314*r;
                }
     
                #define DIV_289 0.00346020761245674740484429065744f
     
                float mod289(float x){
                    return x-floor(x*DIV_289)*289.0;
                }
     
                #define REPEAT_Y 1000.0
     
                float PerlinNoise2D(float2 P){
                    //Mirror the pattern on large Y number
                    if(floor(P.y/REPEAT_Y)%2==0){
                        P.y-=floor(P.y/REPEAT_Y)*REPEAT_Y;
                    }else{
                        P.y-=floor(P.y/REPEAT_Y)*REPEAT_Y;
                        P.y=REPEAT_Y-P.y;
                    }
                    float4 Pi=floor(P.xyxy)+float4(0.0,0.0,1.0,1.0);
                    float4 Pf=frac(P.xyxy)-float4(0.0,0.0,1.0,1.0);
                    float4 ix=Pi.xzxz;
                    float4 iy=Pi.yyww;
                    float4 fx=Pf.xzxz;
                    float4 fy=Pf.yyww;
                    float4 i=permute(permute(ix)+iy);
                    float4 gx=frac(i/41.0)*2.0-1.0;
                    float4 gy=abs(gx)-0.5;
                    float4 tx=floor(gx+0.5);
                    gx=gx-tx;
                    float2 g00=float2(gx.x,gy.x);
                    float2 g10=float2(gx.y,gy.y);
                    float2 g01=float2(gx.z,gy.z);
                    float2 g11=float2(gx.w,gy.w);
                    float4 norm=taylorInvSqrt(float4(dot(g00,g00),dot(g01,g01),dot(g10,g10),dot(g11,g11)));
                    g00*=norm.x;
                    g01*=norm.y;
                    g10*=norm.z;
                    g11*=norm.w;
                    float n00=dot(g00,float2(fx.x,fy.x));
                    float n10=dot(g10,float2(fx.y,fy.y));
                    float n01=dot(g01,float2(fx.z,fy.z));
                    float n11=dot(g11,float2(fx.w,fy.w));
                    float2 fade_xy=fade(Pf.xy);
                    float2 n_x=lerp(float2(n00, n01),float2(n10, n11),fade_xy.x);
                    float n_xy=lerp(n_x.x,n_x.y,fade_xy.y);
                    return 2.3*n_xy;
                }
     
                float4 _Color1;
                float4 _Color2;
                float _Speed;
                float _Size;
                float _Skew;
                float _Shear;
                float _Fade;
                float _Contrast;
     
                fixed4 frag (v2f_img i):SV_Target{
                    float4 color=lerp(_Color1,_Color2,1-i.uv.y);
                    float noisePos=i.uv.x;
                    noisePos+=-0.5;
                    noisePos*=_Size;
                    noisePos+=(1-i.uv.y)*(_Size*_Skew);
                    noisePos*=1/lerp(1,_Shear,1-i.uv.y);
                    float val=PerlinNoise2D(float2(noisePos,_Time.y*_Speed)) / 2 + 0.5f;
                    val=_Contrast*(val-0.5)+0.5;
                    color.a*=lerp(val,val*i.uv.y,_Fade);
                    return color;
                }
                ENDCG
            }
        }
    }[/code:ihoa70sn]
    
    Thanks very much for you help, Gigatron !
    Now it works as a light rays :
    [img="https://s7.postimg.org/3uvkrg9uj/Capture.png"]
    But it's a little weird compared to the original result :
    [img="https://img.itch.zone/aW1hZ2UvMTI4MTEwLzU4OTY1OC5naWY=/347x500/ll8oV5.gif"]
    And in C2, it's pink...
  • iyenal222

    Hope it's now converted ...

    http://glslsandbox.com/e#39979.1

    After this easy to convert to C2

    Regards

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Really, thank you very much Gigatron ! It is working as I waited.

    You have worked so much on it I can't thank you enough.

    I will publish in the next post the final C2 shader.

  • iyenal222

    Happy to have helped you. I love to help people ...

    Human brain have no limit ... The limit is himself.

  • So here's the effect file of the light rays shader (beta):

    1drv.ms/u/s!AlDGczITUGYolHFbV6wf6jjJDF-W

    Try many values, but the alpha isn't implemented for now.

  • Great! wait for the alpha~

Jump to:
Active Users
There are 1 visitors browsing this topic (0 users and 1 guests)