Pixi.js: Pixi.js рдХреЗ рдЕрдВрджрд░ рддреАрди.js рд░реЗрдВрдбрд░ рдХрд░реЗрдВ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 6 рдлрд╝рд░ре░ 2019  ┬╖  11рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: pixijs/pixi.js

рдЕрд░реЗ! рдореИрдВ pixi.js рдХреЗ рдЕрдВрджрд░ рдПрдХ рддреАрдиред Js рдХреЗ рджреГрд╢реНрдп рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЗрд╕реЗ рдкреЛрд╕реНрдЯрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рддрд░реАрдХреЗ рд╕реЗ рдХреБрдЫ рдлрд┐рд▓реНрдЯрд░ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИ?

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ , рдпрд╣рд╛рдВ рдореВрд▓ рд░реВрдк рд╕реЗ рдореИрдВ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдореИрдВ рдПрдХ рдСрдлрд╕реНрдХреНрд░реАрди рдХреИрдирд╡рд╛рд╕ рдкрд░ рддреАрди in.js рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдлрд┐рд░:

const threeTexture = PIXI.Texture.from(threeApp.renderer.domElement)
const threeSprite = new PIXI.Sprite(threeTexture)
// divide by pixelratio to make it the correct size, on retinas it's 2
threeSprite.scale.x /= window.devicePixelRatio
threeSprite.scale.y /= window.devicePixelRatio
pixiApp.stage.addChild(threeSprite)

рдФрд░ рдлрд┐рд░ рдореЗрд░реЗ рдкрд╛рд╕ рд░реЗрдВрдбрд░ рд▓реВрдк рдореЗрдВ рд╣реИ

threeApp.draw()
threeSprite.texture.update() // tell pixi that threejs has changed
pixiApp.render()

рдореБрдЭреЗ рдФрд░ рдХреБрдЫ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ? рдХреБрдЫ рдЕрдЪреНрдЫреЗ рдЕрдиреБрдХреВрд▓рди?

рд╡реИрд╕реЗ рднреА, рдЕрд╕рд▓реА рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдореИрдВ рд╕реНрдХреНрд░реАрди рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рддрд╛ рд╣реВрдВ, рддреЛ рдореЗрд░реЗ рдкрд╛рд╕ рддреАрди .js рдореЗрдВ рдЪрд▓рдиреЗ рд╡рд╛рд▓рд╛ рдпрд╣ рдХреЛрдб рд╣реЛрддрд╛ рд╣реИ:

renderer.setSize(window.innerWidth, window.innerHeight)

рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рддреАрди.js рдХреЗ рдЧрд╛рдпрд╛ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЖрдпрд╛рдореЛрдВ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИ, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ pixi.js рдЯреВрдЯрддрд╛ рд╣реИред

screenshot 2019-02-06 at 02 00 02

рдореИрдВ рдмрдирд╛рд╡рдЯ рдХреЗ рдЖрдпрд╛рдореЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП pixi.js рдХреИрд╕реЗ рдмрддрд╛рдКрдВ?

рд╡рд╛рддрд╛рд╡рд░рдг

  • pixi.js рд╕рдВрд╕реНрдХрд░рдг : 5.0.0-рдЖрд░рд╕реА
  • three.js рд╕рдВрд╕реНрдХрд░рдг : 0.101.1
  • рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг : рдХреНрд░реЛрдо 71
  • OS рдФрд░ рд╕рдВрд╕реНрдХрд░рдг : OSX
  • рд░рдирд┐рдВрдЧ рдЙрджрд╛рд╣рд░рдг : https://codepen.io/marco_fugaro/pen/QYgJQY?editors=0010

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВрдиреЗ рдЙрди рдореБрджреНрджреЛрдВ рдХреЛ рдПрдХ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рддрдп рдХрд┐рдпрд╛, рдореИрдВ рдмрд╛рдж рдореЗрдВ рдЙрд╕ рдХреЛрдб рдХрд╛ рдПрдХ рдбреЗрдореЛ рдмрдирд╛рдКрдВрдЧрд╛ред рд╡рд╣рд╛рдБ v4 рд╣реИ рдХрд┐ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ Pixi рд░реЗрдВрдбрд░рдЯрд╛рд░реНрд╕ (v5 рд░реЗрдВрдбрд░рдЯреЗрдХреНрдЪрд░реНрд╕) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдХреЗ рд▓рд┐рдП рдкреИрдЪ рд╣реИред

