Skip to content
Snippets Groups Projects
Commit f005f73d authored by Alexander Rose's avatar Alexander Rose
Browse files

don't delete externaly defined texture in render-item

parent a2eb5b95
No related branches found
No related tags found
No related merge requests found
...@@ -22,30 +22,9 @@ async function createGaussianDensityVolume(ctx: RuntimeContext, unit: Unit, stru ...@@ -22,30 +22,9 @@ async function createGaussianDensityVolume(ctx: RuntimeContext, unit: Unit, stru
const densityTextureData = await computeUnitGaussianDensityTexture(unit, p, oldTexture).runInContext(ctx) const densityTextureData = await computeUnitGaussianDensityTexture(unit, p, oldTexture).runInContext(ctx)
const { transform, texture, bbox, gridDimension } = densityTextureData const { transform, texture, bbox, gridDimension } = densityTextureData
directVolume = texture.depth == 0 ? directVolume = texture.depth === 0 ?
DirectVolume2d.create(bbox, gridDimension, transform, texture, directVolume as DirectVolume2d) : DirectVolume2d.create(bbox, gridDimension, transform, texture, directVolume as DirectVolume2d) :
DirectVolume3d.create(bbox, gridDimension, transform, texture, directVolume as DirectVolume3d) DirectVolume3d.create(bbox, gridDimension, transform, texture, directVolume as DirectVolume3d)
// if (directVolume) {
// ValueCell.update(directVolume.gridDimension, gridDimension)
// ValueCell.update(directVolume.gridTextureDim, Vec2.set(directVolume.gridTextureDim.ref.value, texture.width, texture.height))
// ValueCell.update(directVolume.bboxMin, bbox.min)
// ValueCell.update(directVolume.bboxMax, bbox.max)
// ValueCell.update(directVolume.bboxSize, Vec3.sub(directVolume.bboxSize.ref.value, bbox.max, bbox.min))
// ValueCell.update(directVolume.transform, transform)
// } else {
// directVolume = {
// kind: 'direct-volume-2d' as 'direct-volume-2d',
// gridDimension: ValueCell.create(gridDimension),
// gridTexture: ValueCell.create(texture),
// gridTextureDim: ValueCell.create(Vec2.create(texture.width, texture.height)),
// bboxMin: ValueCell.create(bbox.min),
// bboxMax: ValueCell.create(bbox.max),
// bboxSize: ValueCell.create(Vec3.sub(Vec3.zero(), bbox.max, bbox.min)),
// transform: ValueCell.create(transform),
// }
// }
return directVolume; return directVolume;
} }
......
...@@ -227,8 +227,9 @@ export function createRenderItem(ctx: Context, drawMode: DrawMode, shaderCode: S ...@@ -227,8 +227,9 @@ export function createRenderItem(ctx: Context, drawMode: DrawMode, shaderCode: S
Object.keys(textureValues).forEach(k => { Object.keys(textureValues).forEach(k => {
const value = textureValues[k] const value = textureValues[k]
if (value.ref.version !== versions[k]) { if (value.ref.version !== versions[k]) {
// console.log('texture version changed, uploading image', k) // update of textures with kind 'texture2d' or 'texture3d' is done externally
if (schema[k].kind !== 'texture2d' && schema[k].kind !== 'texture3d') { if (schema[k].kind !== 'texture2d' && schema[k].kind !== 'texture3d') {
// console.log('texture version changed, uploading image', k)
textures[k].load(value.ref.value as TextureImage<any> | TextureVolume<any>) textures[k].load(value.ref.value as TextureImage<any> | TextureVolume<any>)
versions[k] = value.ref.version versions[k] = value.ref.version
valueChanges.textures = true valueChanges.textures = true
...@@ -244,7 +245,12 @@ export function createRenderItem(ctx: Context, drawMode: DrawMode, shaderCode: S ...@@ -244,7 +245,12 @@ export function createRenderItem(ctx: Context, drawMode: DrawMode, shaderCode: S
programs[k].free() programs[k].free()
deleteVertexArray(ctx, vertexArrays[k]) deleteVertexArray(ctx, vertexArrays[k])
}) })
Object.keys(textures).forEach(k => textures[k].destroy()) Object.keys(textures).forEach(k => {
// lifetime of textures with kind 'texture2d' or 'texture3d' is defined externally
if (schema[k].kind !== 'texture2d' && schema[k].kind !== 'texture3d') {
textures[k].destroy()
}
})
Object.keys(attributeBuffers).forEach(k => attributeBuffers[k].destroy()) Object.keys(attributeBuffers).forEach(k => attributeBuffers[k].destroy())
if (elementsBuffer) elementsBuffer.destroy() if (elementsBuffer) elementsBuffer.destroy()
destroyed = true destroyed = true
......
...@@ -160,7 +160,7 @@ export function createTexture(ctx: Context, kind: TextureKind, _format: TextureF ...@@ -160,7 +160,7 @@ export function createTexture(ctx: Context, kind: TextureKind, _format: TextureF
gl.bindTexture(target, texture) gl.bindTexture(target, texture)
gl.texParameteri(target, gl.TEXTURE_MAG_FILTER, filter) gl.texParameteri(target, gl.TEXTURE_MAG_FILTER, filter)
gl.texParameteri(target, gl.TEXTURE_MIN_FILTER, filter) gl.texParameteri(target, gl.TEXTURE_MIN_FILTER, filter)
// clamp-to-edge needed for non-power-of-two textures // clamp-to-edge needed for non-power-of-two textures in webgl
gl.texParameteri(target, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); gl.texParameteri(target, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
gl.texParameteri(target, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); gl.texParameteri(target, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
gl.bindTexture(target, null) gl.bindTexture(target, null)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment