From 223e9dd22dff71ebb683641bd3c74f354f592da6 Mon Sep 17 00:00:00 2001 From: Alexander Rose <alex.rose@rcsb.org> Date: Fri, 5 Apr 2019 10:04:23 -0700 Subject: [PATCH] gl, call program.use automatically when possible --- src/mol-gl/compute/histogram-pyramid/reduction.ts | 2 -- src/mol-gl/compute/histogram-pyramid/sum.ts | 1 - src/mol-gl/compute/marching-cubes/active-voxels.ts | 1 - src/mol-gl/compute/marching-cubes/isosurface.ts | 1 - src/mol-gl/renderable.ts | 2 -- src/mol-gl/renderer.ts | 2 +- src/mol-gl/webgl/render-item.ts | 7 +++---- src/mol-math/geometry/gaussian-density/gpu.ts | 3 --- 8 files changed, 4 insertions(+), 15 deletions(-) diff --git a/src/mol-gl/compute/histogram-pyramid/reduction.ts b/src/mol-gl/compute/histogram-pyramid/reduction.ts index 2cdc5c666..3b315acdf 100644 --- a/src/mol-gl/compute/histogram-pyramid/reduction.ts +++ b/src/mol-gl/compute/histogram-pyramid/reduction.ts @@ -93,7 +93,6 @@ export function createHistogramPyramid(ctx: WebGLContext, inputTexture: Texture) const renderable = getHistopyramidReductionRenderable(ctx, initialTexture) renderable.update() - renderable.use() let offset = 0; for (let i = 0; i < levels; i++) { @@ -110,7 +109,6 @@ export function createHistogramPyramid(ctx: WebGLContext, inputTexture: Texture) ValueCell.update(renderable.values.tPreviousLevel, readTex) renderable.update() - renderable.use() setRenderingDefaults(gl) gl.viewport(0, 0, size, size) renderable.render() diff --git a/src/mol-gl/compute/histogram-pyramid/sum.ts b/src/mol-gl/compute/histogram-pyramid/sum.ts index 26a3ab45f..00d97e17e 100644 --- a/src/mol-gl/compute/histogram-pyramid/sum.ts +++ b/src/mol-gl/compute/histogram-pyramid/sum.ts @@ -48,7 +48,6 @@ export function getHistopyramidSum(ctx: WebGLContext, pyramidTopTexture: Texture const renderable = getHistopyramidSumRenderable(ctx, pyramidTopTexture) renderable.update() - renderable.use() // TODO cache globally for reuse const sumTexture = createTexture(ctx, 'image-uint8', 'rgba', 'ubyte', 'nearest') diff --git a/src/mol-gl/compute/marching-cubes/active-voxels.ts b/src/mol-gl/compute/marching-cubes/active-voxels.ts index ffd9b6fbb..c52b1c229 100644 --- a/src/mol-gl/compute/marching-cubes/active-voxels.ts +++ b/src/mol-gl/compute/marching-cubes/active-voxels.ts @@ -71,7 +71,6 @@ export function calcActiveVoxels(ctx: WebGLContext, cornerTex: Texture, gridDime const renderable = getActiveVoxelsRenderable(ctx, cornerTex, gridDimensions, isoValue) renderable.update() - renderable.use() activeVoxelsTex.attachFramebuffer(framebuffer, 0) setRenderingDefaults(gl) diff --git a/src/mol-gl/compute/marching-cubes/isosurface.ts b/src/mol-gl/compute/marching-cubes/isosurface.ts index a893c158f..b1753b516 100644 --- a/src/mol-gl/compute/marching-cubes/isosurface.ts +++ b/src/mol-gl/compute/marching-cubes/isosurface.ts @@ -110,7 +110,6 @@ export function createIsosurfaceBuffers(ctx: WebGLContext, activeVoxelsBase: Tex const pr = getIsosurfaceRenderable(ctx, pyramidTex, activeVoxelsBase, volumeData, totalTex, gridDimensions, transform, isoValue, levels, scale) pr.update() - pr.use() vertexGroupTexture.attachFramebuffer(framebuffer, 0) normalTexture.attachFramebuffer(framebuffer, 1) diff --git a/src/mol-gl/renderable.ts b/src/mol-gl/renderable.ts index 62817b1e0..19bb43892 100644 --- a/src/mol-gl/renderable.ts +++ b/src/mol-gl/renderable.ts @@ -61,7 +61,6 @@ export interface ComputeRenderable<T extends RenderableValues> { readonly values: T render: () => void - use: () => void update: () => void dispose: () => void } @@ -72,7 +71,6 @@ export function createComputeRenderable<T extends Values<RenderableSchema>>(rend values, render: () => renderItem.render('compute'), - use: () => renderItem.getProgram('compute').use(), update: () => renderItem.update(), dispose: () => renderItem.destroy() } diff --git a/src/mol-gl/renderer.ts b/src/mol-gl/renderer.ts index fbc6b146f..ec9095bf1 100644 --- a/src/mol-gl/renderer.ts +++ b/src/mol-gl/renderer.ts @@ -114,9 +114,9 @@ namespace Renderer { if (state.currentProgramId !== program.id) { // console.log('new program') globalUniformsNeedUpdate = true + program.use() } - program.use() if (globalUniformsNeedUpdate) { // console.log('globalUniformsNeedUpdate') program.setUniforms(globalUniformList) diff --git a/src/mol-gl/webgl/render-item.ts b/src/mol-gl/webgl/render-item.ts index 299fe2d33..dffc339b9 100644 --- a/src/mol-gl/webgl/render-item.ts +++ b/src/mol-gl/webgl/render-item.ts @@ -154,7 +154,6 @@ export function createRenderItem<T extends RenderVariantDefines, S extends keyof const valueChanges = createValueChanges() let destroyed = false - let currentProgramId = -1 return { id, @@ -165,15 +164,15 @@ export function createRenderItem<T extends RenderVariantDefines, S extends keyof if (drawCount === 0 || instanceCount === 0) return const program = programs[variant].value const vertexArray = vertexArrays[variant] - program.setUniforms(uniformValueEntries) - if (program.id !== currentProgramId || + if (program.id !== state.currentProgramId || materialId === -1 || materialId !== state.currentMaterialId ) { // console.log('program.id changed or materialId changed/-1', materialId) + if (program.id !== state.currentProgramId) program.use() program.setUniforms(materialUniformValueEntries) - currentProgramId = program.id state.currentMaterialId = materialId } + program.setUniforms(uniformValueEntries) program.bindTextures(textures) if (vertexArrayObject && vertexArray) { vertexArrayObject.bindVertexArray(vertexArray) diff --git a/src/mol-math/geometry/gaussian-density/gpu.ts b/src/mol-math/geometry/gaussian-density/gpu.ts index cf12509b2..5087730d8 100644 --- a/src/mol-math/geometry/gaussian-density/gpu.ts +++ b/src/mol-math/geometry/gaussian-density/gpu.ts @@ -285,7 +285,6 @@ function setupMinDistanceRendering(webgl: WebGLContext, renderable: ComputeRende const { gl } = webgl ValueCell.update(renderable.values.dCalcType, 'minDistance') renderable.update() - renderable.use() gl.blendFunc(gl.ONE, gl.ONE) // the shader writes 1 - dist so we set blending to MAX gl.blendEquation(webgl.extensions.blendMinMax.MAX) @@ -295,7 +294,6 @@ function setupDensityRendering(webgl: WebGLContext, renderable: ComputeRenderabl const { gl } = webgl ValueCell.update(renderable.values.dCalcType, 'density') renderable.update() - renderable.use() gl.blendFunc(gl.ONE, gl.ONE) gl.blendEquation(gl.FUNC_ADD) } @@ -304,7 +302,6 @@ function setupGroupIdRendering(webgl: WebGLContext, renderable: ComputeRenderabl const { gl } = webgl ValueCell.update(renderable.values.dCalcType, 'groupId') renderable.update() - renderable.use() // overwrite color, don't change alpha gl.blendFuncSeparate(gl.ONE, gl.ZERO, gl.ZERO, gl.ONE) gl.blendEquation(gl.FUNC_ADD) -- GitLab