рд╕рднреА 11 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЗрд╕рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд, рддреАрдиj рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ v4 рдХреЗ рд▓рд┐рдП рдХрдИ рдмрд╛рд░ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрднреА рддрдХ v5 рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдмрдирд╛рдпрд╛ред
рдореВрд▓ рд░реВрдк рд╕реЗ, рдЖрдкрдХреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрджрд▓рдиреЗ рдкрд░ рд╣рд░ рдмрд╛рд░ рдкрд┐рдХреНрд╕реА рдФрд░ рдереНрд░реАрдЬ рд░рд╛рдЬреНрдп рджреЛрдиреЛрдВ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдореИрдВ рдЕрднреА рдкреБрд░рд╛рдиреЗ рдбреЗрдореЛ рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдЖрдк рдЙрдиреНрд╣реЗрдВ рдпрд╣рд╛рдВ рдФрд░ http://www.html5gamedevs.com/forum/15-pixijs/ рдореЗрдВ рдЦреЛрдЬ рд╕рдХрддреЗ рд╣реИрдВред рдХрд╣реАрдВ-рдХрд╣реАрдВ рдЯреЗрдХреНрд╕рдЪрд░ рд╢реЗрдпрд░рд┐рдВрдЧ рдкрд░ рднреА рдЪрд░реНрдЪрд╛ рд╣реБрдИред

рдЖрдкрдХреЛ рдмрд╕ рдЗрддрдирд╛ рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдЦреЛрдЬ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдлрд┐рд░ v5 рдХреЛ рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рд╣реИ, рд╢реБрднрдХрд╛рдордирд╛рдПрдБ! рдЕрдЧрд░ рдЖрдк рдХрд╣реАрдВ рдЕрд╕рдлрд▓ рд╣реЛрддреЗ рд╣реИрдВ рддреЛ рдореИрдВ рджреЛрдиреЛрдВ рдЪреАрдЬреЛрдВ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдореИрдВрдиреЗ рдПрдХ рдбреЗрдореЛ рднреА рдмрдирд╛рдпрд╛ рдЬрд╣рд╛рдБ 2d рдФрд░ 3D рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ SORTED рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╣ рдЬреЛ рдореИрдВрдиреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рд╕рд╛рдЭрд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЗ рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ? https://github.com/pixijs/pixi.js/pull/5430 рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 5.0.0-rp2 рдореЗрдВ рдлрд┐рдХреНрд╕ рд╣реИ

@ivanpopelyshev рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рдЪрд░реНрдЪрд╛ рдФрд░ рдХреЛрдб рдХреЗ рдЗрд╕ рд╕реНрдирд┐рдкреЗрдЯ рдХрд╛ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

    gl.disable(gl.DEPTH_TEST)
    gl.enable(gl.BLEND)
    gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA)
    gl.disable(gl.STENCIL_TEST)
    gl.disable(gl.CULL_FACE)

    gl.frontFace( gl.CCW )    
    gl.cullFace( gl.FRONT )
    gl.colorMask(true, true, true, true)
    gl.activeTexture(gl.TEXTURE0)

    var shaderManager = session.shaderManager

    shaderManager._currentId = undefined
    for (var i=0; i<shaderManager.attribState.length; i++)
        shaderManager.attribState[i] = false
    shaderManager.setShader(shaderManager.currentShader)

    var blend = session.blendModeManager.currentBlendMode
    if (blend in PIXI.blendModesWebGL) {
        session.blendModeManager.currentBlendMode = undefined
        session.blendModeManager.setBlendMode(blend)
    }

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореБрдЭреЗ рд╕рдордЭ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЛрдб рдХрд╣рд╛рдБ рдбрд╛рд▓рд╛ рдЬрд╛рдП, рдФрд░ session рд╡реЗрд░рд┐рдПрдмрд▓ рдХреНрдпрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ gl рддреАрди рдХреИрдирд╡рд╕ рдХрд╛ glcontext рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдХрд╣рд╛рдВ рд░рдЦрд╛ рд╣реИ?

https://codepen.io/marco_fugaro/pen/QYgJQY?editors=0010

(рдореБрджреНрджреЗ рдЦрд┐рдбрд╝рдХреА рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рд╣реЛрдиреЗ рд▓рдЧрддреЗ рд╣реИрдВ)

рдореЗрд░реЗ рдкрд╛рд╕ 5.0.0-rc.2 рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣реИрдВ, рдХреНрдпрд╛ рдореБрдЭреЗ рдХреБрдЫ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдореИрдВ рдЗрд╕ рдкреБрд░рд╛рдиреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрддрд╛рдИ рдЧрдИ рд╕рднреА рдЪреАрдЬреЗрдВ renderer.reset()

const threeTexture = PIXI.Texture.from(threeApp.renderer.domElement)

рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред

рдХреНрдпрд╛ рдЖрдкрдиреЗ # 5430 рдХреЛ рджреЗрдЦрд╛?

@marcofugaro рдХреЛрдИ рдЕрдиреНрдп рдЗрд╕ рдкрд░ рдЕрдиреБрд╡рд░реНрддреА?

@ivanpopelyshev @bigtimebuddy рдЖрдкрдХреЛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ, рдореИрдВрдиреЗ рдЕрдВрдд рдореЗрдВ рдЗрд╕ рдкрд░ рдПрдХ рдФрд░ рдЫреБрд░рд╛ рд▓рд┐рдпрд╛ред

@ivanpopelyshev рдЖрдкрдиреЗ рдкреАрдЖрд░ рдореЗрдВ рдкреЛрд╕реНрдЯ рдХреА рдЧрдИ PIXI.Texture.from(threeApp.renderer.domElement) рд╕рд╛рде рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рдХреНрдпрд╛ рдерд╛? рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВ рдмрд╣реБрдд рд╕реЗ рдЙрдиреНрдирдд рд╡реЗрдмрд▓реЙрдЧ рдирд╣реАрдВ рдЬрд╛рдирддрд╛)

рдпрд╣рд╛рдБ рдкрд┐рдХреНрд╕реА v5 рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

https://codepen.io/marco_fugaro/pen/wOGpwv?editors=0010

рдХреБрдЫ рдореБрджреНрджреЗ рдореБрдЭреЗ рдорд┐рд▓реЗ:

  1. PIXI.Application v4 рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЕрдм context рдкреИрд░рд╛рдореАрдЯрд░ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:
var renderer = new PIXI.WebGLRenderer(canvas.width, canvas.height, {
  context: context, // shared context with threejs

рдореИрдВ рдЗрд╕реЗ v5 рдореЗрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

 return new PIXI.Application({
    context: context, // shared context with threejs

рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдбреЗрдореЛ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ

  1. рддреАрди .js рдмрдирд╛рд╡рдЯ рд╡рд╛рдИ рдкрд░ рдлрд╝реНрд▓рд┐рдк рд╣реИ (рдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рд╡реЗрдмрд▓реЙрдЧ)

  2. рдЦрд┐рдбрд╝рдХреА рдХреЗ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдкрд░ рдмрдирд╛рд╡рдЯ рд╡рд┐рдкрд░реАрдд рддрд░реАрдХреЗ рд╕реЗ рдЦрд┐рдВрдЪрддреА рд╣реИ? рд╢рд╛рдпрдж рдореИрдВ рдХреБрдЫ рдЧрд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

рдлрд┐рд░ рд╕реЗ, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдореИрдВрдиреЗ рдЙрди рдореБрджреНрджреЛрдВ рдХреЛ рдПрдХ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рддрдп рдХрд┐рдпрд╛, рдореИрдВ рдмрд╛рдж рдореЗрдВ рдЙрд╕ рдХреЛрдб рдХрд╛ рдПрдХ рдбреЗрдореЛ рдмрдирд╛рдКрдВрдЧрд╛ред рд╡рд╣рд╛рдБ v4 рд╣реИ рдХрд┐ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ Pixi рд░реЗрдВрдбрд░рдЯрд╛рд░реНрд╕ (v5 рд░реЗрдВрдбрд░рдЯреЗрдХреНрдЪрд░реНрд╕) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдХреЗ рд▓рд┐рдП рдкреИрдЪ рд╣реИред

@ivanpopelyshev рдХреНрдпрд╛ рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ v5 рдмрд╛рд╣рд░ рд╣реИ? ЁЯЩП

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрд╛рд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рд╣рд╛рд▓ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рдереАред рдЖрдЧреЗ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдкрдХреЗ рдпреЛрдЧрджрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдмрд╛рд╕реА рдмреЙрдЯ рдирд╣реАрдВ

рдЕрдм рддрдХ рдХреЛрдИ рдЕрдкрдбреЗрдЯ? рдХреЛрдбрдкреЗрди рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╣реИрдХ рд╣реБрдЖ рдпрд╛ рдирд╣реАрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

Makio64 picture Makio64  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

SebastienFPRousseau picture SebastienFPRousseau  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

gigamesh picture gigamesh  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

lucap86 picture lucap86  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Darker picture Darker  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