pex-context
pex-context copied to clipboard
Invalid scissor when rendering to fbo
A correct viewport will be set if not provided but rendering to a texture but scissor is not. https://github.com/pex-gl/pex-context/blob/master/index.js#L533
if (!cmd.viewport && cmd.pass && cmd.pass.opts.color) {
let tex = null
if (cmd.pass.opts.color[0]) {
tex = cmd.pass.opts.color[0].texture || cmd.pass.opts.color[0]
}
if (cmd.pass.opts.depth) {
tex = cmd.pass.opts.depth.texture || cmd.pass.opts.depth
}
if (tex) {
newCmd.viewport = [0, 0, tex.width, tex.height]
}
}
Other things to test:
Scissor and viewport stacking in subcommands
Should we apply parent scissor if child command overwrote it and we finished rendering? https://github.com/pex-gl/pex-context/blob/master/index.js#L1019
if (cmd.scissor !== state.scissor) {
state.scissor = cmd.scissor
gl.disable(gl.SCISSOR_TEST)
}
Same for viewport https://github.com/pex-gl/pex-context/blob/master/index.js#L1029
if (cmd.viewport) {
if (cmd.viewport !== state.viewport) {
state.viewport = cmd.viewport
gl.viewport(
state.viewport[0],
state.viewport[1],
state.viewport[2],
state.viewport[3]
)
}
}