Skip to content

Commit d3763c7

Browse files
committed
perf(timeline): don't user render texture if not webgl + render texture antialias
1 parent da9e91c commit d3763c7

File tree

1 file changed

+22
-13
lines changed

1 file changed

+22
-13
lines changed

packages/app-frontend/src/features/timeline/TimelineView.vue

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -114,32 +114,41 @@ export default defineComponent({
114114
app.view.style.opacity = '1'
115115
})
116116
117-
mainRenderTexture = PIXI.RenderTexture.create({
118-
width: app.view.width,
119-
height: app.view.height,
120-
resolution: window.devicePixelRatio,
121-
})
122-
const mainRenderSprite = new PIXI.Sprite(mainRenderTexture)
123-
app.stage.addChild(mainRenderSprite)
124-
125-
mainRenderContainer = new PIXI.Container()
126-
127117
verticalScrollingContainer = new PIXI.Container()
128-
mainRenderContainer.addChild(verticalScrollingContainer)
129118
130119
horizontalScrollingContainer = new PIXI.Container()
131120
verticalScrollingContainer.addChild(horizontalScrollingContainer)
121+
122+
if (app.renderer.type === PIXI.RENDERER_TYPE.WEBGL) {
123+
mainRenderTexture = PIXI.RenderTexture.create({
124+
width: app.view.width,
125+
height: app.view.height,
126+
resolution: window.devicePixelRatio,
127+
})
128+
mainRenderTexture.framebuffer.multisample = PIXI.MSAA_QUALITY.LOW
129+
const mainRenderSprite = new PIXI.Sprite(mainRenderTexture)
130+
app.stage.addChild(mainRenderSprite)
131+
132+
mainRenderContainer = new PIXI.Container()
133+
mainRenderContainer.addChild(verticalScrollingContainer)
134+
} else {
135+
app.stage.addChild(verticalScrollingContainer)
136+
}
132137
})
133138
134139
let drawScheduled = false
135140
136141
function draw () {
137-
if (!drawScheduled) {
142+
if (!drawScheduled && app.renderer.type === PIXI.RENDERER_TYPE.WEBGL) {
138143
drawScheduled = true
139144
Vue.nextTick(() => {
140145
app.renderer.render(mainRenderContainer, {
141146
renderTexture: mainRenderTexture,
142147
})
148+
if (app.renderer.type === PIXI.RENDERER_TYPE.WEBGL) {
149+
const renderer = app.renderer as PIXI.Renderer
150+
renderer.framebuffer.blit()
151+
}
143152
drawScheduled = false
144153
})
145154
}
@@ -1218,7 +1227,7 @@ export default defineComponent({
12181227
app.view.style.opacity = '0'
12191228
// @ts-expect-error PIXI type is missing queueResize
12201229
app.queueResize()
1221-
mainRenderTexture.resize(app.view.width, app.view.height)
1230+
mainRenderTexture?.resize(app.view.width, app.view.height)
12221231
queueEventsUpdate()
12231232
drawLayerBackgroundEffects()
12241233
drawTimeCursor()

0 commit comments

Comments
 (0)