From f7238c9a32b3918fe47369b84c27862484764234 Mon Sep 17 00:00:00 2001 From: Alexander Rose <alex.rose@rcsb.org> Date: Fri, 22 Mar 2019 18:39:09 -0700 Subject: [PATCH] better handling of render program changes --- src/mol-gl/webgl/context.ts | 2 -- src/mol-gl/webgl/render-item.ts | 12 ++++++------ 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/mol-gl/webgl/context.ts b/src/mol-gl/webgl/context.ts index 2b3edcf6f..b849f9f9a 100644 --- a/src/mol-gl/webgl/context.ts +++ b/src/mol-gl/webgl/context.ts @@ -137,7 +137,6 @@ export interface WebGLContext { currentProgramId: number currentMaterialId: number - currentRenderVariant: string bufferCount: number framebufferCount: number @@ -266,7 +265,6 @@ export function createContext(gl: GLRenderingContext): WebGLContext { currentProgramId: -1, currentMaterialId: -1, - currentRenderVariant: '', bufferCount: 0, framebufferCount: 0, diff --git a/src/mol-gl/webgl/render-item.ts b/src/mol-gl/webgl/render-item.ts index 108cfdbf2..3b924260b 100644 --- a/src/mol-gl/webgl/render-item.ts +++ b/src/mol-gl/webgl/render-item.ts @@ -130,6 +130,7 @@ export function createRenderItem(ctx: WebGLContext, drawMode: DrawMode, shaderCo const valueChanges = createValueChanges() let destroyed = false + let currentProgramId = -1 return { id, @@ -140,13 +141,12 @@ export function createRenderItem(ctx: WebGLContext, drawMode: DrawMode, shaderCo const program = programs[variant].value const vertexArray = vertexArrays[variant] program.setUniforms(uniformValueEntries) - if (ctx.currentRenderVariant !== variant) { - ctx.currentMaterialId = -1 - ctx.currentRenderVariant = variant - } - if (materialId === -1 || materialId !== ctx.currentMaterialId) { - // console.log('materialId changed or -1', materialId) + if (program.id !== currentProgramId || + materialId === -1 || materialId !== ctx.currentMaterialId + ) { + // console.log('program.id changed or materialId changed/-1', materialId) program.setUniforms(materialUniformValueEntries) + currentProgramId = program.id ctx.currentMaterialId = materialId } program.bindTextures(textures) -- GitLab