Jump to content

Pixi v4 Shaders


Lathander
 Share

Recommended Posts

Hello,

I recently started to experiment a little bit with HTML5 Game Development.

Now I found a some Lightmapping Shader Example on the Internet, which is build on Pixi v3. 

I currently use Pixi v4 and I dont get the example to work, since it looks like they changed a lot on shaders since v3. 

This is the website with the example code: http://codepen.io/Oza94/pen/EPoRxj

Here is the code I am executing: 

/**
 * Created by Fabien on 07.09.2016.
 */

var lightUrl = 'data:image/png;base64,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';
var tiledmapUrl = 'data:image/png;base64,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';

var fragmentShader = [
    'precision mediump float;',
    'varying vec4 vColor;',
    'varying vec2 vTextureCoord;',
    'uniform sampler2D u_texture; //diffuse map',
    'uniform sampler2D u_lightmap;   //light map',
    'uniform vec2 resolution; //resolution of screen',
    'uniform vec4 ambientColor; //ambient RGB, alpha channel is intensity ',
    'void main() {',
    '    vec4 diffuseColor = texture2D(u_texture, vTextureCoord);',
    '    vec2 lighCoord = (gl_FragCoord.xy / resolution.xy);',
    '    vec4 light = texture2D(u_lightmap, vTextureCoord);',
    '    vec3 ambient = ambientColor.rgb * ambientColor.a;',
    '    vec3 intensity = ambient + light.rgb;',
    '    vec3 finalColor = diffuseColor.rgb * intensity;',
    '    gl_FragColor = vColor * vec4(finalColor, diffuseColor.a);',
    '}'
].join('\n');

function defaultValue(inputValue, defaultValue) {
    inputValue = typeof inputValue !== 'undefined' ? inputValue : defaultValue;
    return inputValue;
}


function LightmapFilter(lightmapTex, ambientColor, resolution) {
    this.lightmapTex = lightmapTex;


    ambientColor = defaultValue(ambientColor, [0.3, 0.3, 0.7, 0.5]);
    resolution = defaultValue(resolution, [1.0, 1.0]);

    PIXI.AbstractFilter.call(
        this,
        null,
        fragmentShader,
        {
            u_lightmap: {
                type: 'sampler2D',
                value: lightmapTex
            },
            resolution: {
                type: '2f',
                value: new Float32Array(resolution)
            },
            ambientColor: {
                type: '4f',
                value: new Float32Array(ambientColor)
            }
        });
}

LightmapFilter.prototype = Object.create(PIXI.AbstractFilter.prototype);
LightmapFilter.prototype.constructor = LightmapFilter;


// need to preload fucking image since RenderTexture does not support async loading
var img = new Image();
img.crossOrigin = "Anonymous";
img.src = lightUrl;
img.onload = function () {
    var stage = new PIXI.Container();

    // create a renderer instance.
    var renderer = PIXI.autoDetectRenderer(400, 300);

    // draw lightmap on this render target
    var renderTexture = new PIXI.RenderTexture(renderer, 400, 300);

    // tex creation
    var lightBaseTexture = new PIXI.BaseTexture(img);
    var lightTexture = new PIXI.Texture(lightBaseTexture);
    var lightTexture2 = new PIXI.Texture(lightBaseTexture);

    var lightSprite = new PIXI.Sprite(lightTexture);
    var lightSprite2 = new PIXI.Sprite(lightTexture2);

    // ADDITIVE blend mode for pretty intersecting lights
    lightSprite.blendMode = PIXI.BLEND_MODES.ADD;
    lightSprite2.blendMode = PIXI.BLEND_MODES.ADD;

    // move a little bit one light on right to check proper lights intersect
    lightSprite.x = 100;

    // back background of the lightmap
    var lightmapBg = new PIXI.Graphics();
    lightmapBg.beginFill(0x000000);
    lightmapBg.drawRect(0, 0, 400, 300); // size of our renderer
    lightmapBg.endFill();

    // create the lightmap
    var lightmapContainer = new PIXI.Container();
    lightmapContainer.addChild(lightmapBg);
    lightmapContainer.addChild(lightSprite);
    lightmapContainer.addChild(lightSprite2);
    renderTexture.render(lightmapContainer);

    // here is our map, a simple texture for the example
    var tiledmapSprite = new PIXI.Sprite.fromImage(tiledmapUrl);

    // tada magic - apply our lightmap to our tiledmap
    tiledmapSprite.filters = [new LightmapFilter(renderTexture)];

    // add the tiledmap to stage
    stage.addChild(tiledmapSprite);

    document.body.appendChild(renderer.view);

    // rendering code
    requestAnimationFrame( animate );

    function animate() {

        requestAnimationFrame( animate );

        // render the stage
        renderer.render(stage);
    }
};

If I try to run this Pixi v4 I get the following error: 

gl.getProgramInfoLog() Varyings with the same name but different type, or statically used varyings in fragment shader are not declared in vertex shader: vColor

this is why I changed the code to this: 

var fragmentShader = [
    'precision mediump float;',
    'varying vec4 vColor;',
    'varying vec2 vTextureCoord;',
    'uniform sampler2D u_texture; //diffuse map',
    'uniform sampler2D u_lightmap;   //light map',
    'uniform vec2 resolution; //resolution of screen',
    'uniform vec4 ambientColor; //ambient RGB, alpha channel is intensity ',
    'void main() {',
    '    vec4 diffuseColor = texture2D(u_texture, vTextureCoord);',
    '    vec2 lighCoord = (gl_FragCoord.xy / resolution.xy);',
    '    vec4 light = texture2D(u_lightmap, vTextureCoord);',
    '    vec3 ambient = ambientColor.rgb * ambientColor.a;',
    '    vec3 intensity = ambient + light.rgb;',
    '    vec3 finalColor = diffuseColor.rgb * intensity;',
    '    gl_FragColor = vColor * vec4(finalColor, diffuseColor.a);',
    '}'
].join('\n');

var vertexShader = [
    'precision lowp float;',
    'attribute vec2 aVertexPosition;',
    'attribute vec2 aTextureCoord;',
    'attribute vec4 aColor;',

    'uniform mat3 projectionMatrix;',

    'varying vec2 vTextureCoord;',
    'varying vec4 vColor;',

    'void main(void){',
    '   gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);',
    '   vTextureCoord = aTextureCoord;',
    '   vColor = vec4(aColor.rgb * aColor.a, aColor.a);',
    '}'
].join('\n');

function defaultValue(inputValue, defaultValue) {
    inputValue = typeof inputValue !== 'undefined' ? inputValue : defaultValue;
    return inputValue;
}

function LightmapFilter(lightmapTex, ambientColor, resolution) {
    this.lightmapTex = lightmapTex;


    ambientColor = defaultValue(ambientColor, [0.3, 0.3, 0.7, 0.5]);
    resolution = defaultValue(resolution, [1.0, 1.0]);

    PIXI.Filter.call(
        this,
        vertexShader,
        fragmentShader,
        {
            u_lightmap: {
                type: 'sampler2D',
                value: lightmapTex
            },
            resolution: {
                type: '2f',
                value: new Float32Array(resolution)
            },
            ambientColor: {
                type: '4f',
                value: new Float32Array(ambientColor)
            }
        });
}

LightmapFilter.prototype = Object.create(PIXI.Filter.prototype);
LightmapFilter.prototype.constructor = LightmapFilter;


