Remove clipping support from the SVG demo.
It's overengineering and was broken anyway. WebRender has much better clipping support; let's centralize the logic in there.
This commit is contained in:
parent
934086ace8
commit
429e4a3063
|
@ -95,16 +95,9 @@ export class NoAAStrategy extends AntialiasingStrategy {
|
|||
return 1;
|
||||
}
|
||||
|
||||
private renderTargetColorTextures: WebGLTexture[];
|
||||
private renderTargetDepthTextures: WebGLTexture[];
|
||||
private renderTargetFramebuffers: WebGLFramebuffer[];
|
||||
|
||||
constructor(level: number, subpixelAA: SubpixelAAType) {
|
||||
super();
|
||||
this.framebufferSize = glmatrix.vec2.create();
|
||||
this.renderTargetColorTextures = [];
|
||||
this.renderTargetDepthTextures = [];
|
||||
this.renderTargetFramebuffers = [];
|
||||
}
|
||||
|
||||
attachMeshes(renderer: Renderer) {}
|
||||
|
@ -131,50 +124,12 @@ export class NoAAStrategy extends AntialiasingStrategy {
|
|||
const renderContext = renderer.renderContext;
|
||||
const gl = renderContext.gl;
|
||||
|
||||
if (renderer.usesIntermediateRenderTargets &&
|
||||
(renderer.renderTaskTypeForObject(objectIndex) === 'clip' ||
|
||||
renderer.compositingOperationForObject(objectIndex) != null)) {
|
||||
if (this.renderTargetColorTextures[objectIndex] == null) {
|
||||
this.renderTargetColorTextures[objectIndex] =
|
||||
createFramebufferColorTexture(gl,
|
||||
this.framebufferSize,
|
||||
renderContext.colorAlphaFormat);
|
||||
}
|
||||
if (this.renderTargetDepthTextures[objectIndex] == null) {
|
||||
this.renderTargetDepthTextures[objectIndex] =
|
||||
createFramebufferDepthTexture(gl, this.framebufferSize);
|
||||
}
|
||||
if (this.renderTargetFramebuffers[objectIndex] == null) {
|
||||
this.renderTargetFramebuffers[objectIndex] =
|
||||
createFramebuffer(gl,
|
||||
this.renderTargetColorTextures[objectIndex],
|
||||
this.renderTargetDepthTextures[objectIndex]);
|
||||
}
|
||||
gl.bindFramebuffer(gl.FRAMEBUFFER, this.renderTargetFramebuffers[objectIndex]);
|
||||
} else {
|
||||
gl.bindFramebuffer(gl.FRAMEBUFFER, renderer.destFramebuffer);
|
||||
}
|
||||
|
||||
gl.viewport(0, 0, this.framebufferSize[0], this.framebufferSize[1]);
|
||||
gl.disable(gl.SCISSOR_TEST);
|
||||
}
|
||||
|
||||
finishDirectlyRenderingObject(renderer: Renderer, objectIndex: number): void {
|
||||
if (!renderer.usesIntermediateRenderTargets)
|
||||
return;
|
||||
|
||||
const compositingOperation = renderer.compositingOperationForObject(objectIndex);
|
||||
if (compositingOperation == null)
|
||||
return;
|
||||
|
||||
const gl = renderer.renderContext.gl;
|
||||
gl.bindFramebuffer(gl.FRAMEBUFFER, renderer.destFramebuffer);
|
||||
gl.viewport(0, 0, renderer.destAllocatedSize[0], renderer.destAllocatedSize[1]);
|
||||
gl.disable(gl.DEPTH_TEST);
|
||||
gl.disable(gl.BLEND);
|
||||
|
||||
compositingOperation.composite(renderer, objectIndex, this.renderTargetColorTextures);
|
||||
}
|
||||
finishDirectlyRenderingObject(renderer: Renderer, objectIndex: number): void {}
|
||||
|
||||
antialiasObject(renderer: Renderer, objectIndex: number): void {}
|
||||
|
||||
|
|
|
@ -64,10 +64,6 @@ export abstract class Renderer {
|
|||
return glmatrix.vec4.clone([1.0, 1.0, 1.0, 1.0]);
|
||||
}
|
||||
|
||||
get usesIntermediateRenderTargets(): boolean {
|
||||
return false;
|
||||
}
|
||||
|
||||
get meshesAttached(): boolean {
|
||||
return this.meshes != null && this.meshData != null;
|
||||
}
|
||||
|
@ -346,10 +342,6 @@ export abstract class Renderer {
|
|||
return 'color';
|
||||
}
|
||||
|
||||
compositingOperationForObject(objectIndex: number): CompositingOperation | null {
|
||||
return null;
|
||||
}
|
||||
|
||||
meshIndexForObject(objectIndex: number): number {
|
||||
return objectIndex;
|
||||
}
|
||||
|
|
|
@ -36,9 +36,6 @@ export default class SSAAStrategy extends AntialiasingStrategy {
|
|||
private supersampledColorTexture: WebGLTexture;
|
||||
private supersampledDepthTexture: WebGLTexture;
|
||||
private supersampledFramebuffer: WebGLFramebuffer;
|
||||
private renderTargetColorTextures: WebGLTexture[];
|
||||
private renderTargetDepthTextures: WebGLTexture[];
|
||||
private renderTargetFramebuffers: WebGLFramebuffer[];
|
||||
|
||||
constructor(level: number, subpixelAA: SubpixelAAType) {
|
||||
super();
|
||||
|
@ -47,10 +44,6 @@ export default class SSAAStrategy extends AntialiasingStrategy {
|
|||
this.subpixelAA = subpixelAA;
|
||||
this.destFramebufferSize = glmatrix.vec2.create();
|
||||
this.supersampledFramebufferSize = glmatrix.vec2.create();
|
||||
|
||||
this.renderTargetColorTextures = [];
|
||||
this.renderTargetDepthTextures = [];
|
||||
this.renderTargetFramebuffers = [];
|
||||
}
|
||||
|
||||
attachMeshes(renderer: Renderer): void {}
|
||||
|
@ -114,30 +107,7 @@ export default class SSAAStrategy extends AntialiasingStrategy {
|
|||
const renderContext = renderer.renderContext;
|
||||
const gl = renderContext.gl;
|
||||
|
||||
if (renderer.usesIntermediateRenderTargets &&
|
||||
(renderer.renderTaskTypeForObject(objectIndex) === 'clip' ||
|
||||
renderer.compositingOperationForObject(objectIndex) != null)) {
|
||||
if (this.renderTargetColorTextures[objectIndex] == null) {
|
||||
this.renderTargetColorTextures[objectIndex] =
|
||||
createFramebufferColorTexture(gl,
|
||||
this.supersampledFramebufferSize,
|
||||
renderContext.colorAlphaFormat);
|
||||
}
|
||||
if (this.renderTargetDepthTextures[objectIndex] == null) {
|
||||
this.renderTargetDepthTextures[objectIndex] =
|
||||
createFramebufferDepthTexture(gl, this.supersampledFramebufferSize);
|
||||
}
|
||||
if (this.renderTargetFramebuffers[objectIndex] == null) {
|
||||
this.renderTargetFramebuffers[objectIndex] =
|
||||
createFramebuffer(gl,
|
||||
this.renderTargetColorTextures[objectIndex],
|
||||
this.renderTargetDepthTextures[objectIndex]);
|
||||
}
|
||||
gl.bindFramebuffer(gl.FRAMEBUFFER, this.renderTargetFramebuffers[objectIndex]);
|
||||
} else {
|
||||
gl.bindFramebuffer(gl.FRAMEBUFFER, this.supersampledFramebuffer);
|
||||
}
|
||||
|
||||
gl.viewport(0,
|
||||
0,
|
||||
this.supersampledFramebufferSize[0],
|
||||
|
@ -145,25 +115,7 @@ export default class SSAAStrategy extends AntialiasingStrategy {
|
|||
gl.disable(gl.SCISSOR_TEST);
|
||||
}
|
||||
|
||||
finishDirectlyRenderingObject(renderer: Renderer, objectIndex: number): void {
|
||||
if (!renderer.usesIntermediateRenderTargets)
|
||||
return;
|
||||
|
||||
const compositingOperation = renderer.compositingOperationForObject(objectIndex);
|
||||
if (compositingOperation == null)
|
||||
return;
|
||||
|
||||
const gl = renderer.renderContext.gl;
|
||||
gl.bindFramebuffer(gl.FRAMEBUFFER, this.supersampledFramebuffer);
|
||||
gl.viewport(0,
|
||||
0,
|
||||
this.supersampledFramebufferSize[0],
|
||||
this.supersampledFramebufferSize[1]);
|
||||
gl.disable(gl.DEPTH_TEST);
|
||||
gl.disable(gl.BLEND);
|
||||
|
||||
compositingOperation.composite(renderer, objectIndex, this.renderTargetColorTextures);
|
||||
}
|
||||
finishDirectlyRenderingObject(renderer: Renderer, objectIndex: number): void {}
|
||||
|
||||
antialiasObject(renderer: Renderer): void {}
|
||||
|
||||
|
|
|
@ -66,10 +66,6 @@ export abstract class SVGRenderer extends Renderer {
|
|||
return this.destAllocatedSize;
|
||||
}
|
||||
|
||||
get usesIntermediateRenderTargets(): boolean {
|
||||
return true;
|
||||
}
|
||||
|
||||
get backgroundColor(): glmatrix.vec4 {
|
||||
return glmatrix.vec4.clone([1.0, 1.0, 1.0, 1.0]);
|
||||
}
|
||||
|
|
|
@ -56,10 +56,6 @@ export abstract class XCAAStrategy extends AntialiasingStrategy {
|
|||
protected aaDepthTexture: WebGLTexture | null;
|
||||
protected aaFramebuffer: WebGLFramebuffer | null;
|
||||
|
||||
protected renderTargetColorTextures: WebGLTexture[];
|
||||
protected renderTargetDepthTextures: WebGLTexture[];
|
||||
protected renderTargetFramebuffers: WebGLFramebuffer[];
|
||||
|
||||
constructor(level: number, subpixelAA: SubpixelAAType) {
|
||||
super();
|
||||
|
||||
|
@ -67,10 +63,6 @@ export abstract class XCAAStrategy extends AntialiasingStrategy {
|
|||
|
||||
this.supersampledFramebufferSize = glmatrix.vec2.create();
|
||||
this.destFramebufferSize = glmatrix.vec2.create();
|
||||
|
||||
this.renderTargetColorTextures = [];
|
||||
this.renderTargetDepthTextures = [];
|
||||
this.renderTargetFramebuffers = [];
|
||||
}
|
||||
|
||||
init(renderer: Renderer): void {
|
||||
|
@ -172,21 +164,6 @@ export abstract class XCAAStrategy extends AntialiasingStrategy {
|
|||
this.setAdditionalStateForResolveIfNecessary(renderer, resolveProgram, 1);
|
||||
gl.drawElements(renderContext.gl.TRIANGLES, 6, gl.UNSIGNED_BYTE, 0);
|
||||
renderContext.vertexArrayObjectExt.bindVertexArrayOES(null);
|
||||
|
||||
// Resolve render target if necessary.
|
||||
if (!renderer.usesIntermediateRenderTargets)
|
||||
return;
|
||||
|
||||
const compositingOperation = renderer.compositingOperationForObject(objectIndex);
|
||||
if (compositingOperation == null)
|
||||
return;
|
||||
|
||||
gl.bindFramebuffer(gl.FRAMEBUFFER, renderer.destFramebuffer);
|
||||
gl.viewport(0, 0, this.destFramebufferSize[0], this.destFramebufferSize[1]);
|
||||
gl.disable(gl.DEPTH_TEST);
|
||||
gl.disable(gl.BLEND);
|
||||
|
||||
compositingOperation.composite(renderer, objectIndex, this.renderTargetColorTextures);
|
||||
}
|
||||
|
||||
resolve(pass: number, renderer: Renderer): void {}
|
||||
|
@ -271,30 +248,7 @@ export abstract class XCAAStrategy extends AntialiasingStrategy {
|
|||
const renderContext = renderer.renderContext;
|
||||
const gl = renderContext.gl;
|
||||
|
||||
if (renderer.usesIntermediateRenderTargets &&
|
||||
(renderer.renderTaskTypeForObject(objectIndex) === 'clip' ||
|
||||
renderer.compositingOperationForObject(objectIndex) != null)) {
|
||||
if (this.renderTargetColorTextures[objectIndex] == null) {
|
||||
this.renderTargetColorTextures[objectIndex] =
|
||||
createFramebufferColorTexture(gl,
|
||||
this.supersampledFramebufferSize,
|
||||
renderContext.colorAlphaFormat);
|
||||
}
|
||||
if (this.renderTargetDepthTextures[objectIndex] == null) {
|
||||
this.renderTargetDepthTextures[objectIndex] =
|
||||
createFramebufferDepthTexture(gl, this.supersampledFramebufferSize);
|
||||
}
|
||||
if (this.renderTargetFramebuffers[objectIndex] == null) {
|
||||
this.renderTargetFramebuffers[objectIndex] =
|
||||
createFramebuffer(gl,
|
||||
this.renderTargetColorTextures[objectIndex],
|
||||
this.renderTargetDepthTextures[objectIndex]);
|
||||
}
|
||||
gl.bindFramebuffer(gl.FRAMEBUFFER, this.renderTargetFramebuffers[objectIndex]);
|
||||
} else {
|
||||
gl.bindFramebuffer(gl.FRAMEBUFFER, renderer.destFramebuffer);
|
||||
}
|
||||
|
||||
gl.viewport(0, 0, this.destFramebufferSize[0], this.destFramebufferSize[1]);
|
||||
gl.disable(gl.SCISSOR_TEST);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue