diff --git a/src/mol-gl/compute/histogram-pyramid/reduction.ts b/src/mol-gl/compute/histogram-pyramid/reduction.ts index 5a9fb03a16ea95b06a0fe3f8efd5852926269c35..2cdc5c6664c59fc7f6fd2aa5149d46d0e6920793 100644 --- a/src/mol-gl/compute/histogram-pyramid/reduction.ts +++ b/src/mol-gl/compute/histogram-pyramid/reduction.ts @@ -40,7 +40,7 @@ function getHistopyramidReductionRenderable(ctx: WebGLContext, initialTexture: T } /** name for shared framebuffer used for histogram-pyramid operations */ -const FramebufferName = 'histogram-pyramid' +const FramebufferName = 'histogram-pyramid-reduction' function setRenderingDefaults(gl: GLRenderingContext) { gl.disable(gl.CULL_FACE) @@ -66,7 +66,7 @@ export function createHistogramPyramid(ctx: WebGLContext, inputTexture: Texture) // This part set the levels const levels = Math.ceil(Math.log(inputTextureMaxDim) / Math.log(2)) - console.log('levels', levels) + // console.log('levels', levels) const initialTexture = createTexture(ctx, 'image-float32', 'rgba', 'float', 'nearest') initialTexture.load({ array: new Float32Array(4), width: 1, height: 1 }) @@ -101,7 +101,7 @@ export function createHistogramPyramid(ctx: WebGLContext, inputTexture: Texture) levelTextures[currLevel].attachFramebuffer(framebuffer, 0) const size = Math.pow(2, currLevel) - console.log('size', size, 'draw-level', currLevel, 'read-level', levels - i) + // console.log('size', size, 'draw-level', currLevel, 'read-level', levels - i) gl.clear(gl.COLOR_BUFFER_BIT) ValueCell.update(renderable.values.uSize, Math.pow(2, i + 1) / initialTextureMaxDim) @@ -140,7 +140,7 @@ export function createHistogramPyramid(ctx: WebGLContext, inputTexture: Texture) const finalCount = getHistopyramidSum(ctx, levelTextures[0]) const height = Math.ceil(finalCount / Math.pow(2, levels)) - console.log('height', height, 'finalCount', finalCount) + // console.log('height', height, 'finalCount', finalCount) // diff --git a/src/mol-gl/compute/histogram-pyramid/sum.ts b/src/mol-gl/compute/histogram-pyramid/sum.ts index 6f855a6230f51936b596b3b8f60245cad3b770c4..26a3ab45f93afc3e54ef40b993a052f7dd670bb0 100644 --- a/src/mol-gl/compute/histogram-pyramid/sum.ts +++ b/src/mol-gl/compute/histogram-pyramid/sum.ts @@ -12,7 +12,7 @@ import { Texture, createTexture } from 'mol-gl/webgl/texture'; import { ShaderCode } from 'mol-gl/shader-code'; import { ValueCell } from 'mol-util'; import { decodeFloatRGB } from 'mol-util/float-packing'; -import { readTexture, QuadSchema, QuadValues } from '../util'; +import { QuadSchema, QuadValues } from '../util'; const HistopyramidSumSchema = { ...QuadSchema, @@ -36,25 +36,29 @@ function getHistopyramidSumRenderable(ctx: WebGLContext, texture: Texture) { } /** name for shared framebuffer used for histogram-pyramid operations */ -const FramebufferName = 'histogram-pyramid' +const FramebufferName = 'histogram-pyramid-sum' +const sumArray = new Uint8Array(4) export function getHistopyramidSum(ctx: WebGLContext, pyramidTopTexture: Texture) { const { gl, framebufferCache } = ctx const framebuffer = framebufferCache.get(FramebufferName).value + framebuffer.bind() + gl.viewport(0, 0, 1, 1) - const encodeFloatRenderable = getHistopyramidSumRenderable(ctx, pyramidTopTexture) - encodeFloatRenderable.update() - encodeFloatRenderable.use() + const renderable = getHistopyramidSumRenderable(ctx, pyramidTopTexture) + renderable.update() + renderable.use() // TODO cache globally for reuse - const encodedFloatTexture = createTexture(ctx, 'image-uint8', 'rgba', 'ubyte', 'nearest') - encodedFloatTexture.define(1, 1) - encodedFloatTexture.attachFramebuffer(framebuffer, 0) + const sumTexture = createTexture(ctx, 'image-uint8', 'rgba', 'ubyte', 'nearest') + sumTexture.define(1, 1) + sumTexture.attachFramebuffer(framebuffer, 0) - gl.viewport(0, 0, 1, 1) - encodeFloatRenderable.render() + renderable.render() + ctx.readPixels(0, 0, 1, 1, sumArray) + + ctx.unbindFramebuffer() - const sumImage = readTexture(ctx, encodedFloatTexture) - return decodeFloatRGB(sumImage.array[0], sumImage.array[1], sumImage.array[2]) + return decodeFloatRGB(sumArray[0], sumArray[1], sumArray[2]) } \ No newline at end of file diff --git a/src/mol-gl/compute/marching-cubes/active-voxels.ts b/src/mol-gl/compute/marching-cubes/active-voxels.ts index bdb0302bb818cd1c48d95d753feaf7886fdd11db..ffd9b6fbb18dd185d0ea7ee60e83ebf789f7d20c 100644 --- a/src/mol-gl/compute/marching-cubes/active-voxels.ts +++ b/src/mol-gl/compute/marching-cubes/active-voxels.ts @@ -17,7 +17,7 @@ import { QuadSchema, QuadValues } from '../util'; import { getTriCount } from './tables'; /** name for shared framebuffer used for gpu marching cubes operations */ -const FramebufferName = 'marching-cubes' +const FramebufferName = 'marching-cubes-active-voxels' const ActiveVoxelsSchema = { ...QuadSchema, diff --git a/src/mol-gl/compute/marching-cubes/isosurface.ts b/src/mol-gl/compute/marching-cubes/isosurface.ts index 8f33104972f4e9374dffc153f1601cd4116cc797..a893c158fc1840907e4df779b872e59b00d4ba94 100644 --- a/src/mol-gl/compute/marching-cubes/isosurface.ts +++ b/src/mol-gl/compute/marching-cubes/isosurface.ts @@ -18,7 +18,7 @@ import { HistogramPyramid } from '../histogram-pyramid/reduction'; import { getTriIndices } from './tables'; /** name for shared framebuffer used for gpu marching cubes operations */ -const FramebufferName = 'marching-cubes' +const FramebufferName = 'marching-cubes-isosurface' const IsosurfaceSchema = { ...QuadSchema,