Pixi.js: Chrome 74 w/ GTX 780์„ ์‚ฌ์šฉํ•  ๋•Œ "์ด ๋ธŒ๋ผ์šฐ์ €์—์„œ WebGL์ด ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค"

์— ๋งŒ๋“  2019๋…„ 05์›” 19์ผ  ยท  43์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: pixijs/pixi.js


์ธํ„ฐ๋„ท์—์„œ ์˜ค๋ฅ˜๋ฅผ ๊ฒ€์ƒ‰ํ•ด ๋ณด์•˜์ง€๋งŒ ์ฃฝ์€ ๋งํฌ์ธ ์ค‘๊ตญ ์›น์‚ฌ์ดํŠธ๋ผ๋Š” 1๊ฐœ์˜ ๊ฒฐ๊ณผ๋งŒ ๋‚˜์˜ต๋‹ˆ๋‹ค.

์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘

Pixi.js๋Š” webpack์—์„œ ์˜ค๋ฅ˜ ์—†์ด ๋กœ๋“œ๋˜๊ณ  ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๋ฒˆ๋“ค๋กœ ์‚ฌ์šฉํ•œ ๋‹ค์Œ browserify๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ œ๋Œ€๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ํ–‰๋™

Uncaught Error: WebGL unsupported in this browser, use "pixi.js-legacy" for fallback canvas2d support.
image

๊ฐ€๋Šฅํ•œ ํ•ด๊ฒฐ์ฑ…

์ €๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ƒํƒœ๊ณ„์— ๋Œ€ํ•œ ๊ฒฝํ—˜์ด ๋งŽ์ง€ ์•Š์œผ๋ฏ€๋กœ webpack 4์˜ ์ž˜๋ชป๋œ ๊ตฌ์„ฑ์œผ๋กœ ์ธํ•œ ๊ฒƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๋„์›€์ด๋ผ๋„ ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

ํ™˜๊ฒฝ

Typescript 3.4.5, Pixi.js 5.0.2, Webpack 4.31.0

Webpack.config.js, ํด๋ผ์ด์–ธํŠธ ์„น์…˜์€ pixi.js๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค.

/// <binding BeforeBuild='Run - Development' />
const HtmlWebpackPlugin = require('html-webpack-plugin');
const path = require('path');
var pixiModule = path.join(__dirname, '/node_modules/pixi.js/')
const CleanWebpackPlugin = require('clean-webpack-plugin');


module.exports = [
    // Server
    {
        mode: "development",
        devtool: "inline-source-map",
        entry: "./app.ts",
        output: {
            filename: "./app.js"
        },
        target: 'node',
        node: {
            __dirname: false,
            __filename: false,
        },
        resolve: {
            // Add `.ts` and `.tsx` as a resolvable extension.
            extensions: [".ts", ".tsx", ".js"]
        },
        module: {
            rules: [
                // all files with a `.ts` or `.tsx` extension will be handled by `ts-loader`
                { test: /\.tsx?$/, loader: "ts-loader" }
            ]
        },
        plugins: [
            new CleanWebpackPlugin()
        ]
    },

    // Client
    {
        mode: "development",
        devtool: "inline-source-map",
        entry: "./public/typescripts/entry.ts",
        output: {
            library: "ASC",
            filename: "public/client.js"
        },
        target: 'web',
        resolve: {
            // Add `.ts` and `.tsx` as a resolvable extension.
            alias: {
                'PIXI': pixiModule,
            },
            extensions: [".ts", ".tsx", ".js"]
        },
        module: {
            rules: [
                // all files with a `.ts` or `.tsx` extension will be handled by `ts-loader`
                { test: /\.tsx?$/, loader: "ts-loader" },
                { test: /\.json$/, include: path.join(__dirname, 'node_modules', 'pixi.js'), loader: 'json-loader' },
                //We expose the non minified pixi file as a global. The minified one was not working with our solution
                { test: pixiModule, loader: 'expose-loader?pixi' }
            ]
        },
        plugins: [
            new HtmlWebpackPlugin({
                filename: 'public/index.html',
                template: 'public/index.html',
                inject: false
            }),
            new HtmlWebpackPlugin({
                filename: 'public/game.html',
                template: 'public/game.html',
                inject: false
            })
        ]
    }
];
  • pixi.js ๋ฒ„์ „ : 5.0.2
  • ๋ธŒ๋ผ์šฐ์ € ๋ฐ ๋ฒ„์ „ : ํฌ๋กฌ 74.0.3729.157
  • OS ๋ฐ ๋ฒ„์ „ : _e.g. ์œˆ๋„์šฐ 10

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

ํ•˜๋“œ์›จ์–ด ๊ฐ€์†์„ ํ™œ์„ฑํ™”ํ•˜๋ฉด ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Chrome -> ์„ค์ •(โŒ˜,) -> ๊ณ ๊ธ‰ -> ์‹œ์Šคํ…œ -> ์ฒซ ๋ฒˆ์งธ ํ™œ์„ฑํ™”

๋ชจ๋“  43 ๋Œ“๊ธ€

์ด ๋ธŒ๋ผ์šฐ์ €์—์„œ WebGL์ด ์ง€์›๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๋Œ€์ฒด canvas2d ์ง€์›์„ ์œ„ํ•ด pixi.js-legacy ๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

npm์˜ ๋‹ค๋ฅธ ๋ฒˆ๋“ค์ž…๋‹ˆ๋‹ค. ๊ตฌ์„ฑ์—์„œ pixi.js

์ด ๋ธŒ๋ผ์šฐ์ €์—์„œ WebGL์ด ์ง€์›๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๋Œ€์ฒด canvas2d ์ง€์›์„ ์œ„ํ•ด pixi.js-legacy ๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

npm์˜ ๋‹ค๋ฅธ ๋ฒˆ๋“ค์ž…๋‹ˆ๋‹ค. ๊ตฌ์„ฑ์—์„œ pixi.js

ํ•˜์ง€๋งŒ ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ถ„๋ช…ํžˆ WebGL์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
image
image

https://pixijs.io/examples/์— ์žˆ๋Š” v5 ์˜ˆ์ œ๊ฐ€ ์ ํ•ฉํ•ฉ๋‹ˆ๊นŒ? ๋‹น์‹ ์ด ๋ณด์—ฌ์ค€ ๊ทธ ํŽ˜์ด์ง€๋Š” ๊ธฐ๋ณธ webgl, ์˜ˆ ๋˜๋Š” ์•„๋‹ˆ์˜ค์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ webgl ์ปจํ…์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์Šคํ…์‹ค ์ง€์› ์š”๊ตฌ์™€ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ ์ถ”๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ํ•จ๊ป˜ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.

์–ด์จŒ๋“  ๊ทธ๊ฒƒ์ด ์˜ค๋ฅ˜์ด๋ฉฐ, ๊ทธ๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ๋„์›€์„ ๋“œ๋ฆฌ๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. webgl์„ ์ง€์›ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ pixijs๊ฐ€ ์š”๊ตฌํ•˜๋Š” webgl ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์žฅ์น˜ ์™ธ๋ถ€์˜ ์˜ค๋ฅ˜๋ฅผ ๋ณธ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค.

https://pixijs.io/examples/์— ์žˆ๋Š” v5 ์˜ˆ์ œ๊ฐ€ ์ ํ•ฉํ•ฉ๋‹ˆ๊นŒ? ๋‹น์‹ ์ด ๋ณด์—ฌ์ค€ ๊ทธ ํŽ˜์ด์ง€๋Š” ๊ธฐ๋ณธ webgl, ์˜ˆ ๋˜๋Š” ์•„๋‹ˆ์˜ค์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ webgl ์ปจํ…์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์Šคํ…์‹ค ์ง€์› ์š”๊ตฌ์™€ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ ์ถ”๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ํ•จ๊ป˜ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.

์–ด์จŒ๋“  ๊ทธ๊ฒƒ์ด ์˜ค๋ฅ˜์ด๋ฉฐ, ๊ทธ๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ๋„์›€์„ ๋“œ๋ฆฌ๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. webgl์„ ์ง€์›ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ pixijs๊ฐ€ ์š”๊ตฌํ•˜๋Š” webgl ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์žฅ์น˜ ์™ธ๋ถ€์˜ ์˜ค๋ฅ˜๋ฅผ ๋ณธ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์˜ˆ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉฐ(v4๋Š” ์ž‘๋™ํ•˜์ง€๋งŒ v5๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Œ) ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋‚˜์—๊ฒŒ ์ •๋ง ์ด์ƒํ•˜๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค. ์™œ ๋‚ด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๊ทธ๊ฒƒ์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์ž‘๋™ํ•˜๋Š” pixi.js ์•ฑ์„ ํ™•์ธํ–ˆ๋Š”๋ฐ 5.0.0-rc.2๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ž‘๋™ํ•˜๋Š” ์ด์œ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„์›€์„ ์ฃผ์…”์„œ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค

v4๋Š” ์บ”๋ฒ„์Šค ๋ Œ๋”๋Ÿฌ๋กœ ๋Œ์•„๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. v5์˜ ๊ณต์‹ ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” ๋ ˆ๊ฑฐ์‹œ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ•œ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ gfx ์นด๋“œ๊ฐ€ webgl์„ ์ง€์›ํ•˜์ง€๋งŒ ๋งˆ์Šคํ‚น์— ํ•„์š”ํ•œ ์Šคํ…์‹ค ์ง€์›๊ณผ ๊ฐ™์€ ๊ฒƒ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ ์‹œ๋„๋ฅผ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๊นŒ?

์Šคํ…์‹ค์ธ ๊ฒฝ์šฐ ๊ทธ๋ž˜ํ”ฝ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์—…๋ฐ์ดํŠธํ•ด ๋ณด์‹ญ์‹œ์˜ค.

๊ทธ๋Ÿฌ๋‚˜ webpack์ด ์‹ค์ œ๋กœ ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค๋Š” ์‚ฌ์‹ค์ด ๋ฐํ˜€์ง€๋ฉด ๋งค์šฐ ์žฌ๋ฏธ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. :)

๋‚ด ๋ฐ์Šคํฌํƒ‘(i7 7700k, gtx 780)์ด ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ์ด์ƒํ•˜์ง€๋งŒ ๋‚ด ์„œํ”ผ์Šค ๋ถ 1, ๋‚ด iPhone XS ๋ฐ ๋‚ด ์นœ๊ตฌ macbook pro 2015์—์„œ๋Š” ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด GPU๋Š” ์ข€ ์˜ค๋ž˜๋˜์—ˆ์ง€๋งŒ ' ๊ทธ๊ฒƒ์ด ๋ฌธ์ œ๊ฐ€ ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

๋‚ด๊ฐ€ ์‹œ๋„ํ•ด์•ผ ํ•  ๋‹ค๋ฅธ ๊ฒƒ์ด ์—†๋‹ค๋ฉด ๋‚˜๋Š” ์ตœ๋Œ€ํ•œ์˜ ํ˜ธํ™˜์„ฑ์„ ์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ ˆ๊ฑฐ์‹œ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค (๋˜ํ•œ ์‹คํ–‰ํ•  ์ˆ˜์—†๋Š” ๊ฒƒ์„ ์‹ค์ œ๋กœ ๊ฐœ๋ฐœํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค)

๊ทธ๋ž˜ํ”ฝ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ด์ „ ๋ฒ„์ „ ๋˜๋Š” ์ด์ „ ๋ฒ„์ „์œผ๋กœ ๋‹ค์‹œ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. GPU๋Š” ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ ๋“œ๋ผ์ด๋ฒ„์˜ OpenGL ๋ถ€๋ถ„์€ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์ž ์‹œ๋งŒ์š”. ์ •๋ง ๋ฉ์ฒญํ•œ ๊ฒƒ ๊ฐ™์•„์š”. ํฌ๋กฌ ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™์•„์š”. Microsoft edge์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋žฉํ†ฑ๊ณผ ํœด๋Œ€ํฐ ๋ชจ๋‘์—์„œ ํฌ๋กฌ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ธŒ๋ผ์šฐ์ €์—๋Š” ๋‹ค์–‘ํ•œ ํ•˜๋“œ์›จ์–ด์— ๋Œ€ํ•œ ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋•Œ๋กœ๋Š” webgl์„ ์™„์ „ํžˆ ๋น„ํ™œ์„ฑํ™”ํ•˜์ง€๋งŒ ์•Œ๋ ค์ง„ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ํŠน์ • ํ•˜๋“œ์›จ์–ด/๋“œ๋ผ์ด๋ฒ„ ๋ฒ„์ „์˜ ํŠน์ • ๊ธฐ๋Šฅ์„ ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด ๋ฌธ์ œ์˜ ์ œ๋ชฉ์„ ์—…๋ฐ์ดํŠธํ–ˆ๊ณ (Webpack + PixiJS ๋ฌธ์ œ๊ฐ€ ์•„๋‹˜) ํ•˜๋“œ์›จ์–ด/๋“œ๋ผ์ด๋ฒ„ ๋ฌธ์ œ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋งค์šฐ ๋†’๊ธฐ ๋•Œ๋ฌธ์— "์ˆ˜์ •ํ•˜์ง€ ์•Š์Œ"์œผ๋กœ ํ‘œ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

์ข‹์•„, ๊ทธ๋ž˜์„œ pixi.js-legacy๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  pixi.js-legacy๋ฅผ ์ฐธ์กฐํ•˜๋„๋ก ๋ชจ๋“  ๊ฒƒ์„ ๋ณ€๊ฒฝํ•˜๋ฉด ์—ฌ์ „ํžˆ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

5.0.0-rc.2๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—… ๋ฒ„์ „์„ ํ™•์ธํ–ˆ์œผ๋ฉฐ webgl2๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ _does_ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
image

๊ทธ๋Ÿฌ๋‚˜ 5.0.0-rc.2๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‚ด ์›นํŒฉ ๋ฒ„์ „์—์„œ "Uncaught TypeError: Cannot read property 'performMixins' of undefined" ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
image

๋„์›€์„ ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

5.0.0-rc.2๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์ตœ์‹  ๋ฆด๋ฆฌ์Šค ์‚ฌ์šฉ: 5.0.3

๋ฐฉ๊ธˆ 5.0.3, "์žกํžˆ์ง€ ์•Š์€ ์˜ค๋ฅ˜: WebGL์ด ์ด ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์ฒด canvas2d ์ง€์›์„ ์œ„ํ•ด "pixi.js-legacy"๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค." ์ด์ „๊ณผ. WebGl 2์™€ ํ•จ๊ป˜ ์‹คํ–‰๋˜๋Š” PixiJS 5.0.0-rc.2๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‹คํ–‰ ์ค‘์ธ ๋ฒ„์ „์ด ์žˆ์Šต๋‹ˆ๋‹ค. 5.0.1+์— ์ถ”๊ฐ€๋˜์–ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๋ช‡ ๊ฐ€์ง€ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์กฐ๊ธˆ ๋” ํ…Œ์ŠคํŠธํ•˜๋ฉด ์ž ์žฌ์  ์ธ ๊ธฐ์ดํ•จ์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

  1. ๊ฐ€์žฅ์ž๋ฆฌ์—
    V5 ์˜ˆ์ œ๋Š” ์‹คํ–‰๋˜์ง€๋งŒ _WebGL 1?_
    image
    V4 ์˜ˆ์ œ๋Š” _WebGL 1๋กœ ๋‹ค์‹œ ์‹คํ–‰_
    image
    ๋‚ด ์ž‘์—… ๊ฒŒ์ž„(https://ascension.azurewebsites.net/game.html)์€ Pixi.js 5.0.0-rc.2๋ฅผ ์‹คํ–‰ํ•˜๋ฉฐ _Webgl 1_๊ณผ ํ•จ๊ป˜ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
    image
    ๋‚ด webpack ๊ฒŒ์ž„์€ _WebGL 1_์ด ์žˆ๋Š” Pixi.js 5.0.3 ๊ณผ ํ•จ๊ป˜ ๋กœ๋“œ๋˜์ง€๋งŒ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    image
  2. ํฌ๋กฌ์—์„œ
    V5 ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค
    image
    V4 ๋Š” ์ž‘๋™ํ•˜์ง€๋งŒ _canvas_
    image
    ๋‚ด ์ž‘์—… ๊ฒŒ์ž„์€ _webgl 2_์™€ ํ•จ๊ป˜ 5.0.0-rc.2 ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
    image
    ๋‚ด ์›นํŒฉ ๊ฒŒ์ž„์—๋Š” 5.0.3 ์˜ ๊ฒŒ์‹œ๋ฌผ์— ์„ค๋ช…๋œ ๋Œ€๋กœ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
    image

์ด๊ฒƒ์ด ์ „ํ˜€ ๋„์›€์ด๋˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ๋‚˜์—๊ฒŒ๋Š” ์ด์ƒํ•˜๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค.

์œ ์ผํ•œ ์ข‹์€ ๋ฐฉ๋ฒ•์€ pixi์™€ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์ปจํ…์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(" stencil:true "๋ฅผ ์š”์ฒญํ•˜๊ณ  pixi ์—†์ด ์ผ๋ฐ˜ html+js๋งŒ ํ…Œ์ŠคํŠธ).

๊ทธ๋Ÿฐ ๋‹ค์Œ chromium bugtracker์—์„œ chromium ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์‚ฌ์–‘ ๋ฐ ๋ฐ๋ชจ๊ฐ€ ํฌํ•จ๋œ ๋ณด๊ณ ์„œ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋งค์šฐ ๋จผ ๊ธธ์ด๋ผ๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜์ง€๋งŒ, mozilla์™€ ๋น„๊ตํ•  ๋•Œ ๋” ๋น ๋ฅด๊ณ  ํฌ๋ง์ด ์žˆ์Šต๋‹ˆ๋‹ค. :)

๋‹ค์‹œ ๋ฌป์Šต๋‹ˆ๋‹ค. ๋“œ๋ผ์ด๋ฒ„ ์—…๋ฐ์ดํŠธ๋ฅผ ์‹œ๋„ํ•˜์…จ์Šต๋‹ˆ๊นŒ?

์œ ์ผํ•œ ์ข‹์€ ๋ฐฉ๋ฒ•์€ pixi์™€ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์ปจํ…์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(" stencil:true "๋ฅผ ์š”์ฒญํ•˜๊ณ  pixi ์—†์ด ์ผ๋ฐ˜ html+js๋งŒ ํ…Œ์ŠคํŠธ).

๊ทธ๋Ÿฐ ๋‹ค์Œ chromium bugtracker์—์„œ chromium ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์‚ฌ์–‘ ๋ฐ ๋ฐ๋ชจ๊ฐ€ ํฌํ•จ๋œ ๋ณด๊ณ ์„œ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋งค์šฐ ๋จผ ๊ธธ์ด๋ผ๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜์ง€๋งŒ, mozilla์™€ ๋น„๊ตํ•  ๋•Œ ๋” ๋น ๋ฅด๊ณ  ํฌ๋ง์ด ์žˆ์Šต๋‹ˆ๋‹ค. :)

๋‹ค์‹œ ๋ฌป์Šต๋‹ˆ๋‹ค. ๋“œ๋ผ์ด๋ฒ„ ์—…๋ฐ์ดํŠธ๋ฅผ ์‹œ๋„ํ•˜์…จ์Šต๋‹ˆ๊นŒ?

์˜ˆ, ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์—…๋ฐ์ดํŠธํ–ˆ์œผ๋ฉฐ Chrome://flags ์—์„œ๋„ webGL 2.0 ์ปดํ“จํŒ…์„ ์ผญ๋‹ˆ๋‹ค.

Chrome ์ธก์˜ ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ? ๋‚˜๋Š” ๋‹น์‹ ์˜ ์ œ์•ˆ์„ ์‹œ๋„ํ•˜๊ณ  ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ณต๊ต๋กญ๊ฒŒ๋„ gtx 780 ๋ฐ 780ti๋Š” "Nier Automata" ๊ฒŒ์ž„์„ ํ”Œ๋ ˆ์ดํ•˜๋Š” ๋™์•ˆ ์ถฉ๋Œํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์นด๋“œ์˜ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์–ด๋–ค ์‹์œผ๋กœ๋“  ์†์ƒ๋˜์—ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ข‹์•„, ๋‚˜๋Š” ์ด ๋น ๋ฅธ ํ…Œ์ŠคํŠธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค:

    var canvas = document.createElement("canvas");
    // Get WebGLRenderingContext from canvas element.
    console.log("Context (no args):");
    var a = canvas.getContext("webgl");
    console.dirxml(a.getContextAttributes());
    console.log("Context (stencil):" );
    var b = canvas.getContext("webgl",{ stencil: true});
    console.dirxml( b.getContextAttributes());
    console.log("Context (failIfMajorPerformanceCaveat):" );
    var c = canvas.getContext("webgl",{ failIfMajorPerformanceCaveat: true});
    console.dirxml( c.getContextAttributes());
    console.log("Context (Both):" );
    var d = canvas.getContext("webgl",{ stencil: true, failIfMajorPerformanceCaveat: true });
    console.dirxml( d.getContextAttributes());
    console.log("Context (Alias):" );
    var e = canvas.getContext("webgl",{ antialias: false});
    console.dirxml( e.getContextAttributes());

๊ทธ๋ฆฌ๊ณ  ์•„๋ฌด๋ฆฌ ๋…ธ๋ ฅํ•ด๋„ ์Šคํ…์‹ค์„ ์‚ฌ์‹ค๋กœ ๋งŒ๋“ค ์ˆ˜ ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚ด PC์™€ ๋…ธํŠธ๋ถ ๋ชจ๋‘์—์„œ ์ด๊ฒƒ์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค(๋…ธํŠธ๋ถ์€ v5์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค). ์ด ์‹œ์ ์—์„œ ๋ฌด์—‡์„ ํ•ด์•ผํ• ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

pixi๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜์—ฌ RenderTexture ํ”„๋ ˆ์ž„ ๋ฒ„ํผ์— ๋Œ€ํ•ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ์Šคํ…์‹ค ์ฒจ๋ถ€ ํŒŒ์ผ์„ ์ œ๊ฑฐํ•˜๊ณ  ๋งˆ์Šคํฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก ํ•˜์‹ญ์‹œ์˜ค. ;)

๋˜๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ OLD ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์‹ญ์‹œ์˜ค. Btw Linux ์‚ฌ์šฉ์ž๋Š” ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ๋ฌธ์ œ๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. Pixi.js๋Š” firefox (webgl 2)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์œผ๋ฏ€๋กœ ์ง€๊ธˆ์€ ๊ทธ๋ƒฅ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋“œ๋ผ์ด๋ฒ„ + ํฌ๋กฌ์˜ _ํŠน์ •_ ์กฐํ•ฉ์œผ๋กœ ์ธํ•ด ์ž‘๋™ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์˜ค๋ž˜๋œ ๋งฅ๋ถ, ์˜ค๋ž˜๋œ ์œˆ๋„์šฐ 7 ๋จธ์‹ , ์œˆ๋„์šฐ 10 ๋…ธํŠธ๋ถ์— ์ด๋ฅด๋Š” ๋จธ์‹ ์—์„œ ์—ฌ๋Ÿฌ ์˜ˆ์ œ v5๋ฅผ ์‹œ๋„ํ–ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ํŒŒ์ด์–ดํญ์Šค, ํฌ๋กฌ, ์—์ง€์—์„œ ์ด ๋ฌธ์ œ์— ์ง๋ฉดํ•œ๋‹ค๋ฉด ์ด ํ‹ฐ์ผ“์„ ๋‹ค์‹œ ์—ด ๊ฐ€์น˜๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  ๋„์›€ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ข‹์•„ ์žฌ๊ฐœ๋ด‰ ์•ˆํ•ด 100% ๋‚ด ํฌ๋กฌ ์„ค์น˜ ์˜€๊ณ  ๋ฒ ํƒ€ ์ฑ„๋„๋กœ ์ „ํ™˜ํ•˜๋ฉด ํ•ด๊ฒฐ๋˜๋Š” ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค.
(chrome://flags๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋„์›€์ด ๋˜์ง€ ์•Š์•˜๊ณ  ๋ชจ๋“  ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์„ ์ œ๊ฑฐํ•ด๋„ ์•„๋ฌด ์†Œ์šฉ์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค).

์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ๋ฌธ์ œ๋Š” ์œ ์‚ฌํ•œ ํ™˜๊ฒฝ์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ํ–ฅํ›„ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์•Œ๋ ค์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ข‹์•„ ์žฌ๊ฐœ๋ด‰ ์•ˆํ•ด 100% ๋‚ด ํฌ๋กฌ ์„ค์น˜ ์˜€๊ณ  ๋ฒ ํƒ€ ์ฑ„๋„๋กœ ์ „ํ™˜ํ•˜๋ฉด ํ•ด๊ฒฐ๋˜๋Š” ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค.
(chrome://flags๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋„์›€์ด ๋˜์ง€ ์•Š์•˜๊ณ  ๋ชจ๋“  ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์„ ์ œ๊ฑฐํ•ด๋„ ์•„๋ฌด ์†Œ์šฉ์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค).

์ด๊ฒƒ์ด ๋‚˜์—๊ฒŒ๋„ ํšจ๊ณผ๊ฐ€ ์žˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํฌ๋กฌ ๋ฒ ํƒ€๋ฅผ ์„ค์น˜ํ•˜๋ฉด ์•ฑ์ด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”.

๋ฌด์ž‘์œ„ ๋ฐœ๊ฒฌ: ํฌ๋กฌ ๋ฒ ํƒ€์˜ ์ž˜๋ชป์ด ์•„๋‹™๋‹ˆ๋‹ค.

์–ด๋–ค ์ด์œ ๋กœ ๋‚ด ํ•˜๋“œ์›จ์–ด ๊ฐ€์†์ด ๋น„ํ™œ์„ฑํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜๋“œ์›จ์–ด ๊ฐ€์†์„ ํ™œ์„ฑํ™”ํ•˜๋ฉด ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Chrome -> ์„ค์ •(โŒ˜,) -> ๊ณ ๊ธ‰ -> ์‹œ์Šคํ…œ -> ์ฒซ ๋ฒˆ์งธ ํ™œ์„ฑํ™”

@ivanpopelyshev WebGL์—์„œ ๋งˆ์Šคํ‚น์„ ์œ„ํ•œ ๋Œ€์ฒด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด stackoverflow ์Šค๋ ˆ๋“œ ์— ๋Œ€ํ•œ ์„ค๋ช…๊ณผ ํ•จ๊ป˜ ๋ช‡ ๊ฐ€์ง€ ์˜ต์…˜์ด ๋” ์žˆ์Šต๋‹ˆ๋‹ค.

์ˆ˜๋™์œผ๋กœ ํ™œ์„ฑํ™”ํ•˜๋ฉด ์‚ฌ์šฉ์ž์—๊ฒŒ ๋„์›€์ด ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ์ฝ”๋“œ๊ฐ€ ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค!
import * as PIXI from 'pixi.js-legacy'

ํ•˜๋“œ์›จ์–ด ๊ฐ€์† ์„ค์ •์ด ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Chrome์„ ์‚ฌ์šฉํ•  ๋•Œ๋„ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์–ผ๋งˆ ์ „์— ๋น„ํ™œ์„ฑํ™”ํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด ๊ฒฝ์šฐ์— Pixi๊ฐ€ ๋กœ๋“œ๋˜์ง€ ์•Š๋Š” ์ด์œ ๊ฐ€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. HTML 5 ์บ”๋ฒ„์Šค๋กœ ๋Œ์•„๊ฐ€์•ผ ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๊นŒ?

image

@immanuelx2 ์Šคํฌ๋ฆฐ์ƒท์„ ๊ฒŒ์‹œํ•œ ๋ฌธ์„œ๊ฐ€ ์ตœ์‹  ์ƒํƒœ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์บ”๋ฒ„์Šค ํด๋ฐฑ์ด v5.0.0์—์„œ ๋ ˆ๊ฑฐ์‹œ ๋ธŒ๋žœ์น˜๋กœ ์ด๋™๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฆด๋ฆฌ์Šค ๋ฐœํ‘œ๋ฅผ ์—ฌ๊ธฐ์—์„œ ์ฐธ์กฐํ•˜์„ธ์š”: https://medium.com/goodboy-digital/pixijs-v5-lands-5e112d84e510

์—ฌ์ „ํžˆ ์บ”๋ฒ„์Šค ๋Œ€์ฒด๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ pixi.js-legacy๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ๋งˆ์Šคํ„ฐ ๋ธŒ๋žœ์น˜๋Š” ๋” ์ด์ƒ ์บ”๋ฒ„์Šค์— ๋Œ€ํ•œ ์ง€์›์„ ํฌํ•จํ•˜์ง€ ์•Š์œผ๋ฉฐ WebGL "์ „์šฉ"์ด๋ฉฐ ๋” ๋น ๋ฆ…๋‹ˆ๋‹ค.

CONTEXT_LOST_WEBGL ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ํ›„ ์ƒˆ ํƒญ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์—ด ๋•Œ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

ํฌ๋กฌ์„ ๋‹ซ์•˜๋‹ค๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ฉด ํ•ด๊ฒฐ๋จ

ํŽธ์ง‘ํ•˜๋‹ค:
์œ„์˜ ๋‹จ๊ณ„์— ๋”ฐ๋ผ ์žฌํ˜„์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

์„ธ๋ถ€ ์‚ฌํ•ญ:
ํฌ๋กฌ: 77.0.3865.90
OSX: 10.14.6
๊ทธ๋ž˜ํ”ฝ: Radeon Pro Vega 20 4GB, Intel UHD ๊ทธ๋ž˜ํ”ฝ 630 1536MB

๊ทธ๋ž˜์„œ @winterNebs ์™€ ๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์ง€๋งŒ ์ €์—๊ฒŒ Chrome์€ > 5.0.0-rc.2 ๋ฒ„์ „์—์„œ ๊ดœ์ฐฎ์€ ๊ฒƒ ๊ฐ™๊ณ  ํŒŒ์ด์–ดํญ์Šค๋Š” webgl์ด ์ง€์›๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ์ด ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ. " ์†Œํ”„ํŠธ์›จ์–ด ๋ Œ๋”๋ง ๋ชฉ๋ก ๋ฌด์‹œ " chrome://flags ํ”Œ๋ž˜๊ทธ ๋ฅผ ์ˆ˜๋™์œผ๋กœ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค

์„ธ๋ถ€ ์‚ฌํ•ญ:
ํฌ๋กฌ: 78.0.3904.97
OSX: 10.13.6

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @goodgecko - ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ ์ˆ˜์ •์ด ํ•„์š”ํ•˜์ง€๋งŒ; ์ตœ์ข… ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ•ด๋‹น ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์š”์ฒญํ•˜๋Š” ๊ฒƒ์€ ํ•ฉ๋ฆฌ์ ์ด๊ฑฐ๋‚˜ ์‹คํ˜„ ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž๋™ ๋Œ€์ฒด๋Š” ์•ˆ์ •์ ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Chromium 79.0.3945.88์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” Brave Browser 1.1.23์˜ Linux์™€ Windows ๋ชจ๋‘์—์„œ ์ด ์ •ํ™•ํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
ํฅ๋ฏธ๋กœ์šด ์ ์€ ๋™์ผํ•œ Chromium ๋นŒ๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ Chrome์ด ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
Firefox 71.0์€ ์•„๋ฌด ๋ฌธ์ œ ์—†์ด ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

@goodgecko ํŒ์ด ๋„์›€์ด๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค

Chrome ์„ค์ • ํ•˜๋“œ์›จ์–ด ๊ฐ€์†(๊ณ ๊ธ‰) ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ํฌ๋กฌ์—์„œ ์ด ์˜ต์…˜์„ ๋‹ซ์„ ๋•Œ๋„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.
๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

Chrome ์„ค์ • ํ•˜๋“œ์›จ์–ด ๊ฐ€์†(๊ณ ๊ธ‰) ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ํฌ๋กฌ์—์„œ ์ด ์˜ต์…˜์„ ๋‹ซ์„ ๋•Œ๋„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.
๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋“œ์›จ์–ด ๊ฐ€์†์„ ์ผœ์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ๋Š” ๋” ์ด์ƒํ•˜๋‹ค. https://get.webgl.org/ ๊ฐ€ ์ž‘๋™ ์ค‘์ž…๋‹ˆ๋‹ค. PIXI v5 ์˜ˆ์ œ ๋Š” ๋งˆ์Šคํฌ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋„ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ฒŒ์ž„์„ ์—ด๋ ค๊ณ  ํ•˜๋ฉด WebGL์ด ์ง€์›๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋‚˜์˜ต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ์ด ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ. " ์†Œํ”„ํŠธ์›จ์–ด ๋ Œ๋”๋ง ๋ชฉ๋ก ๋ฌด์‹œ " chrome://flags ํ”Œ๋ž˜๊ทธ ๋ฅผ ์ˆ˜๋™์œผ๋กœ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค

์„ธ๋ถ€ ์‚ฌํ•ญ:
ํฌ๋กฌ: 78.0.3904.97
OSX: 10.13.6

์ด๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์˜คํ”ˆ ์†Œ์Šค X.Org X Server Nouveau ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Chrome ์•ˆ์ • 80.0.+, Ubuntu 18.04์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” WebGL ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ–ˆ๊ณ  ๊ทธ๊ฒƒ์ด ๋“œ๋ผ์ด๋ฒ„์—ฌ์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋…์  ๋“œ๋ผ์ด๋ฒ„(Nvidia)๋ฅผ ์„ค์น˜ํ•œ ํ›„ ๋ชจ๋“  ๊ฒƒ์ด ์ด์ œ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋ฌด์ž‘์œ„ ๋ฐœ๊ฒฌ: ํฌ๋กฌ ๋ฒ ํƒ€์˜ ์ž˜๋ชป์ด ์•„๋‹™๋‹ˆ๋‹ค.

์–ด๋–ค ์ด์œ ๋กœ ๋‚ด ํ•˜๋“œ์›จ์–ด ๊ฐ€์†์ด ๋น„ํ™œ์„ฑํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ํ•˜๋“œ์›จ์–ด ๊ฐ€์†์„ ๋น„ํ™œ์„ฑํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์— OBS์—์„œ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๊ธฐ๋กํ•˜๊ธฐ ์œ„ํ•ด ๋น„ํ™œ์„ฑํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.

Chrome 83๊ณผ ๋™์ผํ•œ ๋ฌธ์ œ | ๋งˆ์ฝ”์Šค 10.13.6 | ์—”๋น„๋””์•„ ์ง€ํฌ์Šค 210

PixiJS ์˜ˆ์ œ๋Š” Firefox์—์„œ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
์ฝ˜์†” ์ถœ๋ ฅ

PixiJS 5.3.0 - WebGL 1 - http://www.pixijs.com/

๊ทธ๋Ÿฌ๋‚˜ Chrome์„ ์‚ฌ์šฉํ•˜๋ฉด Canvas๋กœ ๋Œ€์ฒด๋ฉ๋‹ˆ๋‹ค.
์ถœ๋ ฅ ์ฝ˜์†”

PixiJS 5.3.0 - Canvas - http://www.pixijs.com/

@Fxlr8 ์˜ˆ์ œ๋Š” ํฌ๋กฌ์ด Canvas๋กœ ๋˜๋Œ์•„๊ฐ€๋Š” ์›์ธ์œผ๋กœ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์›น ์ฝ˜์†”์„ ์—ด๊ณ  ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ–ˆ์Šต๋‹ˆ๋‹ค!
image

์ด ์Šค๋ ˆ๋“œ๋ฅผ ์ž ๊ธ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์—ฌ๊ธฐ์— ๋” ์ด์ƒ ๊ธฐ์—ฌํ•  ๊ฒƒ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” hw ๊ฐ€์†์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋‹ค๋ฅธ ๋ฌธ์ œ์ด๋ฏ€๋กœ ์ด ์Šค๋ ˆ๋“œ๋ฅผ necroingํ•˜๋Š” ๋Œ€์‹  ์ƒˆ ์Šค๋ ˆ๋“œ๋ฅผ ์—ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