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;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
private renderTargetColorTextures: WebGLTexture[];
|
|
||||||
private renderTargetDepthTextures: WebGLTexture[];
|
|
||||||
private renderTargetFramebuffers: WebGLFramebuffer[];
|
|
||||||
|
|
||||||
constructor(level: number, subpixelAA: SubpixelAAType) {
|
constructor(level: number, subpixelAA: SubpixelAAType) {
|
||||||
super();
|
super();
|
||||||
this.framebufferSize = glmatrix.vec2.create();
|
this.framebufferSize = glmatrix.vec2.create();
|
||||||
this.renderTargetColorTextures = [];
|
|
||||||
this.renderTargetDepthTextures = [];
|
|
||||||
this.renderTargetFramebuffers = [];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
attachMeshes(renderer: Renderer) {}
|
attachMeshes(renderer: Renderer) {}
|
||||||
|
@ -131,50 +124,12 @@ export class NoAAStrategy extends AntialiasingStrategy {
|
||||||
const renderContext = renderer.renderContext;
|
const renderContext = renderer.renderContext;
|
||||||
const gl = renderContext.gl;
|
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.bindFramebuffer(gl.FRAMEBUFFER, renderer.destFramebuffer);
|
||||||
}
|
|
||||||
|
|
||||||
gl.viewport(0, 0, this.framebufferSize[0], this.framebufferSize[1]);
|
gl.viewport(0, 0, this.framebufferSize[0], this.framebufferSize[1]);
|
||||||
gl.disable(gl.SCISSOR_TEST);
|
gl.disable(gl.SCISSOR_TEST);
|
||||||
}
|
}
|
||||||
|
|
||||||
finishDirectlyRenderingObject(renderer: Renderer, objectIndex: number): void {
|
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
antialiasObject(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]);
|
return glmatrix.vec4.clone([1.0, 1.0, 1.0, 1.0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
get usesIntermediateRenderTargets(): boolean {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
get meshesAttached(): boolean {
|
get meshesAttached(): boolean {
|
||||||
return this.meshes != null && this.meshData != null;
|
return this.meshes != null && this.meshData != null;
|
||||||
}
|
}
|
||||||
|
@ -346,10 +342,6 @@ export abstract class Renderer {
|
||||||
return 'color';
|
return 'color';
|
||||||
}
|
}
|
||||||
|
|
||||||
compositingOperationForObject(objectIndex: number): CompositingOperation | null {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
meshIndexForObject(objectIndex: number): number {
|
meshIndexForObject(objectIndex: number): number {
|
||||||
return objectIndex;
|
return objectIndex;
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,9 +36,6 @@ export default class SSAAStrategy extends AntialiasingStrategy {
|
||||||
private supersampledColorTexture: WebGLTexture;
|
private supersampledColorTexture: WebGLTexture;
|
||||||
private supersampledDepthTexture: WebGLTexture;
|
private supersampledDepthTexture: WebGLTexture;
|
||||||
private supersampledFramebuffer: WebGLFramebuffer;
|
private supersampledFramebuffer: WebGLFramebuffer;
|
||||||
private renderTargetColorTextures: WebGLTexture[];
|
|
||||||
private renderTargetDepthTextures: WebGLTexture[];
|
|
||||||
private renderTargetFramebuffers: WebGLFramebuffer[];
|
|
||||||
|
|
||||||
constructor(level: number, subpixelAA: SubpixelAAType) {
|
constructor(level: number, subpixelAA: SubpixelAAType) {
|
||||||
super();
|
super();
|
||||||
|
@ -47,10 +44,6 @@ export default class SSAAStrategy extends AntialiasingStrategy {
|
||||||
this.subpixelAA = subpixelAA;
|
this.subpixelAA = subpixelAA;
|
||||||
this.destFramebufferSize = glmatrix.vec2.create();
|
this.destFramebufferSize = glmatrix.vec2.create();
|
||||||
this.supersampledFramebufferSize = glmatrix.vec2.create();
|
this.supersampledFramebufferSize = glmatrix.vec2.create();
|
||||||
|
|
||||||
this.renderTargetColorTextures = [];
|
|
||||||
this.renderTargetDepthTextures = [];
|
|
||||||
this.renderTargetFramebuffers = [];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
attachMeshes(renderer: Renderer): void {}
|
attachMeshes(renderer: Renderer): void {}
|
||||||
|
@ -114,30 +107,7 @@ export default class SSAAStrategy extends AntialiasingStrategy {
|
||||||
const renderContext = renderer.renderContext;
|
const renderContext = renderer.renderContext;
|
||||||
const gl = renderContext.gl;
|
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.bindFramebuffer(gl.FRAMEBUFFER, this.supersampledFramebuffer);
|
||||||
}
|
|
||||||
|
|
||||||
gl.viewport(0,
|
gl.viewport(0,
|
||||||
0,
|
0,
|
||||||
this.supersampledFramebufferSize[0],
|
this.supersampledFramebufferSize[0],
|
||||||
|
@ -145,25 +115,7 @@ export default class SSAAStrategy extends AntialiasingStrategy {
|
||||||
gl.disable(gl.SCISSOR_TEST);
|
gl.disable(gl.SCISSOR_TEST);
|
||||||
}
|
}
|
||||||
|
|
||||||
finishDirectlyRenderingObject(renderer: Renderer, objectIndex: number): void {
|
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
antialiasObject(renderer: Renderer): void {}
|
antialiasObject(renderer: Renderer): void {}
|
||||||
|
|
||||||
|
|
|
@ -66,10 +66,6 @@ export abstract class SVGRenderer extends Renderer {
|
||||||
return this.destAllocatedSize;
|
return this.destAllocatedSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
get usesIntermediateRenderTargets(): boolean {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
get backgroundColor(): glmatrix.vec4 {
|
get backgroundColor(): glmatrix.vec4 {
|
||||||
return glmatrix.vec4.clone([1.0, 1.0, 1.0, 1.0]);
|
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 aaDepthTexture: WebGLTexture | null;
|
||||||
protected aaFramebuffer: WebGLFramebuffer | null;
|
protected aaFramebuffer: WebGLFramebuffer | null;
|
||||||
|
|
||||||
protected renderTargetColorTextures: WebGLTexture[];
|
|
||||||
protected renderTargetDepthTextures: WebGLTexture[];
|
|
||||||
protected renderTargetFramebuffers: WebGLFramebuffer[];
|
|
||||||
|
|
||||||
constructor(level: number, subpixelAA: SubpixelAAType) {
|
constructor(level: number, subpixelAA: SubpixelAAType) {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
|
@ -67,10 +63,6 @@ export abstract class XCAAStrategy extends AntialiasingStrategy {
|
||||||
|
|
||||||
this.supersampledFramebufferSize = glmatrix.vec2.create();
|
this.supersampledFramebufferSize = glmatrix.vec2.create();
|
||||||
this.destFramebufferSize = glmatrix.vec2.create();
|
this.destFramebufferSize = glmatrix.vec2.create();
|
||||||
|
|
||||||
this.renderTargetColorTextures = [];
|
|
||||||
this.renderTargetDepthTextures = [];
|
|
||||||
this.renderTargetFramebuffers = [];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
init(renderer: Renderer): void {
|
init(renderer: Renderer): void {
|
||||||
|
@ -172,21 +164,6 @@ export abstract class XCAAStrategy extends AntialiasingStrategy {
|
||||||
this.setAdditionalStateForResolveIfNecessary(renderer, resolveProgram, 1);
|
this.setAdditionalStateForResolveIfNecessary(renderer, resolveProgram, 1);
|
||||||
gl.drawElements(renderContext.gl.TRIANGLES, 6, gl.UNSIGNED_BYTE, 0);
|
gl.drawElements(renderContext.gl.TRIANGLES, 6, gl.UNSIGNED_BYTE, 0);
|
||||||
renderContext.vertexArrayObjectExt.bindVertexArrayOES(null);
|
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 {}
|
resolve(pass: number, renderer: Renderer): void {}
|
||||||
|
@ -271,30 +248,7 @@ export abstract class XCAAStrategy extends AntialiasingStrategy {
|
||||||
const renderContext = renderer.renderContext;
|
const renderContext = renderer.renderContext;
|
||||||
const gl = renderContext.gl;
|
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.bindFramebuffer(gl.FRAMEBUFFER, renderer.destFramebuffer);
|
||||||
}
|
|
||||||
|
|
||||||
gl.viewport(0, 0, this.destFramebufferSize[0], this.destFramebufferSize[1]);
|
gl.viewport(0, 0, this.destFramebufferSize[0], this.destFramebufferSize[1]);
|
||||||
gl.disable(gl.SCISSOR_TEST);
|
gl.disable(gl.SCISSOR_TEST);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue