Customise Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorised as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyse the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customised advertisements based on the pages you visited previously and to analyse the effectiveness of the ad campaigns.

No cookies to display.

[ad_1]

I am making an attempt to recreate the next shader from shadertoy utilizing Phaser 3:
https://www.shadertoy.com/view/wdG3Rz

I managed to repair the errors I used to be getting but it surely simply masses an empty black sq. when making an attempt to load it on my scene. Here is a pattern code:

const fragmentShader = `
#ifdef GL_ES
precision mediump float;
#endif

uniform float time;
uniform vec2 decision;
uniform sampler2D iChannel0;
uniform sampler2D iChannel1;
uniform sampler2D iChannel2;

various vec2 fragCoord;

float avg(vec4 coloration) {
    return (coloration.r + coloration.g + coloration.b)/3.0;
}

void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
    // Stream Velocity, enhance to make the water circulation sooner.
    float pace = 1.0;
    
    // Water Scale, scales the water, not the background.
    float scale = 0.8;
    
    // Water opacity, greater opacity means the water displays extra gentle.
    float opacity = 0.5;
 
    // Normalized pixel coordinates (from 0 to 1)
    vec2 uv = (fragCoord/decision.xy);
    vec2 scaledUv = uv*scale;

    // Water layers, layered on prime of eachother to provide the reflective impact
    // Add 0.1 to each uv vectors to keep away from the layers stacking completely and creating an enormous unnatural spotlight
    vec4 water1 = texture2D(iChannel0, scaledUv + time*0.02*pace - 0.1);
    vec4 water2 = texture2D(iChannel0, scaledUv.xy + time*pace*vec2(-0.02, -0.02) + 0.1);
    
    // Water highlights
    vec4 highlights1 = texture2D(iChannel2, scaledUv.xy + time*pace / vec2(-10, 100));
    vec4 highlights2 = texture2D(iChannel2, scaledUv.xy + time*pace / vec2(10, 100));
    
    // Background picture
    vec4 background = texture2D(iChannel1, vec2(uv) + avg(water1) * 0.05);
    
    // Common the colours of the water layers (convert from 1 channel to 4 channel
    water1.rgb = vec3(avg(water1));
    water2.rgb = vec3(avg(water2));
    
    // Common and easy the colours of the spotlight layers
    highlights1.rgb = vec3(avg(highlights1)/1.5);
    highlights2.rgb = vec3(avg(highlights2)/1.5);
    
    float alpha = opacity;
    
    if(avg(water1 + water2) > 0.3) {
        alpha = 0.0;
    }
    
    if(avg(water1 + water2 + highlights1 + highlights2) > 0.75) {
        alpha = 5.0 * opacity;
    }

    // Output to display
    fragColor = (water1 + water2) * alpha + background;
}

void principal(void)
{
    mainImage(gl_FragColor, fragCoord.xy);
    gl_FragColor.a = 1.0;
}
`;

class Instance extends Phaser.Scene {
  constructor() {
    tremendous("Instance");
  }

  preload() {
    this.load.picture("noise", "https://i.imgur.com/pZfKeRP.png");
    this.load.picture("pic", "https://i.imgur.com/NQFMq6r.jpg");
    this.load.picture("rocks", "https://i.imgur.com/fvHGrrU.png");
  }

  create() {
    const baseShader = new Phaser.Show.BaseShader(
      "BufferShader",
      fragmentShader
    );
    this.add
      .shader(baseShader, 0, 0, 800, 600, ["noise", "pic", "rocks"])
      .setOrigin(0, 0);
  }
}

const config = {
  kind: Phaser.WEBGL,
  mum or dad: "phaser-example",
  width: 800,
  peak: 600,
  scene: Instance
};

const sport = new Phaser.Recreation(config);

Is there something I am doing unsuitable? Here is the identical pattern codepen so you possibly can see the issue.
https://codepen.io/javiervd/pen/ExMmeYY?editors=1011

Thanks.

[ad_2]

Leave a Reply

Your email address will not be published. Required fields are marked *