pixijs / layers

Separate the z-hierarchy of your scene tree from its canonical structure.
https://pixijs.io/layers/docs/
MIT License
222 stars 57 forks source link

Render resolution #39

Closed ghost closed 5 years ago

ghost commented 5 years ago

Hello I'm trying to pass resolution param in that example https://pixijs.io/examples/#/layers/normals.js, for correct support retina and etc.

 const options = {
    width,
    height,
    resolution: window.devicePixelRatio || 1
};

const app = new PIXI.Application(options);
document.body.appendChild(app.view);
...

But unfortunately cursor position is incorrect detected. Could you please chech it. Thanks!

ghost commented 5 years ago

any ideas?

ivanpopelyshev commented 5 years ago

what about autoResize, CSS set width/height, like pixi does it?

Or it could be something like InteractionManager.mapPositionToXXX doesn't work or something like that. Plugin overrides a few functions inside InteractionManager.

ivanpopelyshev commented 5 years ago

OK, I put this in example, and it doesn't work:

var app = new PIXI.Application(WIDTH, HEIGHT, {resolution:2, autoResize:true});

I guess something is wrong with getRenderTexture() for this plugin. Unfortunately, I do not have time to investigate it because I'm working on v5 release. As soon as v5 is released, I'm gonna start coding streams where I remake pixi-display and other plugins for v5.

I guess its something in https://github.com/pixijs/pixi-display/blob/layers/src/Layer.ts#L6

TombolaShepless commented 5 years ago

@evgkfx did you ever find a work around to this issue? We're faving the same and would really like to us some nice lighting effects

ivanpopelyshev commented 5 years ago

Still working on v5.

@TombolaShepless getRenderTexture() code is not that difficult, you can try to debug that stuff

TombolaShepless commented 5 years ago

@ivanpopelyshev I'm pretty new to PIXI so I'm trying. So far I've found that the invocation of PIXI.RenderTexture.create() is not passing the right arguments, its currently passing:

this.renderTexture = PIXI.RenderTexture.create(width, height, resolution);

but according to the PIXI docs, resolution is the 4th arg and the 3rd is SCALE_MODE. I've updated the code to:

this.renderTexture = PIXI.RenderTexture.create(width, height, PIXI.settings.SCALE_MODE, resolution);

but the output is the same. Not sure where to go from here TBH

TombolaShepless commented 5 years ago

Step through it pretty much line-by-line and I can't for the life of me see what else could be wrong other than the above. Any more pointers in a general direction @ivanpopelyshev ?

ivanpopelyshev commented 5 years ago

You've done the ritual. I'm looking at it.

TombolaShepless commented 5 years ago

Thanks bud, I really appreciate the help. Sorry I couldn't be more use 😞

ivanpopelyshev commented 5 years ago

Actually your fix works, @TombolaShepless . But it doesnt work with pixi-lights. Do you need it with pixi-lights?

TombolaShepless commented 5 years ago

Yeah with pixi-lights. Do you know why it doesn't work?

@ivanpopelyshev I think its these two lines, here and here

Bu I'm not expert. It seems to fix the renderTexture size by multiplying by resolution however the light positions are not correct

ivanpopelyshev commented 5 years ago

Of course! it has one uniform in light shader that means both "size in pixels" and "size in CSS" :)

TombolaShepless commented 5 years ago

this?

I have no idea what to change there - thats far beyond my knowledge and understanding lol

ivanpopelyshev commented 5 years ago

Here, try change resolution in first line: https://pixijs.io/examples/#/layers/normals-drag.js

It uses https://pixijs.io/examples/pixi-plugins/pixi-lights.js and https://pixijs.io/examples/pixi-plugins/pixi-layers.js

I'll republish layers now, as for lights, we'll have to wait someone else.

ivanpopelyshev commented 5 years ago

Yeah, you've found whats wrong with pixi-layers, good job!

As for lights improvement, i'll do it after v5 release and after i move layers to v5. There'll be new demos!

Lights are experimental stuff, its very hard to add them as well as other experimental plugins: projections, heaven. @djmisterjon knows more than others about it. Do you want an invite to pixijs slack? send me an email if you want it.