// need to preload fucking image since RenderTexture does not support async loading
var img = new Image();
img.crossOrigin = "Anonymous";
img.src = "assets/lightSource.png";
img.onload = function () {
    var stage = new PIXI.Container();

    // create a renderer instance.
    var renderer = PIXI.autoDetectRenderer(400, 300);

    // draw lightmap on this render target
    // var renderTexture = new PIXI.RenderTexture(renderer, 400, 300);
    var renderTexture = PIXI.RenderTexture.create(400,300);

    // tex creation
    var lightBaseTexture = new PIXI.BaseTexture(img);
    var lightTexture = new PIXI.Texture(lightBaseTexture);
    var lightTexture2 = new PIXI.Texture(lightBaseTexture);

    var lightSprite = new PIXI.Sprite(lightTexture);
    var lightSprite2 = new PIXI.Sprite(lightTexture2);

    // ADDITIVE blend mode for pretty intersecting lights
    lightSprite.blendMode = PIXI.BLEND_MODES.ADD;
    lightSprite2.blendMode = PIXI.BLEND_MODES.ADD;

    // move a little bit one light on right to check proper lights intersect
    lightSprite.x = 100;

    // back background of the lightmap
    var lightmapBg = new PIXI.Graphics();
    lightmapBg.beginFill(0x000000);
    lightmapBg.drawRect(0, 0, 400, 300); // size of our renderer
    lightmapBg.endFill();

    // create the lightmap
    var lightmapContainer = new PIXI.Container();
    lightmapContainer.addChild(lightmapBg);
    lightmapContainer.addChild(lightSprite);
    lightmapContainer.addChild(lightSprite2);
    //renderTexture.render(lightmapContainer);
    renderer.render(lightmapContainer,renderTexture);

    // here is our map, a simple texture for the example
    var tiledmapSprite = new PIXI.Sprite.fromImage("assets/tileMap.png");

    // tada magic - apply our lightmap to our tiledmap
    tiledmapSprite.filters = [new LightmapFilter(renderTexture)];

    // add the tiledmap to stage
    stage.addChild(tiledmapSprite);

    document.body.appendChild(renderer.view);

    // rendering code
    requestAnimationFrame(animate);

    function animate() {

        requestAnimationFrame(animate);

        // render the stage
        renderer.render(stage);
    }
};

Now no more error pops up, but the screen stays black. 

screen0.jpg

This screen shows the error message

screen1.jpg

This screen shows the error log after my "fix" 

 

screen2.jpg

This last screenshot shows how it just works with pixi v3

Hopefully someone can help

 

Thank you in advance 

Lathander

Link to comment
Share on other sites

I'm working on addon for pixi-display plugin right now. It will be available in two days or so, and it'll be easy to use, no need of knowing all these stuff. Basically, you'll be able to apply any filters and blendmodes on the scene in a bulk. 100 lights? Ok, it will work just fine.

Your plugin will be first to use that, then I'll ask guys if its worth to putting into vanilla RPGMV :)

Link to comment
Share on other sites

  • 1 month later...
1 hour ago, ruslanchek said:

Sounds good! So, why vColor is not available now in PIXI v4? 

Filters used to use the "texture shader" by default, which was the default shader we used for Sprites. It had vColor because Sprites have tint. The reality is, Filters don't have tint so it doesn't make sense for it to be there. The default vertex shader used for Filters in v4 can be found here:

https://github.com/pixijs/pixi.js/blob/3f05bf1284035d25a8f483b278d4dc377b1d23be/src/core/renderers/webgl/filters/Filter.js#L112

Along with the default fragment shader shortly after.

Link to comment
Share on other sites

i wonder how fast with shader in pixi.to make game with mobile.

i'm saving using shader.. 

if function that create by shader, can make with image or hard working, i will do now..

but sometimes i concern which one is good to use between performance(optimization) and easy or good expression

can you give me answer?

how fast with shader specially on mobile like ios,android(pc is not becuase it's as fast as we make  game)

thx..!

Link to comment
Share on other sites

On 10/19/2016 at 6:36 PM, xerver said:

Filters used to use the "texture shader" by default, which was the default shader we used for Sprites. It had vColor because Sprites have tint. The reality is, Filters don't have tint so it doesn't make sense for it to be there. The default vertex shader used for Filters in v4 can be found here:

https://github.com/pixijs/pixi.js/blob/3f05bf1284035d25a8f483b278d4dc377b1d23be/src/core/renderers/webgl/filters/Filter.js#L112

Along with the default fragment shader shortly after.

Thank you! I have founded it.

Link to comment
Share on other sites

  • 2 months later...
On 10/19/2016 at 9:34 AM, xerver said:

Since there was so much interest in this thread, I went ahead and updated this example for v4.1.0:

https://jsfiddle.net/4kpqd3mt/1/

Note that the light's border artifacts are just because of the image used and not the shader. The image itself actually has hard edges for the light.

Thank you, you save a week of my work I think 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...