From 530bcd0c8810956b9ac37545e4e547730f601bd6 Mon Sep 17 00:00:00 2001 From: Olivier Guyot Date: Fri, 16 Nov 2018 01:50:44 +0100 Subject: [PATCH] Improve handling of uniforms in webgl helper --- src/ol/renderer/webgl-new/PointsLayer.js | 2 +- src/ol/webgl/Helper.js | 6 ++---- src/ol/webgl/PostProcessingPass.js | 8 ++++---- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/ol/renderer/webgl-new/PointsLayer.js b/src/ol/renderer/webgl-new/PointsLayer.js index 7ae82c0290..7265181fd7 100644 --- a/src/ol/renderer/webgl-new/PointsLayer.js +++ b/src/ol/renderer/webgl-new/PointsLayer.js @@ -100,7 +100,7 @@ class WebGLPointsLayerRenderer extends LayerRenderer { renderFrame(frameState, layerState) { this.context_.setUniformFloatValue(DefaultUniform.OPACITY, layerState.opacity); this.context_.drawElements(0, this.indicesBuffer_.getArray().length); - this.context_.finalizeDraw(); + this.context_.finalizeDraw(frameState); return this.context_.getCanvas(); } diff --git a/src/ol/webgl/Helper.js b/src/ol/webgl/Helper.js index 4a6ef33e3b..6e6205ce4e 100644 --- a/src/ol/webgl/Helper.js +++ b/src/ol/webgl/Helper.js @@ -18,8 +18,6 @@ import { } from "../transform"; import {create, fromTransform} from "../vec/mat4"; import WebGLBuffer from "./Buffer"; -import WebGLVertex from "./Vertex"; -import WebGLFragment from "./Fragment"; import WebGLPostProcessingPass from "./PostProcessingPass"; @@ -288,10 +286,10 @@ class WebGLHelper extends Disposable { /** * Copy the frame buffer to the canvas */ - finalizeDraw() { + finalizeDraw(frameState) { // apply post processes using the next one as target for (let i = 0; i < this.postProcessPasses.length; i++) { - this.postProcessPasses[i].apply(this.postProcessPasses[i + 1] || null); + this.postProcessPasses[i].apply(frameState, this.postProcessPasses[i + 1] || null); } } diff --git a/src/ol/webgl/PostProcessingPass.js b/src/ol/webgl/PostProcessingPass.js index 8526d886ed..79396d6a97 100644 --- a/src/ol/webgl/PostProcessingPass.js +++ b/src/ol/webgl/PostProcessingPass.js @@ -143,7 +143,7 @@ class WebGLPostProcessingPass { // todo // render to the next postprocessing pass (or to the canvas if final pass) - apply(nextPass) { + apply(frameState, nextPass) { const gl = this.getGL(); const canvas = gl.canvas; @@ -166,7 +166,7 @@ class WebGLPostProcessingPass { gl.uniform2f(this.renderTargetUniformLocation_, canvas.width, canvas.height); gl.uniform1i(this.renderTargetTextureLocation_, 0); - this.applyUniforms(); + this.applyUniforms(frameState); gl.drawArrays(gl.TRIANGLES, 0, 6); } @@ -177,13 +177,13 @@ class WebGLPostProcessingPass { } // todo - applyUniforms() { + applyUniforms(frameState) { const gl = this.getGL(); let value; let textureSlot = 1; this.uniforms_.forEach(function(uniform) { - value = typeof uniform.value === 'function' ? uniform.value() : uniform.value; + value = typeof uniform.value === 'function' ? uniform.value(frameState) : uniform.value; // apply value based on type if (value instanceof HTMLCanvasElement || value instanceof ImageData) {